Bisakah saya mengabaikan file berdasarkan pola dalam deja-dup (Cadangan)?


13

Cadangan Déjà Dup saya menjadi sangat besar dan saya perhatikan mereka berisi sejumlah besar file yang tidak perlu (misalnya *.pycfile, **__pycache__folder , dan hal-hal sementara terkait lainnya yang dibuat).

Saya tahu bahwa saya dapat mengabaikan folder tertentu, tetapi apakah ada cara untuk mengecualikan file dan atau folder berdasarkan pola?

Saya pikir mungkin ada lebih banyak opsi yang dapat digunakan melalui file konfigurasi, tetapi Déjà Dup tidak menggunakannya. Jadi saya melihat duplikat (CLI didasarkan pada), tetapi halaman manual tidak menyebutkan file konfigurasi juga. Saya tahu bahwa duplikat dapat mengabaikan file dan folder berdasarkan pola ( --exclude, --exclude-filelist), tetapi saya tidak tahu cara menggabungkan ini dengan Dupanj Dup .

Apakah saya harus membuang Déjà Dup dan menggunakan duplikasi secara manual? Atau adakah cara untuk mengatur opsi yang dibutuhkan, sehingga mereka digunakan secara otomatis, ketika duplikat digunakan oleh Déjà Dup ?

Jawaban:



4

Anda dapat mengedit daftar pengecualian seperti:

gsettings get org.gnome.DejaDup exclude-list
# remove comment to execute
# gsettings set org.gnome.DejaDup exclude-list ['path1', 'path2']

Sumber: https://answers.launchpad.net/deja-dup/+question/280954

Saya mencoba menambahkan pola seperti '** /. Git' dan '** / build' ke dalam daftar itu, seperti ini:

gsettings get org.gnome.DejaDup exclude-list > exclude-list
gedit exclude-list
gsettings set org.gnome.DejaDup exclude-list "`cat exclude-list`"

Tetapi bagi saya sepertinya ** itu tidak diteruskan ke bermuka dua. Jadi alih-alih akhirnya saya melakukan seach seperti

locate "/home/*/.svn"
locate "/home/*/build"

dan menambahkannya ke daftar pengecualian secara manual


3

