Puis-je ignorer les fichiers par modèle dans deja-dup (sauvegarde)?

13

Mes sauvegardes Déjà Dup sont devenues volumineuses et j'ai remarqué qu'elles contiennent un grand nombre de fichiers inutiles (par exemple, des *.pycfichiers, des **__pycache__dossiers et d'autres éléments temporaires liés à la construction).

Je sais que je peux ignorer des dossiers spécifiques, mais existe-t-il un moyen d'exclure des fichiers et / ou des dossiers par modèles?

Je pensais qu'il pourrait y avoir plus d'options utilisables via un fichier de configuration, mais Déjà Dup n'en utilise pas. J'ai donc examiné la duplicité (la CLI sur laquelle elle est basée), mais la page de manuel ne mentionne pas non plus de fichier de configuration. Je sais que la duplicité peut ignorer les fichiers et dossiers basés sur des modèles ( --exclude, --exclude-filelist), mais je n'ai aucune idée de comment combiner cela avec Déjà Dup .

Dois-je abandonner Déjà Dup et utiliser la duplicité manuellement? Ou existe-t-il un moyen de définir les options nécessaires, afin qu'elles soient utilisées automatiquement, lorsque la duplicité est utilisée par Déjà Dup ?

Brutus
la source

Réponses:

4

Vous pouvez modifier la liste d'exclusion comme:

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

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

J'ai essayé d'ajouter des modèles comme '** /. Git' et '** / build' dans cette liste, comme ceci:

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

Mais il me semble que les ** ne sont pas passés à la duplicité. Au lieu de cela, j'ai fini par faire des seaches comme

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

et les a ajoutés à la liste d'exclusion manuellement

Jacob Nordfalk
la source
3

L'utilisation de ** modèles ne fonctionne pas (plus) car deja-dub échappe les caractères [? * Dans la commande duplicity. Voir 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
la source
3
  1. installer dconf-editor
sudo apt install dconf-editor
  1. exécuter en dconf-editortant qu'utilisateur normal. (ne pas utiliser sudo)
dconf-editor
  1. localiser org -> gnome -> deja-dup -> exclude-list
  2. définissez la valeur personnalisée sur (remplacez leo par votre nom d'utilisateur)
['$TRASH', '$DOWNLOAD', '/home/leo/.anaconda', '/home/leo/**/node_modules', '/home/leo/**/__pycache__', '/home/leo/**/*.pyc']
  1. Vous devrez peut-être redémarrer / reconnecter. Je lance une capture d'écran qui met automatiquement à jour la valeur. Je ne sais pas pourquoi, peut-être que quelqu'un d'autre peut expliquer.

Captures d'écran:

Remplacez Leo par votre nom d'utilisateur

remplacez 'leo' par votre nom d'utilisateur

Cela devrait ressembler à ça

LeoZ
la source
J'ai essayé cela et ~/**/node_modulescela apparaît dans le 'Dossier à ignorer', mais ils sont toujours sauvegardés ..., donc cela ne semble pas fonctionner ...
musicformellons
2

J'ai essayé la méthode de Jacob Nordfalk , mais cela n'a pas fonctionné pour moi (peut-être que la syntaxe a changé).

Cependant, j'ai pu modifier le paramètre à l'aide de dconf-editor. Vous pouvez modifier la liste au chemin/org/gnome/deja-dup/exclude-list

jost21
la source
1

Obtenez la liste d'exclusion actuelle avec:

$ gsettings get org.gnome.DejaDup exclude-list

qui produit quelque chose comme:

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

Ensuite, définissez votre nouvelle liste en enveloppant l'ancienne sortie entre guillemets et en ajoutant vos modifications:

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

et exécutez à nouveau get pour vérifier vos modifications.

Paul Smith
la source
0

Malheureusement, ni Duplicity ni Déjà Dup n'utilisent un fichier de configuration :( Mais il pourrait y avoir une solution de contournement possible, l'utilisateur a @mterrymentionné ce qui suit dans le rapport de bogue lié ci-dessus:

si vous gconf-éditez la liste d'exclusion et ajoutez des modèles comme " **/parts", le modèle est passé à la duplicité et tout fonctionne comme prévu ... "

Maintenant, où sont ces paramètres GConf stockés ces jours -ci ?

Brutus
la source
1
org -> gnome -> deja-dupaka org.gnome.DejaDup. Mais je ne travaille pas pour moi.
esmail
vous pouvez modifier la liste d'exclusion comme: gsettings get org.gnome.DejaDup exclude-list gsettings set org.gnome.DejaDup exclude-list ['path1', 'path2']
Jacob Nordfalk
0

J'arrive à réussir l'exclusion en utilisant mon include_list.txtfichier contenant:

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

Il /**/est important de faire correspondre n'importe quelle profondeur de répertoire.

Règle 1: L'ordre est important. Soyez d'abord précis et général ensuite.

Règle 2: ce qui a déjà été mis en correspondance dans une ligne (inclure ou exclure) ne peut pas être modifié par les correspondances suivantes dans les lignes suivantes. La documentation le mentionne; mais dans un anglais terriblement déroutant. J'espère que le mien est meilleur;) Les lignes ci-dessus atteignent:

  • Ligne 1: excluez tout __pycache__à n'importe quelle profondeur.
  • Ligne 2: excluez tout fichier avec une extension .pyc.
  • Ligne 6: inclure mon Documentsdossier spécifique et unique .
  • Ligne 7: exclure tout mon autre dossier maison, comme Pictures, Videos, Downloads, etc. Notez que cela ne peut pas arrêter Documentsd'être inclus comme il a déjà été adapté à la ligne 6! L'ordre est important!
Justin Solms
la source
1
Je suppose que vous utilisez votre include_list.txtfichier en appelant la duplicité directement depuis la ligne de commande? Connaissez-vous un moyen de faire fonctionner une telle liste de modèles avec l'interface utilisateur graphique par défaut d'Ubuntu? (BTW: Cela me semble assez déroutant de nommer un fichier contenant des modèles d' inclusion et d'exclusioninclude_list.txt ...)
Salim B