deja-dup (백업)에서 패턴별로 파일을 무시할 수 있습니까?


13

Déjà Dup 백업이 조용해 졌으며*.pyc 파일, **__pycache__폴더 및 기타 빌드 관련 임시 항목과 같은 불필요한 파일이 너무 많다는 것을 알았습니다 .

특정 폴더를 무시할 수 있지만 패턴으로 파일 및 / 또는 폴더를 제외하는 방법이 있습니까?

구성 파일을 통해 더 많은 옵션을 사용할 수 있다고 생각했지만 Déjà Dup 은 사용하지 않습니다. 그래서 나는 이중성 (기반 CLI)을 보았지만 매뉴얼 페이지에는 구성 파일도 언급되어 있지 않습니다. 이중성 이 패턴 ( --exclude, --exclude-filelist)을 기반으로 파일과 폴더를 무시할 수 있다는 것을 알고 있지만, 이것을 Déjà Dup 과 결합하는 방법을 모르겠습니다 .

데자 듀크 를 버리고 수동으로 이중성을 사용해야 합니까? 또는 Déjà Dup에서 이중성 이 사용될 때 자동으로 사용되도록 필요한 옵션을 설정하는 방법이 있습니까?

답변:



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`"

그러나 나에게는 **가 이중성으로 전달되지 않은 것처럼 보입니다. 그래서 대신에 나는 같은 seaches을하고 결국

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

제외 목록에 수동으로 추가했습니다.


3

deja-dub가 이중성 명령에서 [? * 문자를 이스케이프하므로 ** 패턴을 사용하면 더 이상 작동하지 않습니다. 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. 위치를 조직 > - 그놈 -> 데자 - DUP를 -> 제외 목록을
  2. 사용자 정의 값 을로 설정 하십시오 ( leo 를 사용자 이름으로 바꾸 십시오)
['$TRASH', '$DOWNLOAD', '/home/leo/.anaconda', '/home/leo/**/node_modules', '/home/leo/**/__pycache__', '/home/leo/**/*.pyc']
  1. 재부팅 / 재 로그인해야 할 수도 있습니다. 값을 자동으로 업데이트하는 스크린 샷을 실행합니다. 왜 다른 사람이 설명 할 수 있는지 모르겠습니다.

스크린 샷 :

교체 레오 사용자 이름과

'leo'를 사용자 이름으로 바꾸십시오

이런 식으로 보일 것입니다


나는 이것을 시도 ~/**/node_modules하고 '폴더 무시'에 표시되지만 여전히 백업됩니다 ... 그래서 작동하지 않는 것 같습니다 ...
musicformellons

2

Jacob Nordfalk 의 방법을 시도했지만 작동하지 않았습니다 (구문이 변경되었을 수 있음).

그러나를 사용하여 설정을 변경할 수있었습니다 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

슬프게도도 이중성데자 Dup는이 구성 파일을 사용 :( 그러나 가능한 해결 방법이있을 수 있습니다, 사용자는 @mterry상기에 다음과 같은 언급 한 버그 보고서 위의 링크를 :

exclude-list를 gconf-edit하고 " **/parts" 와 같은 패턴을 추가 하면 패턴이 이중성으로 전달되고 모든 것이 예상대로 작동합니다. "

요즘 gconf 설정 은 어디에 저장되어 있습니까?


1
org -> gnome -> deja-dup일명 org.gnome.DejaDup. 그래도 나를 위해 일하지 않습니다.
esmail

다음과 같이 제외 목록을 편집 할 수 있습니다. gsettings get org.gnome.DejaDup 제외 목록 gsettings set org.gnome.DejaDup 제외 목록 [ '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커맨드 라인에서 직접 이중성을 호출 하여 파일 을 사용한다고 생각 하십니까? Ubuntu의 기본 Déjà Dup GUI에서 이러한 패턴 목록을 작동시키는 방법을 알고 있습니까? (BTW : 포함 및 제외 패턴 이 포함 된 파일의 이름을 지정하는 것이 다소 혼란스러워 보입니다 include_list.txt.)
Salim B
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.