Czy mogę zignorować pliki według wzoru w deja-dup (Backup)?

13

Moje kopie zapasowe Déjà Dup stały się bardzo duże i zauważyłem, że zawierają ogromną liczbę niepotrzebnych plików (np. *.pycPliki, **__pycache__foldery i inne tymczasowe pliki związane z kompilacją).

Wiem, że mogę zignorować określone foldery, ale czy istnieje sposób na wykluczenie plików lub folderów według wzorców?

Pomyślałem, że może istnieć więcej opcji dostępnych w pliku konfiguracyjnym, ale Déjà Dup go nie używa. Więc spojrzałem na duplikat (CLI, na którym jest oparty), ale strona man również nie wspomina o pliku konfiguracyjnym. Wiem, że podwójność może ignorować pliki i foldery oparte na wzorcach ( --exclude, --exclude-filelist), ale nie mam pojęcia, jak połączyć to z Déjà Dup .

Czy muszę porzucić Déjà Dup i ręcznie użyć duplikatu ? A może istnieje sposób na ustawienie potrzebnych opcji, aby były one używane automatycznie, gdy Déjà Dup używa duplikacji ?

Brutus
źródło

Odpowiedzi:

4

Możesz edytować listę wykluczeń, taką jak:

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

Źródło: https://answers.launchpad.net/deja-dup/+question/280954

Próbowałem dodać wzorce takie jak „** /. Git” i „** / build” do tej listy, w następujący sposób:

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

Ale wydaje mi się, że ** nie zostały zduplikowane. Więc zamiast tego skończyłem robić seachy jak

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

i ręcznie dodał je do listy wykluczeń

Jacob Nordfalk
źródło
3

Używanie wzorców ** już nie działa, ponieważ deja-dub unika znaków [? * W poleceniu duplikowania. Zobacz 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=**");
  }
użytkownik1008070
źródło
3
  1. zainstalować dconf-editor
sudo apt install dconf-editor
  1. uruchom dconf-editorjako zwykły użytkownik. (nie używaj sudo)
dconf-editor
  1. zlokalizuj org -> gnome -> deja-dup -> lista wykluczeń
  2. ustaw wartość niestandardową na (zastąp leo swoją nazwą użytkownika)
['$TRASH', '$DOWNLOAD', '/home/leo/.anaconda', '/home/leo/**/node_modules', '/home/leo/**/__pycache__', '/home/leo/**/*.pyc']
  1. Może być konieczne ponowne uruchomienie / ponowne zalogowanie. Uruchamiam zrzut ekranu, który automatycznie aktualizuje wartość. Nie wiem dlaczego, może ktoś inny może to wyjaśnić.

Zrzuty ekranu:

Zamień leo na swoją nazwę użytkownika

zamień „leo” na swoją nazwę użytkownika

Powinno to wyglądać w ten sposób

LeoZ
źródło
Próbowałem tego i ~/**/node_modulespojawia się w folderze do zignorowania, ale nadal są one archiwizowane ... więc wydaje się, że nie działa ...
musicformellons
2

Wypróbowałem metodę Jacoba Nordfalka , ale nie działała ona dla mnie (być może zmieniono składnię).

Udało mi się jednak zmienić ustawienie za pomocą dconf-editor. Możesz zmodyfikować listę na ścieżce/org/gnome/deja-dup/exclude-list

jost21
źródło
1

Pobierz aktualną listę wykluczeń dzięki:

$ gsettings get org.gnome.DejaDup exclude-list

co daje coś takiego:

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

Następnie ustaw nową listę, zawijając stary wynik w cudzysłów i dodając zmiany:

$ 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']"

i uruchom get ponownie, aby zweryfikować zmiany.

Paul Smith
źródło
0

Niestety ani Duplicity, ani Déjà Dup nie używają pliku konfiguracyjnego :( Ale może istnieć możliwe obejście problemu, użytkownik @mterrywspomniał o tym w powyższym raporcie o błędzie :

jeśli edytujesz listę wykluczeń i dodajesz wzorce, takie jak „ **/parts”, wzór jest przekazywany do duplikatu i wszystko działa zgodnie z oczekiwaniami ... ”

Gdzie teraz przechowywane są te ustawienia gconf ?

Brutus
źródło
1
org -> gnome -> deja-dupaka org.gnome.DejaDup. Ale dla mnie nie działa.
esmail
możesz edytować listę wykluczeń, taką jak: gsettings get org.gnome.DejaDup exclude-list gsettings set org.gnome.DejaDup exclude-list ['path1', 'path2']
Jacob Nordfalk
0

Pomyślnie osiągam wykluczenie, używając mojego include_list.txtpliku zawierającego:

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

/**/Ważne jest, aby dopasować się do każdej głębokości pośrednictwem katalogów.

Zasada 1: Kolejność jest ważna. Najpierw bądź konkretny, a później ogólny.

Reguła 2: To, co już zostało dopasowane w linii (dołącz lub wyklucz), nie może być zmieniane przez kolejne dopasowania w późniejszych liniach. Dokumentacja wspomina o tym; ale w strasznie mylącym angielskim. Mam nadzieję, że moja jest lepsza;) Powyższe linie osiągają:

  • Wiersz 1: wyklucz dowolne __pycache__na dowolnej głębokości.
  • Wiersz 2: wyklucz dowolny plik z rozszerzeniem .pyc.
  • Wiersz 6: dołącz mój konkretny i jedyny Documentsfolder.
  • Linia 7: wykluczyć wszystkich moich innych folderów, takich jak dom Pictures, Videos, Downloads, itd. Należy pamiętać, że może to nie przystanek Documentsprzed włączone jak to było już dopasowane in Line 6! Kolejność ma znaczenie!
Justin Solms
źródło
1
Wydaje mi się, że używasz include_list.txtpliku, wywołując duplikat bezpośrednio z wiersza poleceń? Czy zdarzyło Ci się wiedzieć, jak sprawić, by taka lista wzorców działała z domyślnym interfejsem GUI Ubuntu Dupé? (BTW: Wydaje mi się dość mylące nazywanie pliku zawierającego wzorce włączenia i wyłączeniainclude_list.txt ...)
Salim B