Kann ich Dateien nach Muster in deja-dup (Backup) ignorieren?

13

Meine Déjà Dup- Backups sind ziemlich groß geworden und ich habe festgestellt, dass sie eine große Anzahl unnötiger Dateien enthalten (z. B. *.pycDateien, **__pycache__Ordner und andere temporäre Inhalte im Zusammenhang mit Builds).

Ich weiß, dass ich bestimmte Ordner ignorieren kann, aber gibt es eine Möglichkeit, Dateien und / oder Ordner nach Mustern auszuschließen?

Ich dachte, es könnten mehr Optionen über eine Konfigurationsdatei verwendet werden, aber Déjà Dup verwendet keine. Also habe ich mir die Duplizität angesehen (die CLI, auf der sie basiert), aber die Manpage erwähnt auch keine Konfigurationsdatei. Ich weiß, dass Duplizität Dateien und Ordner ignorieren kann, die auf Mustern ( --exclude, --exclude-filelist) basieren , aber ich habe keine Ahnung, wie ich dies mit Déjà Dup kombinieren soll .

Muss ich Déjà Dup loswerden und die Duplizität manuell verwenden? Oder gibt es eine Möglichkeit, die erforderlichen Optionen so einzustellen, dass sie automatisch verwendet werden, wenn Déjà Dup Duplizität verwendet ?

Brutus
quelle

Antworten:

4

Sie können die Ausschlussliste wie folgt bearbeiten:

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

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

Ich habe versucht, Muster wie '** /. Git' und '** / build' in diese Liste einzufügen, wie folgt:

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

Aber für mich scheint es, als ob die ** nicht an die Duplizität weitergegeben wurden. Also habe ich stattdessen wie folgt gesucht

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

und fügte sie manuell zur Ausschlussliste hinzu

Jacob Nordfalk
quelle
3

Die Verwendung von ** Mustern funktioniert (nicht mehr), da Deja-Dub [? * Zeichen im Duplizitätsbefehl entgeht. Siehe 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=**");
  }
user1008070
quelle
3
  1. Installieren dconf-editor
sudo apt install dconf-editor
  1. dconf-editorals normaler Benutzer ausführen . (nicht benutzen sudo)
dconf-editor
  1. Suchen Sie org -> gnome -> deja-dup -> exclude-list
  2. Setzen Sie den benutzerdefinierten Wert auf (ersetzen Sie Leo durch Ihren Benutzernamen).
['$TRASH', '$DOWNLOAD', '/home/leo/.anaconda', '/home/leo/**/node_modules', '/home/leo/**/__pycache__', '/home/leo/**/*.pyc']
  1. Möglicherweise müssen Sie neu starten / neu anmelden. Ich führe einen Screenshot aus, der den Wert automatisch aktualisiert. Ich weiß nicht warum, vielleicht kann es jemand anderes erklären.

Screenshots:

Ersetzen Sie Leo durch Ihren Benutzernamen

Ersetzen Sie 'Leo' durch Ihren Benutzernamen

Es sollte so aussehen

LeoZ
quelle
Ich habe es versucht und das ~/**/node_moduleswird im 'Ordner zum Ignorieren' angezeigt, aber sie sind immer noch gesichert ..., scheint also nicht zu funktionieren ...
musicformellons
2

Ich habe die Methode von Jacob Nordfalk ausprobiert , aber sie hat bei mir nicht funktioniert (möglicherweise hat sich die Syntax geändert).

Ich konnte die Einstellung jedoch mit ändern dconf-editor. Sie können die Liste unter Pfad ändern/org/gnome/deja-dup/exclude-list

jost21
quelle
1

Holen Sie sich die aktuelle Ausschlussliste mit:

$ gsettings get org.gnome.DejaDup exclude-list

was so etwas hervorbringt wie:

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

Stellen Sie dann Ihre neue Liste ein, indem Sie die alte Ausgabe in Anführungszeichen setzen und Ihre Änderungen hinzufügen:

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

Führen Sie get erneut aus, um Ihre Änderungen zu überprüfen.

Paul Smith
quelle
0

Leider verwenden weder Duplicity noch Déjà Dup eine Konfigurationsdatei :( Möglicherweise gibt es jedoch eine mögliche Problemumgehung. Der Benutzer hat @mterryim oben verlinkten Fehlerbericht Folgendes erwähnt :

Wenn Sie die Ausschlussliste gconf-bearbeiten und Muster wie " **/parts" hinzufügen , wird das Muster an die Duplizität übergeben und alles funktioniert wie erwartet ... "

Wo werden diese gconf-Einstellungen heutzutage gespeichert?

Brutus
quelle
1
org -> gnome -> deja-dupaka org.gnome.DejaDup. Ich arbeite aber nicht für mich.
Esmail
Sie können die Ausschlussliste wie folgt bearbeiten: gsettings get org.gnome.DejaDup Ausschlussliste gsettings set org.gnome.DejaDup Ausschlussliste ['path1', 'path2']
Jacob Nordfalk
0

Ich erreiche erfolgreich einen Ausschluss mit meiner include_list.txtDatei, die Folgendes enthält:

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

Das /**/ist wichtig, um mit jeder Verzeichnis-Tiefe übereinzustimmen.

Regel 1: Die Reihenfolge ist wichtig. Seien Sie zuerst spezifisch und später allgemein.

Regel 2: Was bereits in einer Zeile abgeglichen wurde (Einschließen oder Ausschließen), kann durch nachfolgende Übereinstimmungen in späteren Zeilen nicht geändert werden. Die Dokumentation erwähnt dies; aber in schrecklich verwirrendem Englisch. Hoffe meins ist besser;) Die obigen Zeilen erreichen:

  • Zeile 1: In __pycache__jeder Tiefe ausschließen.
  • Zeile 2: Schließen Sie alle Dateien mit der Erweiterung aus .pyc.
  • Zeile 6: Fügen Sie meinen spezifischen und einzigen DocumentsOrdner hinzu.
  • Linie 7: ausschließen alle meine anderen Home - Ordner wie Pictures, Videos, Downloadsusw. Beachten Sie, dass dies kann nicht aufhören , Documentsvon eingeschlossen werden , wie es bereits in Zeile 6 angepasst wurde! Ordnung ist wichtig!
Justin Solms
quelle
1
Ich denke, Sie verwenden Ihre include_list.txtDatei, indem Sie die Duplizität direkt über die Befehlszeile aufrufen. Kennen Sie eine Möglichkeit, eine solche Musterliste mit Ubuntus Standard-Déjà-Dup-GUI zum Laufen zu bringen? (BTW: Es scheint verwirrend eher mir eine Datei mit Einbeziehung der Benennung und Ausschlussmuster include_list.txt...)
Salim B