Могу ли я игнорировать файлы по шаблону в deja-dup (Backup)?

13

Мои резервные копии Déjà Dup стали очень большими, и я заметил, что они содержат огромное количество ненужных файлов (например, *.pycфайлов, **__pycache__папок и других временных файлов, связанных со сборкой).

Я знаю, что могу игнорировать определенные папки, но есть ли способ исключить файлы и / или папки по шаблонам?

Я думал, что может быть больше параметров, которые можно использовать через файл конфигурации, но Дежа Дюп не использует их. Поэтому я посмотрел на двуличие (на основе CLI), но на странице руководства также не упоминается файл конфигурации. Я знаю, что двуличность может игнорировать файлы и папки на основе шаблонов ( --exclude, --exclude-filelist), но я понятия не имею, как совместить это с Déjà Dup .

Должен ли я отказаться от Déjà Dup и использовать двуличие вручную? Или есть способ установить нужные параметры, чтобы они использовались автоматически, когда Déjà Dup использует двуличие ?

Брут
источник

Ответы:

4

В настоящее время Deja Dup не может выполнять расширенную фильтрацию подобным образом. Смотрите вышестоящую ошибку https://bugs.launchpad.net/deja-dup/+bug/374274

Майкл Терри
источник
Поскольку Майкл Терри является хранителем дежа-дупа, это «окончательный вариант». Смотрите также эту более свежую проблему в репозитории deja-dup, которая подтверждает, что шаблоны не поддерживаются.
musicformellons
4

Вы можете редактировать список исключений, например:

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

Источник: https://answers.launchpad.net/deja-dup/+question/280954

Я попытался добавить шаблоны, такие как «** /. Git» и «** / build» в этот список, например:

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

Но мне кажется, что ** не были переданы двуличности. Таким образом, вместо этого я закончил делать поиск, как

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

и добавил их в список исключений вручную

Джейкоб Нордфальк
источник
3

Использование шаблонов ** (больше не работает), потому что deja-dub экранирует символы [? * В команде duplicity. См. 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
источник
3
  1. устанавливать dconf-editor
sudo apt install dconf-editor
  1. запустить dconf-editorкак обычный пользователь. (не используйте sudo)
dconf-editor
  1. Найдите org -> gnome -> deja-dup -> exclude-list
  2. установить пользовательское значение (замените leo вашим именем пользователя)
['$TRASH', '$DOWNLOAD', '/home/leo/.anaconda', '/home/leo/**/node_modules', '/home/leo/**/__pycache__', '/home/leo/**/*.pyc']
  1. Возможно, вам придется перезагрузить / повторно войти. Я запускаю Скриншот, который автоматически обновляет значение. Я не знаю почему, может быть, кто-то еще может объяснить.

Скриншоты:

Замените leo вашим именем пользователя

замените 'leo' на ваше имя пользователя

Это должно выглядеть так

Леос
источник
Я попробовал это, и ~/**/node_modulesв «Папке для игнорирования» они все-таки показываются, но они все еще находятся в резервном копировании ..., так что, похоже, не работает ...
musicformellons
2

Я попробовал метод Джейкоба Нордфалька , но он у меня не сработал (возможно, синтаксис изменился).

Тем не менее, я смог изменить настройки с помощью dconf-editor. Вы можете изменить список по пути/org/gnome/deja-dup/exclude-list

jost21
источник
1

Получить текущий список исключений с помощью:

$ gsettings get org.gnome.DejaDup exclude-list

который производит что-то вроде:

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

Затем установите новый список, обернув старый вывод в кавычки и добавив изменения:

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

и запустите get снова, чтобы проверить ваши изменения.

Пол Смит
источник
0

К сожалению, ни Duplicity, ни Déjà Dup не используют файл конфигурации :( Но возможен обходной путь, пользователь @mterryупомянул следующее в сообщении об ошибке, указанном выше:

если вы gconf-редактируете список исключений и добавляете шаблоны, такие как " **/parts", шаблон передается в двойственность, и все работает как положено ... "

Теперь, где хранятся эти настройки gconf в эти дни?

Брут
источник
1
org -> gnome -> deja-dupака org.gnome.DejaDup. Не работает для меня, хотя.
Esmail
Вы можете редактировать список исключений, например: gsettings get org.gnome.DejaDup set-списка исключений gsettings org.gnome.DejaDup список исключений ['path1', 'path2']
Джейкоб Нордфолк
0

Я успешно добился исключения, используя мой include_list.txtфайл, содержащий:

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

/**/Важно , чтобы соответствовать до любой глубины каталогов.

Правило 1: порядок важен. Сначала будьте конкретны, а потом - общими.

Правило 2: То, что уже было найдено в строке (включить или исключить), не может быть изменено последующими совпадениями в последующих строках. В документации упоминается об этом; но в ужасно запутанном английском. Надеюсь, что мой лучше;) Строки выше достичь:

  • Строка 1: исключить любую __pycache__на любой глубине.
  • Строка 2: исключить любой файл с расширением .pyc.
  • Строка 6: включить мою конкретную и единственную Documentsпапку.
  • Строка 7: исключить все другие мои дома папки , такие как Pictures, Videos, Downloadsи т.д. Обратите внимание , что это не может остановить Documentsот включения , как это было уже согласовано в строке 6! Заказ имеет значение!
Джастин Солмс
источник
1
Я полагаю, вы используете свой include_list.txtфайл, вызывая двуличие непосредственно из командной строки? Вы случайно не знаете, как заставить такой список шаблонов работать со стандартным графическим интерфейсом Ubuntu Déjà Dup? (Кстати: мне кажется довольно странным назвать файл, содержащий шаблоны включения и исключенияinclude_list.txt ...)
Salim B