ฉันสามารถเพิกเฉยต่อไฟล์ตามรูปแบบใน deja-dup (สำรองข้อมูล) ได้หรือไม่


13

การสำรองข้อมูลซ้ำซ้อนของฉันกลายเป็นขนาดใหญ่ที่เงียบสงบและฉันสังเกตเห็นว่ามีไฟล์ที่ไม่จำเป็นจำนวนมาก (เช่น*.pycไฟล์**__pycache__โฟลเดอร์และสิ่งชั่วคราวอื่น ๆ ที่เกี่ยวข้องกับงานสร้าง)

ฉันรู้ว่าฉันสามารถเพิกเฉยต่อโฟลเดอร์ใดโฟลเดอร์หนึ่งได้ แต่มีวิธียกเว้นไฟล์และหรือโฟลเดอร์ตามรูปแบบหรือไม่

ฉันคิดว่าอาจมีตัวเลือกเพิ่มเติมสำหรับไฟล์การกำหนดค่า แต่ตัวเลือกDéjàไม่ได้ใช้ ดังนั้นฉันจึงดูที่ความซ้ำซ้อน (CLI มันเป็นพื้นฐานของ) แต่หน้าคนไม่พูดถึงไฟล์การกำหนดค่าอย่างใดอย่างหนึ่ง ฉันรู้ว่าความซ้ำซ้อนสามารถเพิกเฉยต่อไฟล์และโฟลเดอร์ตามรูปแบบ ( --exclude, --exclude-filelist) แต่ฉันไม่รู้ว่าจะรวมสิ่งนี้เข้ากับDéjà Dupได้อย่างไร

ฉันต้องทิ้งDéjà Dupและใช้ซ้ำซ้อนด้วยตนเองหรือไม่ หรือมีวิธีการตั้งค่าตัวเลือกที่จำเป็นเพื่อให้พวกเขาใช้โดยอัตโนมัติเมื่อDéjà Dupityใช้ซ้ำหรือไม่

คำตอบ:


4

ขณะนี้ยังไม่มีวิธีในการใช้ Deja Dup เพื่อทำการกรองขั้นสูงแบบนั้น ดูข้อผิดพลาดต้นน้ำhttps://bugs.launchpad.net/deja-dup/+bug/374274


เนื่องจาก Michael Terry เป็นผู้ดูแล deja-dup นี่คือ 'ขั้นสุดท้าย' ดูเพิ่มเติมที่ปัญหาล่าสุดนี้ใน repo 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`"

แต่สำหรับฉันดูเหมือนว่า ** จะไม่ถูกส่งไปทำซ้ำ ดังนั้นฉันจึงลงเอยด้วยการทำ 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. ค้นหาorg -> gnome -> deja-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']"

และเรียกใช้รับอีกครั้งเพื่อตรวจสอบการเปลี่ยนแปลงของคุณ


0

น่าเศร้าทั้งDuplicityและDéjà Dup ไม่ใช้ไฟล์การกำหนดค่า :( แต่อาจมีวิธีแก้ไขที่เป็นไปได้ผู้ใช้@mterryพูดถึงสิ่งต่อไปนี้ในรายงานข้อผิดพลาดที่ลิงก์ด้านบน:

หากคุณ gconf- แก้ไขรายการแยกและเพิ่มรูปแบบเช่น " **/parts" รูปแบบจะถูกส่งไปที่ซ้ำซ้อนและทุกอย่างทำงานตามที่คาดไว้ ... "

ทีนี้วันนี้การตั้งค่า gconfเหล่านั้นถูกเก็บไว้ที่ไหน?


1
org -> gnome -> deja-duporg.gnome.DejaDupอาคา แม้ว่าจะไม่ได้ผลสำหรับฉัน
esmail

คุณสามารถแก้ไขรายการยกเว้นเช่น: gsettings get org.gnome.DejaDup แยกรายการ gsettings ตั้ง 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: exlude ไฟล์ใด ๆ .pycที่มีนามสกุล
  • บรรทัดที่ 6: รวมDocumentsโฟลเดอร์เฉพาะและเฉพาะของฉัน
  • สาย 7: ไม่รวมทั้งหมดบ้านอื่น ๆ ของฉันโฟลเดอร์เช่นPictures, Videos, Downloadsฯลฯ หมายเหตุว่านี้ไม่สามารถหยุดDocumentsจากการถูกรวมในขณะที่มันถูกจับคู่อยู่ในบรรทัดที่ 6! เรื่องการสั่งซื้อ!

1
ฉันเดาว่าคุณใช้include_list.txtไฟล์ของคุณโดยการโทรซ้ำกันโดยตรงจากบรรทัดคำสั่ง? คุณรู้วิธีใดบ้างที่จะทำให้รายการรูปแบบดังกล่าวใช้ได้กับDéjà Dup GUI ที่เป็นค่าเริ่มต้นของ Ubuntu หรือไม่? (BTW: ดูเหมือนว่าค่อนข้างทำให้ฉันสับสนที่จะตั้งชื่อไฟล์ที่มีรูปแบบการรวมและการแยกinclude_list.txt ... )
Salim B
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.