4 คะแนน โดย GN⁺ 2024-10-02 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • เบตา 2.0.0b11 มีไว้สำหรับทดสอบที่เก็บข้อมูลแบบใหม่เท่านั้น และห้ามใช้ในโปรดักชัน
  • Borg 2.0 เป็น breaking release ที่ไม่เข้ากันกับที่เก็บข้อมูลเดิม และหากต้องการย้ายอาร์ไคฟ์จากที่เก็บข้อมูล borg 1.2/1.4 ไปยังที่เก็บข้อมูล borg 2.0 ใหม่ จำเป็นต้องใช้ borg transfer
  • ก่อนใช้ borg transfer ต้องอัปเกรดเป็น borg >= 1.2.6 หรือ borg ที่มีการแก้ไข CVE-2023-36811 แล้ว และต้องปฏิบัติตามคำแนะนำการอัปเกรดที่เกี่ยวข้องกับ manifest และ archive TAM
  • เพิ่มการรองรับ URL rclone:// สำหรับที่เก็บข้อมูล Borg ทำให้สามารถใช้ ผลิตภัณฑ์คลาวด์สตอเรจมากกว่า 70 รายการ เช่น Amazon S3, Backblaze B2, Ceph, Dropbox, Google Cloud Storage, Google Drive, Microsoft Azure, Microsoft OneDrive, OpenStack Swift, sftp, SMB/CIFS และ WebDAV
  • รองรับ งานแบบขนาน บนที่เก็บข้อมูลเดียวกันจากไคลเอนต์เดียวกัน
  • เพิ่มฟีเจอร์ Archive series โดย NAME ใช้ระบุซีรีส์ของอาร์ไคฟ์ที่มีชื่อเดียวกัน และอาร์ไคฟ์เดี่ยวแบบเจาะจงจะระบุด้วย aid:<archive hash>
  • มีการเปลี่ยนไวยากรณ์บรรทัดคำสั่ง ทำให้ต้องแก้สคริปต์และแรปเปอร์: โดยปกติจะระบุที่เก็บข้อมูลด้วย BORG_REPO หรือ borg -r <MYREPO> <COMMAND> และจะไม่ใช้รูปแบบ repo::archive
  • ยกเลิกไวยากรณ์ที่เก็บข้อมูลแบบสไตล์ scp และต้องใช้ URL แบบ ssh://
  • คำสั่งบางส่วนที่ใช้ได้ทั้งกับที่เก็บข้อมูล/อาร์ไคฟ์ถูกแยกออกหรือเปลี่ยนชื่อ: borg init กลายเป็น borg repo-create, งานเกี่ยวกับที่เก็บข้อมูลใช้ borg repo-*, งานเกี่ยวกับอาร์ไคฟ์ใช้ borg create NAME, borg list ID, borg extract ID เป็นต้น
  • --glob-archives เปลี่ยนชื่อเป็น --match-archives และรองรับรูปแบบแพตเทิร์น id:, sh:, re: โดยค่าเริ่มต้นคือ id: ซึ่งเป็นการจับคู่สตริงแบบตรงตัว
  • เนื่องจากใช้ platformdirs 3.x.x จึงไม่ใช้ XDG_*_HOME บน macOS และ Windows และไดเรกทอรี config/cache เริ่มต้นบน macOS เปลี่ยนเป็น ~/Library/Application Support/borg/
  • มีการลบ --remote-ratelimit, --numeric-owner, --nobsdflags, --noatime, --save-space, --bypass-lock, borg config
  • ห้ามใช้ --list และ --progress พร้อมกัน ยกเว้นกรณี --log-json
  • ปรับปรุงประสิทธิภาพของ borg check และ compact บนที่เก็บข้อมูลที่มี latency สูง ด้วยการลบการเรียก repository.list() ที่ไม่จำเป็น และปรับปรุงประสิทธิภาพของคำสั่งส่วนใหญ่บนที่เก็บข้อมูล latency สูงเมื่อเทียบกับ b10 ด้วยแคช chunks index ภายในที่เก็บข้อมูล
  • แก้ไข race condition ที่พบไม่บ่อยซึ่งอาจทำให้เกิด การสูญหายของข้อมูล ในแคชไฟล์
  • รายการในแคชไฟล์จะเก็บทั้ง ctime และ mtime และสามารถสร้างแคชไฟล์ใหม่จากอาร์ไคฟ์ก่อนหน้าใน archive series เดียวกันได้
  • แยกแคชไฟล์ตาม archive series เพื่อลดการใช้ RAM
  • ไม่อนุญาตให้ระบุออปชันบางตัวซ้ำโดยไม่มีความหมายอีกต่อไป ทำให้สคริปต์ที่เคยทำงานได้ก่อนหน้านี้อาจล้มเหลว

