¿Puedo ignorar archivos por patrón en deja-dup (Copia de seguridad)?

13

Mis copias de seguridad de Déjà Dup se han vuelto silenciosas y noté que contienen una gran cantidad de archivos innecesarios (por ejemplo *.pyc, archivos, **__pycache__carpetas y otras cosas temporales relacionadas con la compilación).

Sé que puedo ignorar carpetas específicas, pero ¿hay alguna manera de excluir archivos o carpetas por patrones?

Pensé que podría haber más opciones utilizables a través de un archivo de configuración, pero Déjà Dup no usa una. Así que miré la duplicidad (la CLI en la que se basa), pero la página del manual tampoco menciona un archivo de configuración. Sé que la duplicidad puede ignorar archivos y carpetas basados ​​en patrones ( --exclude, --exclude-filelist), pero no tengo idea de cómo combinar esto con Déjà Dup .

¿Tengo que abandonar Déjà Dup y usar la duplicidad manualmente? ¿O hay una manera de establecer las opciones necesarias, para que se usen automáticamente, cuando Déjà Dup usa duplicidad ?

Brutus
fuente

Respuestas:

4

Puede editar la lista de exclusión como:

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

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

Traté de agregar patrones como '** /. Git' y '** / build' en esa lista, así:

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

Pero para mí parece que los ** no se pasaron a la duplicidad. Así que en cambio terminé haciendo marchas como

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

y los agregó a la lista de exclusión manualmente

Jacob Nordfalk
fuente
3

El uso de patrones ** ya no funciona porque deja-dub escapa [? * Caracteres en el comando duplicidad. Ver 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=**");
  }
usuario1008070
fuente
3
  1. Instalar en pc dconf-editor
sudo apt install dconf-editor
  1. Ejecutar dconf-editorcomo usuario normal. (no usar sudo)
dconf-editor
  1. localizar org -> gnomo -> deja-dup -> excluir-lista
  2. establezca el valor personalizado en (reemplace leo con su nombre de usuario)
['$TRASH', '$DOWNLOAD', '/home/leo/.anaconda', '/home/leo/**/node_modules', '/home/leo/**/__pycache__', '/home/leo/**/*.pyc']
  1. Es posible que deba reiniciar / volver a iniciar sesión. Ejecuto Screenshot que actualiza automáticamente el valor. No sé por qué, tal vez alguien más pueda explicarlo.

Capturas de pantalla

Reemplace leo con su nombre de usuario

reemplace 'leo' con su nombre de usuario

Debería verse así

LeoZ
fuente
Intenté esto y ~/**/node_modulesaparece en la 'Carpeta para ignorar', pero todavía están respaldados ..., así que no parece funcionar ...
musicformellons
2

Probé Jacob Nordfalk método 's, pero no funcionó para mí (tal vez la sintaxis cambiado).

Sin embargo, pude cambiar la configuración usando dconf-editor. Puedes modificar la lista en la ruta/org/gnome/deja-dup/exclude-list

jost21
fuente
1

Obtenga la lista de exclusión actual con:

$ gsettings get org.gnome.DejaDup exclude-list

que produce algo como:

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

Luego configure su nueva lista envolviendo la salida anterior entre comillas y agregando sus cambios:

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

y ejecute get nuevamente para verificar sus cambios.

Paul Smith
fuente
0

Lamentablemente, ni Duplicity ni Déjà Dup usan un archivo de configuración :( Pero puede haber una posible solución, el usuario @mterrymencionó lo siguiente en el informe de error vinculado anteriormente:

si edita la lista de exclusión y agrega patrones como " **/parts", el patrón se pasa a duplicidad y todo funciona como se espera ... "

Ahora, ¿dónde están almacenados esos ajustes de gconf en estos días?

Brutus
fuente
1
org -> gnome -> deja-dupaka org.gnome.DejaDup. Sin embargo, no funciona para mí.
esmail
puede editar la lista de exclusión como: gsettings get org.gnome.DejaDup exclude-list gsettings set org.gnome.DejaDup exclude-list ['ruta1', 'ruta2']
Jacob Nordfalk
0

Logro la exclusión con éxito usando mi include_list.txtarchivo que contiene:

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

El /**/es importante hacer coincidir a través de cualquier profundidad directorio.

Regla 1: El orden es importante. Primero sea específico primero y general después.

Regla 2: Lo que ya se ha hecho coincidir en una línea (incluir o excluir) no se puede cambiar mediante coincidencias posteriores en líneas posteriores. La documentación menciona esto; pero en un inglés terriblemente confuso. Espero que el mío sea mejor;) Las líneas anteriores logran:

  • Línea 1: excluir cualquiera __pycache__a cualquier profundidad.
  • Línea 2: excluir cualquier archivo con extensión .pyc.
  • Línea 6: incluir mi Documentscarpeta específica y única .
  • Línea 7: excluye toda mi otro hogar de carpeta, como Pictures, Videos, Downloads, etc. Tenga en cuenta que esto no puede parar Documentsde ser incluido como ya se ha igualado en la línea 6! ¡El orden importa!
Justin Solms
fuente
1
¿Supongo que usas tu include_list.txtarchivo llamando a duplicidad directamente desde la línea de comandos? ¿Conoces alguna forma de hacer que tal lista de patrones funcione con la GUI Déjà Dup predeterminada de Ubuntu? (Por cierto: me parece bastante confuso nombrar un archivo que contiene patrones de inclusión y exclusióninclude_list.txt ...)
Salim B