Menggunakan pola ** tidak lagi berfungsi karena deja-dub lolos dari karakter [? * Dalam perintah duplikasi. Lihat https://git.launchpad.net/deja-dup/tree/libdeja/tools/duplicity/DuplicityJob.vala#n303 :

  string escape_duplicity_path(string path)
  {
    // Duplicity paths are actually shell globs.  So we want to escape anything
    // that might fool duplicity into thinking this isn't the real path.
    // Specifically, anything in '[?*'.  Duplicity does not have escape
    // characters, so we surround each with brackets.
    string rv;
    rv = path.replace("[", "[[]");
    rv = rv.replace("?", "[?]");
    rv = rv.replace("*", "[*]");
    return rv;
  }

  void process_include_excludes()
  {
    expand_links_in_list(ref includes, true);
    expand_links_in_list(ref excludes, false);

    // We need to make sure that the most specific includes/excludes will
    // be first in the list (duplicity uses only first matched dir).  Includes
    // will be preferred if the same dir is present in both lists.
    includes.sort((CompareFunc)cmp_prefix);
    excludes.sort((CompareFunc)cmp_prefix);

    foreach (File i in includes) {
      var excludes2 = excludes.copy();
      foreach (File e in excludes2) {
        if (e.has_prefix(i)) {
          saved_argv.append("--exclude=" + escape_duplicity_path(e.get_path()));
          excludes.remove(e);
        }
      }
      saved_argv.append("--include=" + escape_duplicity_path(i.get_path()));
      //if (!i.has_prefix(slash_home_me))
      //  needs_root = true;
    }
    foreach (File e in excludes) {
      saved_argv.append("--exclude=" + escape_duplicity_path(e.get_path()));
    }

    // TODO: Figure out a more reasonable way to order regexps and files.
    // For now, just stick regexps in the end, as they are more general.
    foreach (string r in exclude_regexps) {
      saved_argv.append("--exclude=" + r);
    }

    saved_argv.append("--exclude=**");
  }

3
  1. Install dconf-editor
sudo apt install dconf-editor
  1. dijalankan dconf-editorsebagai pengguna normal. (jangan gunakan sudo)
dconf-editor
  1. cari org -> gnome -> deja-dup -> exclude-list
  2. setel nilai Kustom ke (ganti leo dengan nama pengguna Anda)
['$TRASH', '$DOWNLOAD', '/home/leo/.anaconda', '/home/leo/**/node_modules', '/home/leo/**/__pycache__', '/home/leo/**/*.pyc']
  1. Anda mungkin perlu me-reboot / mendaftar ulang. Saya menjalankan Screenshot yang secara otomatis memperbarui nilai. Saya tidak tahu mengapa, mungkin orang lain bisa menjelaskan.

Tangkapan layar:

Ganti leo dengan nama pengguna Anda

ganti 'leo' dengan nama pengguna Anda

Seharusnya terlihat seperti ini


Saya mencoba ini dan ~/**/node_modulestidak menunjukkan di 'Folder untuk mengabaikan', tetapi mereka tetap didukung ..., jadi sepertinya tidak berfungsi ...
musicformellons

2

Saya mencoba metode Jacob Nordfalk , tetapi tidak berhasil bagi saya (mungkin sintaks berubah).

Namun, saya dapat mengubah pengaturan menggunakan dconf-editor. Anda dapat mengubah daftar di jalur/org/gnome/deja-dup/exclude-list


1

Dapatkan daftar pengecualian saat ini dengan:

$ gsettings get org.gnome.DejaDup exclude-list

yang menghasilkan sesuatu seperti:

['', '/home/me/delete_me', '/home/me/eclipse', '/home/me/Music', '/home/me/R', '/home/me/Videos']

Kemudian atur daftar baru Anda dengan membungkus output lama dalam tanda kutip dan menambahkan perubahan Anda:

$ gsettings set org.gnome.DejaDup exclude-list "[ '', '/home/me/delete_me', '/home/me/eclipse', '/home/me/Music', '/home/me/R', '/home/me/Videos', '/home/me/**/.git']"

dan jalankan get lagi untuk memverifikasi perubahan Anda.


0

Sayangnya Duplicity maupun Déjà Dup tidak menggunakan file konfigurasi :( Tapi mungkin ada solusi yang mungkin, pengguna @mterrymenyebutkan hal berikut dalam laporan bug yang ditautkan di atas:

jika Anda gconf-mengedit daftar pengecualian dan menambahkan pola seperti " **/parts", polanya diteruskan ke duplikat dan semuanya berfungsi seperti yang diharapkan ... "

Sekarang, di mana pengaturan gconf disimpan hari ini?


1
org -> gnome -> deja-dupalias org.gnome.DejaDup. Tapi tidak bekerja untukku.
esmail

Anda dapat mengedit daftar pengecualian seperti: gsettings get org.gnome.DejaDup mengecualikan-daftar gsettings set org.gnome.DejaDup mengecualikan daftar ['path1', 'path2']
Jacob Nordfalk

0

Saya berhasil mencapai pengecualian menggunakan include_list.txtfile saya yang berisi:

- /home/justin/**/.insync-trash
- /home/justin/**/__pycache__
- /home/justin/**/*.pyc
- /home/justin/**/node_modules
- /home/justin/**/Google Photos
+ /home/justin/Documents
- /home/justin/*

The /**/penting untuk mencocokkan melalui setiap kedalaman direktori.

Aturan 1: Urutannya penting. Pertama spesifik dulu dan umum nanti.

Aturan 2: Apa yang sudah dicocokkan dalam satu baris (termasuk atau mengecualikan) tidak dapat diubah oleh pertandingan berikutnya di baris berikutnya. Dokumentasi menyebutkan ini; tetapi dalam bahasa Inggris yang sangat membingungkan. Harapan saya lebih baik;) Garis di atas mencapai:

  • Baris 1: kecualikan apapun __pycache__pada kedalaman apa pun.
  • Baris 2: mengecualikan file apa pun dengan ekstensi .pyc.
  • Baris 6: sertakan Documentsfolder spesifik dan satu-satunya saya .
  • Line 7: mengecualikan semua rumah saya yang lain folder seperti Pictures, Videos, Downloads, dll Catatan bahwa ini tidak bisa berhenti Documentsdari yang disertakan seperti itu sudah cocok di baris 6! Urutan penting!

1
Saya kira Anda menggunakan include_list.txtfile Anda dengan menelepon duplikat langsung dari baris perintah? Apakah Anda mengetahui cara apa pun untuk membuat daftar pola seperti itu berfungsi dengan Déjà Dup GUI default Ubuntu? (BTW: Tampaknya agak membingungkan bagi saya memberi nama file yang berisi pola inklusi dan pengecualianinclude_list.txt ...)
Salim B
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.