1 ความคิดเห็น

 
GN⁺ 2024-10-02
ความคิดเห็นจาก Hacker News
  • ผมใช้ BorgBackup อยู่และค่อนข้างพอใจมาก
    ตั้งค่าไว้ครั้งเดียวแล้วแทบลืมไปได้เลย และถึงตอนนี้ผ่านไป 7 ปี แบ็กอัปแบบตัดข้อมูลซ้ำ ก็ยังทำงานทุกสัปดาห์โดยไม่มีปัญหา
    แนะนำให้ใช้ร่วมกับ borgmatic ซึ่งช่วยลดความซับซ้อนของการแบ็กอัป Borg ภายใน: https://github.com/borgmatic-collective/borgmatic

    • ถ้าใช้สภาพแวดล้อมเดสก์ท็อปและชอบ GUI, Vorta ก็เข้ากันได้ดี
      https://vorta.borgbase.com/
    • เครื่องมือแบบนี้พอเรียนรู้และตั้งค่าไว้แล้วก็จะลืมมันไปจริง ๆ และภายหลังการต้องนึกให้ออกอีกครั้งก็น่ารำคาญจนทำให้เลี่ยงการ ตรวจสอบแบ็กอัป
      เลยค่อย ๆ เอนเอียงไปทาง rsync หรือเครื่องมือที่มี GUI frontend มากขึ้น
    • ถ้า “ตั้งค่าแล้วลืมไปเลย” นานถึง 7 ปี ก็หวังว่าจะมีการ ตรวจสอบการกู้คืนแบ็กอัป เป็นครั้งคราว
    • สงสัยว่ามี ไคลเอนต์ Android ดี ๆ บ้างไหม
  • ตอนนี้ผมใช้แค่ rclone เพื่อแบ็กอัปไปยังเครื่องระยะไกลของตัวเอง แต่ชัดเจนว่าไม่ใช่โซลูชันระดับมืออาชีพ
    เคยคิดจะเพิ่ม Backblaze B2 เป็นปลายทางนอกสถานที่ แต่การใช้แค่ rclone คงเรียกไม่ได้ว่าเป็นวิธีแบ็กอัปสมัยใหม่
    พูดอย่างเคร่งครัด rclone ไม่ใช่เครื่องมือแบ็กอัป และแม้จะมีฟีเจอร์เข้ารหัส แต่ก็ค่อนข้างดิบ
    ผมคิดว่าเครื่องมือแบ็กอัปที่เหมาะสมควรแบ่งข้อมูลเป็นบล็อกขนาดที่เหมาะสม, รักษาลิงก์โดย tar ไดเรกทอรีเมื่อจำเป็นแทนที่จะสร้างเป็นไฟล์ตรง ๆ ตามหน่วยไฟล์ให้เข้ากับ S3/B2 API, และจัดการ best practices ที่มีมานานอย่างการตัดข้อมูลซ้ำ
    สงสัยว่ามีเครื่องมือไหนแนะนำได้บ้าง
    เคยดู restic กับ duplicati แบบผ่าน ๆ แต่ก็ไม่ได้เรียบง่ายเท่าที่คาดหวังจากเครื่องมือแบ็กอัปเฉพาะทาง
    ไม่ต้องการ GUI และจริง ๆ แล้วไม่อยากได้ด้วย อยากให้การตั้งค่าทั้งหมดอยู่ในไฟล์คอนฟิกไฟล์เดียว เพื่อจะได้แบ็กอัปไปยังที่อื่นเหมือนข้อมูลอื่น ๆ และสร้างซ้ำบนเครื่องใหม่ได้
    ปัญหาใหญ่กว่านั้นคือเคยเห็นกรณีน่ากลัวที่เครื่องมือพวกนี้ทำดัชนีเสียจนกู้ข้อมูลไม่ได้ ซึ่งสำหรับเครื่องมือแบ็กอัปแล้วเป็นแกนหลักที่ไม่ควรเกิดขึ้นเด็ดขาดไม่ว่าในสถานการณ์ใด จึงยอมรับได้ยาก

    • ถ้าอยากจัดการคอนฟิกเหมือนไฟล์เดียว ลองดู kopia ได้
      ทำหน้าที่คล้าย restic แต่คุณอาจชอบวิธีจัดการคอนฟิกของมันมากกว่า
      อ้างอิงเพิ่มเติม: https://news.ycombinator.com/item?id=34154052
      duplicati ไม่ควรเสียเวลาลองเท่าไร
      ผมพยายามใช้อย่างจริงจังหลายครั้งแต่ก็ล้มเหลวเสมอเพราะบั๊กเต็มไปหมด น่าเสียดายยิ่งกว่าเดิมเพราะชอบอินเทอร์เฟซของมัน
    • หลังจากลองแบ็กอัปบน rpi แล้วรู้สึกว่า Borg ช้าเกินจนใช้ไม่ไหว ผมก็ใช้ bupstash อยู่
      ต่อมาอัปเกรดเซิร์ฟเวอร์ที่บ้านเป็นฮาร์ดแวร์ที่จริงจังขึ้นแล้ว แต่โดยรวม bupstash ทำงานได้ดีกว่า เลยยังใช้อยู่
      อย่างไรก็ตามควรคำนึงไว้ว่ารุ่นล่าสุดออกเมื่อ 2 ปีก่อน และผู้เขียนยังระบุว่าเป็นเบต้า
      ถึงอย่างนั้นดูเหมือนมาตรฐานคุณภาพของผู้เขียนจะสูงกว่าโปรเจกต์ “ที่ไม่ใช่เบต้า” หลายตัว
      ตารางเปรียบเทียบเครื่องมือแบ็กอัปที่มีประโยชน์: https://github.com/deajan/backup-bench
    • ความเรียบง่ายขึ้นอยู่กับ use case แต่ borg ยอดเยี่ยมมาก
      แนะนำให้ลองทำตามคู่มือ quick start ในเอกสาร
      รองรับการตัดข้อมูลซ้ำและการเข้ารหัส และมีฟีเจอร์มากกว่านั้นมาก แต่ถ้าไม่ต้องการก็ไม่จำเป็นต้องใช้
      ผมใช้ร่วมกับ borgmatic เพื่อจัดกระบวนการแบ็กอัปและกู้คืนจากภัยพิบัติที่ช่วยลดความเสี่ยงข้อมูลสูญหาย
      borgbase ก็เป็นบริการที่ดี แต่ถ้าไม่ต้องการฟีเจอร์เสริมของ borgbase การใช้การรองรับ rclone ไปยังที่อย่าง B2 อาจถูกกว่า
      ใช้มาค่อนข้างนานทั้งกับโปรเจกต์ส่วนตัวและงานที่มีค่าจ้าง ประสบการณ์ก็ดี
    • ใช้ชุด restic + autorestic/resticprofile
      Borg 2 ยังเป็นเบต้า และ Kopia ก็อยู่ในสถานะใกล้เคียงกัน
      Kopia เป็นเครื่องมือใหม่กว่า จึงกำลังทดสอบในการแบ็กอัปซ้ำอีกชุดบนเครื่องเดียวกัน และในเมื่อมีพื้นที่ก็ไม่มีเหตุผลที่จะไม่ทำ
      บางครั้งจะรัน การตรวจสอบความถูกต้องสมบูรณ์ รวมถึงข้อมูลด้วย เพื่อให้มั่นใจได้ว่าเมทาดาทาและข้อมูลยังปกติ
    • พอใจกับการใช้ Restic แบ็กอัปไปยัง BackBlaze B2 มาก
      “ไฟล์คอนฟิก” จริง ๆ แล้วเป็นเชลล์สคริปต์ที่ตั้งค่าสภาพแวดล้อมอย่างตำแหน่งที่เก็บ, รันแบ็กอัปที่ต้องการ, และสั่ง prune ตามนโยบายการเก็บรักษา
      ใช้โครงแบบนี้มาหลายปีได้สำเร็จ
      ยังไม่เคยกู้คืนทั้งหมด แต่การกู้ไฟล์และไดเรกทอรีรายตัวไม่มีปัญหา
      สงสัยว่ามีลิงก์เกี่ยวกับปัญหาดัชนีเสียไหม
      ผมไม่เคยเจอเอง แต่แน่นอนว่าตัวอย่างเดียวไม่ได้มีความหมายมากนัก
  • ผมอยากทำ rclone backend สำหรับ Borg มานานแล้ว
    แต่ใน v1 การทำ abstraction ของ backend ยังไม่ดีพอ จึงทำได้ไม่ง่าย
    ใน v2 Thomas Waldmann สร้างอินเทอร์เฟซ abstraction ที่ดีไว้แล้ว และโค้ด rclone จบได้ด้วย Python น้อยกว่า 300 บรรทัด จึงทำได้ในช่วงบ่ายสักวันสองวัน
    https://github.com/borgbackup/borgstore/blob/master/src/borg...

  • น่าสนใจมาก
    โดยเฉพาะอย่างยิ่งเมื่อ object storage ได้รับความนิยมมากขึ้นและต้นทุนลดลง นี่เป็นฟีเจอร์ที่ถูกขอมานาน
    การให้ Borg ทำงานร่วมกับ object storage ไม่ได้เป็นการรองรับอย่างเป็นทางการ แต่บางคนก็ใช้แบบนั้นอยู่
    เท่าที่เข้าใจ ส่วนใหญ่จะคัดลอก repository แล้วค่อยอัปโหลด แทนที่จะให้ Borg เขียนหรือจัดการโดยตรง ซึ่งเป็นปัญหาได้เพราะถ้า repository ต้นทางเสียหาย ความเสียหายนั้นก็อาจถูกคัดลอกไปด้วย
    การรองรับครั้งนี้น่าจะทำให้ง่ายขึ้นมากและทำให้เวิร์กโฟลว์เรียบง่ายลง
    การเลือก รองรับ rclone แทนบริการเฉพาะรายดูเป็นทางเลือกที่ฉลาดกว่าและมองไกลกว่า

  • บทความที่เกี่ยวข้อง
    Borg 2.0 beta (โปรแกรมสำรองข้อมูลแบบลบข้อมูลซ้ำ พร้อมการบีบอัดและการเข้ารหัส) - https://news.ycombinator.com/item?id=40990425 - กรกฎาคม 2024
    Borgctl – borgbackup without bash scripts - https://news.ycombinator.com/item?id=39289656 - กุมภาพันธ์ 2024
    BorgBackup: Deduplicating archiver with compression and encryption - https://news.ycombinator.com/item?id=34152369 - ธันวาคม 2022
    Emborg – Front-End to Borg Backup - https://news.ycombinator.com/item?id=30035308 - มกราคม 2022
    Deduplicating Archiver with Compression and Encryption - https://news.ycombinator.com/item?id=27939412 - กรกฎาคม 2021
    BorgBackup: Deduplicating Archiver - https://news.ycombinator.com/item?id=21642364 - พฤศจิกายน 2019
    Borg – Deduplicated backup with compression and authenticated encryption - https://news.ycombinator.com/item?id=13149759 - ธันวาคม 2016
    BorgBackup (ย่อว่า Borg) เป็นโปรแกรมสำรองข้อมูลแบบลบข้อมูลซ้ำ - https://news.ycombinator.com/item?id=11192209 - กุมภาพันธ์ 2016

  • สงสัยว่ามีการเปรียบเทียบล่าสุดระหว่าง Borg กับ Restic หรือไม่ หรือมีเหตุผลที่หนักแน่นพอจะย้ายจาก Restic ไป Borg หรือเปล่า
    เมื่อก่อนเคยใช้ Borg แต่ปัญหาคือใช้ backend อื่นนอกจากไฟล์โลคัลหรือ ssh ไม่ได้
    ตอนที่ Restic เริ่มรองรับการบีบอัด ก็ย้ายไปใช้ Restic
    สำหรับ use case ของผมที่สำรองหลายเซิร์ฟเวอร์ไปยังผู้ให้บริการสตอเรจที่เข้ากันได้กับ S3 ตอนนี้ Restic กับ Borg ดูแทบจะทัดเทียมกันแล้ว
    ไม่ได้อยากซ่อมสิ่งที่ไม่ได้พัง แต่ก็อยากรู้ว่าตอนใช้ Restic อยู่ ผมพลาดอะไรไปบ้างเมื่อเทียบกับ Borg

    • ผมชอบ restic มากกว่า เพราะเข้าใจและใช้ง่ายกว่า
      แบบนั้นการสำรองข้อมูลถึงจะเกิดขึ้นจริง
      และรู้สึกว่ามันเปลี่ยนไปเปลี่ยนมาน้อยกว่าด้วย ซึ่งผมไม่เคยต้องการกระแสฟีเจอร์ใหม่ ๆ อย่างต่อเนื่องในโซลูชันสำรองข้อมูลอยู่แล้ว
  • ถ้ากำลังมองหาพื้นที่เก็บข้อมูลสำรองออนไลน์ราคาถูก ก็น่ารู้ไว้ว่าแพ็กเกจ Microsoft 365 Single มี OneDrive 1TB รวมอยู่ด้วย
    ส่วนแพ็กเกจ Family ให้ 1TB ต่อคน
    ใช้ชุด restic + rclone มาหลายปีแล้วและได้ผลดี
    ไม่เร็ว แต่ใช้งานได้

    • ผลิตภัณฑ์ storage box ของ Hetzner ก็น่าลองดู
      พื้นที่เก็บข้อมูล 1TB ที่เข้าถึงผ่าน SSH ได้ในราคาเดือนละ 4 ยูโร ถือว่าเอาชนะได้ยาก
  • สงสัยว่าเมื่อไรถึงควรแนะนำ Borg แทน rsync ธรรมดาสำหรับการใช้งานส่วนตัว
    ตอนนี้สำรองกลุ่มไดเรกทอรีในไดรฟ์ไปยังอีกไดรฟ์หนึ่งและบริการระยะไกล (rsync.net) ด้วย rsync อยู่
    มันทำงานได้ดี แต่เพราะ use case ของผมเรียบง่าย เลยไม่แน่ใจว่าโซลูชันนี้พอแล้วหรือผมกำลังพลาดข้อดีใหญ่ ๆ ของ Borg อยู่
    การเข้ารหัสของ Borg น่าอิจฉา แต่ความซับซ้อนของเครื่องมือใหม่และความกังวลว่าผมอาจทำข้อมูลพังเอง ทำให้ยังย้ายไปใช้ได้ไม่ง่าย
    ข้อมูลที่จะสำรองตอนนี้ประมาณ 5TB ซึ่งไม่ได้มากนัก

    • ในกรณีของผม การลบข้อมูลซ้ำและการบีบอัด ช่วยประหยัดพื้นที่เก็บข้อมูลได้มาก
      แบ็กอัพเมล 17 ชุดของ 6 เดือนล่าสุด เดิมมีขนาด 837GB หลังบีบอัดเหลือ 312GB และหลังลบข้อมูลซ้ำเหลือ 19GB
      Postgres ก็ลดจาก 25GB เหลือ 7GB แล้วลดอีกเหลือ 900MB
      แบ็กอัพเมลน่าจะประหยัดพื้นที่ได้ด้วย hard link ของ rsync เช่นกัน แต่ไม่รู้ว่าจะเล็กลงได้ถึงขนาดนี้โดยไม่ต้องปรับแต่งเพิ่มเติมหรือเปล่า
    • ปัญหาที่พบบ่อยคือ ถ้าลบไฟล์หรือทำให้ไฟล์เสียหาย แล้วเพิ่งพบหลังจากนั้นสองวัน แบ็กอัพรายวันเพียงชุดเดียว ก็ช่วยอะไรไม่ได้
      การมี snapshot หลายชุดสำคัญมาก
      เอกสารอย่าง http://www.taobackup.com/ ก็น่าอ่านประกอบ
      rsync จะช้ามากถ้ามีไฟล์จำนวนมาก และยังจัดการไฟล์ที่ถูกเปลี่ยนชื่อไม่ได้ จึงต้องส่งใหม่
    • ด้วย rsync จะจำลองได้แค่สถานะล่าสุดเท่านั้น
      ถ้าใช้ Borg คุณจะเห็นแบ็กอัพทั้งหมดที่ถูกสร้างขึ้น และย้อนกลับไปยังจุดเวลาที่ต้องการจาก snapshot ก่อนหน้าได้
      นี่เป็นข้อดีที่โซลูชันสำรองข้อมูลจำนวนมากก็มีเช่นกัน
      พูดให้ชัดคือ ถ้าคุณเผลอลบไฟล์แล้วสถานะนั้นถูก rsync ไปแล้ว คุณจะกู้ไฟล์จากแบ็กอัพนั้นไม่ได้
      แต่ถ้าเป็น Borg จะทำได้
  • สงสัยว่ามีเหตุผลอะไรที่ควรใช้ การเข้ารหัสของ Borg แทน rclone crypt หรือควรทำกลับกันหรือไม่

    1. https://borgbackup.readthedocs.io/en/2.0.0b11/quickstart.htm...
    2. https://rclone.org/crypt/
    • rclone crypt ไม่ได้เกี่ยวข้องกับ Borg มากนัก
      เป็นเครื่องมือสำหรับคัดลอกไฟล์จากเครื่องหนึ่งไปยังอีกเครื่องหนึ่ง และในกรณีนี้จะเข้ารหัสก่อนคัดลอก
      ใกล้เคียงกับ rsync ที่ใช้ร่วมกับคลาวด์
      Borg เป็นเครื่องมืออีกประเภทหนึ่งสำหรับการแบ็กอัป
      มันทำ deduplication, เข้ารหัส, snapshot, checksum และบีบอัดไดเรกทอรีต้นทางให้เป็น repository เดียว
      ทำงานในระดับ บล็อกข้อมูล ไม่ใช่ระดับไฟล์
      มีคำสั่งจัดการ repository รวมอยู่ด้วย จึงสามารถค้นหาข้อมูล จัดระเบียบหรือรวม snapshot ฯลฯ ได้
      หลังจากนั้นเมื่อจะส่งหรือซิงก์ repository ไปยังที่ที่ต้องการ ก็ใช้เครื่องมืออย่าง rsync/SSH หรือ rclone ได้
      ตอนนี้ rclone ได้รับการรองรับแบบ native แล้ว จึงสามารถแบ็กอัปตรงไปยังปลายทางระยะไกลได้ โดยไม่จำเป็นต้องมี repository ทั้งฝั่ง local และ remote
    • สงสัยความแตกต่างระหว่างแพ็กเกจนี้กับ Restic ด้วย
      อยากรู้ว่าแตกต่างกันอย่างไรในแง่ประสิทธิภาพและการเข้ารหัส
    • สงสัยว่าเมื่อเปิดใช้การเข้ารหัสแล้ว deduplication จะทำงานได้ดีแค่ไหน
      เคยดู rsync.net แล้ว แต่เสียดายที่ไม่รองรับการเข้ารหัสในแบบที่สมเหตุสมผล
  • ใช้ Borg backup กับ rsync.net มาหลายปีแล้วและพอใจ
    รองรับฟีเจอร์บังคับใช้ Borg ใน ssh session ด้วย force-command และ Borg มีตัวเลือกที่ช่วยป้องกันการลบได้แม้ backup ssh key จะถูกขโมย
    โดยรวมเป็นโซลูชันที่แข็งแรงโดยไม่ต้องตั้งค่าให้ยุ่งยากมากนัก

    • เคยกำลังหาโซลูชันที่ป้องกันไม่ให้โฮสต์ที่ถูกเจาะลบแบ็กอัปของตัวเองได้
      อย่างที่บอก หากบังคับใช้คำสั่งก็ทำได้บน rsync.net และ snapshot ของ rsync.net ก็เป็นเกราะป้องกันกรณีเผลอลบผิดพลาดด้วย