Чи можу я ігнорувати файли за шаблоном у deja-dup (резервне копіювання)?


13

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

Я знаю, що я можу ігнорувати певні папки, але чи є спосіб виключити файли та папки за шаблонами?

Я думав, що може бути більше варіантів, які можна використовувати через файл конфігурації, але Déjà Dup не використовує жодного. Тож я подивився на подвійність (CLI, на якій він базується), але сторінка man також не згадує файл конфігурації. Я знаю, що дублювання може ігнорувати файли та папки на основі шаблонів ( --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

Використання ** шаблонів більше не працює, оскільки дежаб-даб уникає [? * Символів у команді дублікату. Дивіться 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. встановити dconf-editor
sudo apt install dconf-editor
  1. запустити dconf-editorяк звичайний користувач. (не використовувати sudo)
dconf-editor
  1. знайти org -> gnome -> deja-dup -> виключити-список
  2. встановити спеціальне значення на (замінити лео вашим іменем користувача)
['$TRASH', '$DOWNLOAD', '/home/leo/.anaconda', '/home/leo/**/node_modules', '/home/leo/**/__pycache__', '/home/leo/**/*.pyc']
  1. Можливо, вам доведеться перезавантажити / повторно ввійти. Я запускаю скріншот, який автоматично оновлює значення. Я не знаю чому, можливо, хтось ще може пояснити.

Скріншоти:

Замініть лео своїм іменем користувача

замініть "leo" своїм ім'ям користувача

Це повинно виглядати так


Я спробував це, і все-таки ~/**/node_modulesпоказує у "Папці, щоб ігнорувати", але все-таки вони є резервними копіями ..., так що, схоже, не працює ...
musicformellons

2

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

Однак мені вдалося змінити налаштування за допомогою dconf-editor. Ви можете змінити список на шляху/org/gnome/deja-dup/exclude-list


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-set gsettings set org.gnome.DejaDup виключити-list ['path1', 'path2']
Jacob Nordfalk

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файл, викликаючи дублікат прямо з командного рядка? Чи трапляється вам відомо про будь-який спосіб змусити такий список шаблонів працювати з графічним інтерфейсом Déjà Dup за замовчуванням Ubuntu? (BTW: Мені здається досить заплутаним називання файлу, що містить шаблони включення та виключенняinclude_list.txt ...)
Салім Б
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.