Posso ignorare i file in base al modello in deja-dup (backup)?


13

I miei backup Déjà Dup sono diventati abbastanza grandi e ho notato che contengono un numero enorme di file non necessari (ad esempio *.pycfile, **__pycache__cartelle e altre cose temporanee relative alla build).

So che posso ignorare cartelle specifiche, ma c'è un modo per escludere file eo cartelle per motivi?

Ho pensato che potrebbero esserci più opzioni utilizzabili attraverso un file di configurazione, ma Déjà Dup non ne usa una. Quindi ho esaminato la duplicità (la CLI su cui si basa), ma la pagina man non menziona nemmeno un file di configurazione. So che la duplicità può ignorare file e cartelle basati su modelli ( --exclude, --exclude-filelist), ma non ho idea di come combinare questo con Déjà Dup .

Devo abbandonare Déjà Dup e usare la duplicità manualmente? Oppure c'è un modo per impostare le opzioni necessarie, in modo che vengano utilizzate automaticamente quando Déjà Dup utilizza la duplicità ?

Risposte:



4

È possibile modificare l'elenco di esclusione come:

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

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

Ho provato ad aggiungere modelli come '** /. Git' e '** / build' in quella lista, in questo modo:

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

Ma a me sembra che gli ** non siano passati alla duplicità. Quindi invece ho finito per fare le battute come

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

e li ha aggiunti all'elenco di esclusione manualmente


3

L'uso dei pattern ** non funziona (più) perché deja-dub sfugge ai caratteri [? * Nel comando di duplicità. Vedi 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. installare dconf-editor
sudo apt install dconf-editor
  1. eseguire dconf-editorcome utente normale. (non usare sudo)
dconf-editor
  1. individuare org -> gnome -> deja-dup -> exclude-list
  2. imposta il valore personalizzato su (sostituisci leo con il tuo nome utente)
['$TRASH', '$DOWNLOAD', '/home/leo/.anaconda', '/home/leo/**/node_modules', '/home/leo/**/__pycache__', '/home/leo/**/*.pyc']
  1. Potrebbe essere necessario riavviare / accedere nuovamente. Corro Screenshot che aggiorna automaticamente il valore. Non so perché, forse qualcun altro può spiegare.

Screenshots:

Sostituisci leo con il tuo nome utente

sostituisci "leo" con il tuo nome utente

Dovrebbe apparire così


Ho provato questo e lo ~/**/node_modulesfa vedere nella 'Cartella da ignorare', ma sono comunque sottoposti a backup ..., quindi non sembra funzionare ...
musicformellons

2

Ho provato il metodo di Jacob Nordfalk , ma non ha funzionato per me (forse la sintassi è cambiata).

Tuttavia, sono stato in grado di modificare l'impostazione utilizzando dconf-editor. È possibile modificare l'elenco nel percorso/org/gnome/deja-dup/exclude-list


1

Ottieni l'elenco di esclusione corrente con:

$ gsettings get org.gnome.DejaDup exclude-list

che produce qualcosa di simile:

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

Quindi imposta il tuo nuovo elenco racchiudendo il vecchio output tra virgolette e aggiungendo le modifiche:

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

ed esegui nuovamente il get per verificare le modifiche.


0

Purtroppo né DuplicityDéjà Dup usano un file di configurazione :( Ma potrebbe esserci una possibile soluzione alternativa, l'utente ha @mterrymenzionato quanto segue nella segnalazione di bug collegata sopra:

se si modifica gconf la lista di esclusione e si aggiungono motivi come " **/parts", il motivo viene passato alla duplicità e tutto funziona come previsto ... "

Ora, dove sono memorizzate quelle impostazioni di gconf in questi giorni?


1
org -> gnome -> deja-dupaka org.gnome.DejaDup. Non funziona per me, però.
esmail

puoi modificare l'elenco di esclusione come: gsettings get org.gnome.DejaDup escludi-elenco gsettings set org.gnome.DejaDup escludi-elenco ['percorso1', 'percorso2']
Jacob Nordfalk

0

Ottengo l'esclusione con successo utilizzando il mio include_list.txtfile contenente:

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

Il /**/è importante abbinare con qualsiasi profondità di directory.

Regola 1: l'ordine è importante. Prima sii specifico prima e in seguito più tardi

Regola 2: ciò che è già stato abbinato in una riga (include o exclude) non può essere modificato da corrispondenze successive nelle righe successive. La documentazione menziona questo; ma in un inglese terribilmente confuso. Spero che il mio sia migliore;) Le linee sopra raggiungono:

  • Linea 1: escludere qualsiasi __pycache__a qualsiasi profondità.
  • Riga 2: escludere qualsiasi file con estensione .pyc.
  • Riga 6: includi la mia Documentscartella specifica e unica .
  • Linea 7: esclude tutta la mia altra casa cartella, ad esempio Pictures, Videos, Downloads, ecc Si noti che questo non può fermata Documentsda essere inclusi come è stato già abbinato in Line 6! L'ordine è importante!

1
Immagino che usi il tuo include_list.txtfile chiamando la duplicità direttamente dalla riga di comando? Ti capita di conoscere un modo per far funzionare un tale elenco di schemi con la GUI Déjà Dup predefinita di Ubuntu? (A proposito: mi sembra piuttosto confuso nominare un file contenente schemi di inclusione ed esclusioneinclude_list.txt ...)
Salim B
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.