Tôi có thể bỏ qua các tệp theo mẫu trong deja-dup (Sao lưu) không?


13

Các bản sao lưu Déjà Dup của tôi đã trở nên yên tĩnh lớn và tôi nhận thấy chúng chứa một số lượng lớn các tệp không cần thiết (ví dụ: *.pyctệp, **__pycache__thư mục và các nội dung tạm thời liên quan đến bản dựng khác).

Tôi biết rằng tôi có thể bỏ qua các thư mục cụ thể, nhưng có cách nào để loại trừ các tệp và hoặc thư mục theo mẫu không?

Tôi nghĩ rằng có thể có nhiều tùy chọn hơn có thể sử dụng một tệp cấu hình, nhưng Déjà Dup không sử dụng một tệp . Vì vậy, tôi đã xem xét sự trùng lặp (CLI dựa trên nó), nhưng trang man cũng không đề cập đến một tệp cấu hình. Tôi biết rằng sự trùng lặp có thể bỏ qua các tệp và thư mục dựa trên các mẫu ( --exclude, --exclude-filelist), nhưng tôi không biết làm thế nào để kết hợp điều này với Déjà Dup .

Tôi có phải mương Déjà Dup và sử dụng tráo bằng tay? Hoặc là có một cách để thiết lập các tùy chọn cần thiết, do đó chúng được sử dụng tự động, khi tráo trở được sử dụng bởi Déjà Dup ?

Câu trả lời:



4

Bạn có thể chỉnh sửa danh sách loại trừ như:

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

Nguồn: https://answers.launchpad.net/deja-dup/+question/280954

Tôi đã cố gắng thêm các mẫu như '** /. Git' và '** / build' vào danh sách đó, như thế này:

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

Nhưng đối với tôi, dường như con người của ** không được truyền lại cho sự trùng lặp. Vì vậy, thay vào đó tôi đã kết thúc việc tìm kiếm như

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

và thêm chúng vào danh sách loại trừ theo cách thủ công


3

Sử dụng các mẫu ** không (còn nữa) hoạt động vì deja-dub thoát các ký tự [? * Trong lệnh trùng lặp. Xem https://git.launchpad.net/deja-dup/tree/libdeja/tools/d repeatity / D repeatityJob.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. Tải về dconf-editor
sudo apt install dconf-editor
  1. chạy dconf-editornhư người dùng bình thường. (không sử dụng sudo)
dconf-editor
  1. định vị org -> gnome -> deja-dup -> loại trừ danh sách
  2. đặt giá trị tùy chỉnh thành (thay thế leo bằng tên người dùng của bạn)
['$TRASH', '$DOWNLOAD', '/home/leo/.anaconda', '/home/leo/**/node_modules', '/home/leo/**/__pycache__', '/home/leo/**/*.pyc']
  1. Bạn có thể cần phải khởi động lại / đăng nhập lại. Tôi chạy Ảnh chụp màn hình tự động cập nhật giá trị. Tôi không biết tại sao, có lẽ người khác có thể giải thích.

Ảnh chụp màn hình:

Thay leo bằng tên người dùng của bạn

thay thế 'leo' bằng tên người dùng của bạn

Nó sẽ trông như thế này


Tôi đã thử cái này và ~/**/node_modulesnó hiển thị trong 'Thư mục để bỏ qua', nhưng chúng vẫn được sao lưu ..., vì vậy dường như không hoạt động ...
nhạc nền

2

Tôi đã thử phương pháp của Jacob Nordfalk , nhưng nó không hiệu quả với tôi (có thể cú pháp đã thay đổi).

Tuy nhiên, tôi đã có thể thay đổi cài đặt bằng cách sử dụng dconf-editor. Bạn có thể sửa đổi danh sách tại đường dẫn/org/gnome/deja-dup/exclude-list


1

Lấy danh sách loại trừ hiện tại với:

$ gsettings get org.gnome.DejaDup exclude-list

mà tạo ra một cái gì đó như:

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

Sau đó, thiết lập danh sách mới của bạn bằng cách gói đầu ra cũ trong dấu ngoặc kép và thêm các thay đổi của bạn:

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

và chạy get một lần nữa để xác minh thay đổi của bạn.


0

Đáng buồn thay, cả trùng lặpDéjà Dup đều không sử dụng tệp cấu hình :( Nhưng có thể có một cách giải quyết khác, người dùng @mterryđã đề cập đến những điều sau đây trong báo cáo lỗi được liên kết ở trên:

nếu bạn chỉnh sửa danh sách loại trừ và thêm các mẫu như " **/parts", mẫu sẽ được chuyển thành bản sao và mọi thứ hoạt động như mong đợi ... "

Bây giờ, những cài đặt gconf được lưu trữ những ngày này ở đâu?


1
org -> gnome -> deja-dupaka org.gnome.DejaDup. Không làm việc cho tôi, mặc dù.
esmail

bạn có thể chỉnh sửa danh sách loại trừ như: gsinstall get org.gnome.DejaDup loại trừ danh sách gsinstall set org.gnome.DejaDup loại trừ danh sách ['path1', 'path2']
Jacob Nordfalk 23/2/2017

0

Tôi thành công trong việc loại trừ bằng cách sử dụng include_list.txttệp của mình có chứa:

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

Điều /**/quan trọng là phù hợp với bất kỳ độ sâu thư mục.

Quy tắc 1: Thứ tự là quan trọng. Đầu tiên phải cụ thể trước và chung sau.

Quy tắc 2: Những gì đã được khớp trong một dòng (bao gồm hoặc loại trừ) không thể được thay đổi bởi các kết quả khớp tiếp theo trong các dòng sau. Các tài liệu đề cập đến điều này; nhưng trong tiếng Anh cực kỳ khó hiểu. Hy vọng của tôi là tốt hơn;) Các dòng trên đạt được:

  • Dòng 1: loại trừ bất kỳ __pycache__ở độ sâu nào.
  • Dòng 2: loại trừ bất kỳ tập tin có phần mở rộng .pyc.
  • Dòng 6: bao gồm Documentsthư mục cụ thể và duy nhất của tôi .
  • Dòng 7: loại trừ tất cả nhà khác của tôi thư mục như Pictures, Videos, Downloadsvv Lưu ý rằng điều này có thể không dừng lại Documentskhông bị đưa vào như nó đã xuất hiện trong dòng 6! Vấn đề đặt hàng!

1
Tôi đoán bạn sử dụng include_list.txttệp của bạn bằng cách gọi trùng lặp trực tiếp từ dòng lệnh? Bạn có biết bất kỳ cách nào để làm cho một danh sách mẫu như vậy hoạt động với GUI Déjà Dup mặc định của Ubuntu không? (BTW: Có vẻ khá khó hiểu đối với tôi khi đặt tên một tệp chứa các mẫu bao gồm và loại trừinclude_list.txt ...)
Salim B
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.