BorgBackup 2.0 รองรับ Rclone – เพิ่มการรองรับผู้ให้บริการคลาวด์มากกว่า 70 ราย นอกเหนือจาก SSH
(borgbackup.readthedocs.io)- เบตา 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 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ผมใช้ BorgBackup อยู่และค่อนข้างพอใจมาก
ตั้งค่าไว้ครั้งเดียวแล้วแทบลืมไปได้เลย และถึงตอนนี้ผ่านไป 7 ปี แบ็กอัปแบบตัดข้อมูลซ้ำ ก็ยังทำงานทุกสัปดาห์โดยไม่มีปัญหา
แนะนำให้ใช้ร่วมกับ borgmatic ซึ่งช่วยลดความซับซ้อนของการแบ็กอัป Borg ภายใน: https://github.com/borgmatic-collective/borgmatic
https://vorta.borgbase.com/
เลยค่อย ๆ เอนเอียงไปทาง rsync หรือเครื่องมือที่มี GUI frontend มากขึ้น
ตอนนี้ผมใช้แค่ rclone เพื่อแบ็กอัปไปยังเครื่องระยะไกลของตัวเอง แต่ชัดเจนว่าไม่ใช่โซลูชันระดับมืออาชีพ
เคยคิดจะเพิ่ม Backblaze B2 เป็นปลายทางนอกสถานที่ แต่การใช้แค่ rclone คงเรียกไม่ได้ว่าเป็นวิธีแบ็กอัปสมัยใหม่
พูดอย่างเคร่งครัด rclone ไม่ใช่เครื่องมือแบ็กอัป และแม้จะมีฟีเจอร์เข้ารหัส แต่ก็ค่อนข้างดิบ
ผมคิดว่าเครื่องมือแบ็กอัปที่เหมาะสมควรแบ่งข้อมูลเป็นบล็อกขนาดที่เหมาะสม, รักษาลิงก์โดย tar ไดเรกทอรีเมื่อจำเป็นแทนที่จะสร้างเป็นไฟล์ตรง ๆ ตามหน่วยไฟล์ให้เข้ากับ S3/B2 API, และจัดการ best practices ที่มีมานานอย่างการตัดข้อมูลซ้ำ
สงสัยว่ามีเครื่องมือไหนแนะนำได้บ้าง
เคยดู restic กับ duplicati แบบผ่าน ๆ แต่ก็ไม่ได้เรียบง่ายเท่าที่คาดหวังจากเครื่องมือแบ็กอัปเฉพาะทาง
ไม่ต้องการ GUI และจริง ๆ แล้วไม่อยากได้ด้วย อยากให้การตั้งค่าทั้งหมดอยู่ในไฟล์คอนฟิกไฟล์เดียว เพื่อจะได้แบ็กอัปไปยังที่อื่นเหมือนข้อมูลอื่น ๆ และสร้างซ้ำบนเครื่องใหม่ได้
ปัญหาใหญ่กว่านั้นคือเคยเห็นกรณีน่ากลัวที่เครื่องมือพวกนี้ทำดัชนีเสียจนกู้ข้อมูลไม่ได้ ซึ่งสำหรับเครื่องมือแบ็กอัปแล้วเป็นแกนหลักที่ไม่ควรเกิดขึ้นเด็ดขาดไม่ว่าในสถานการณ์ใด จึงยอมรับได้ยาก
ทำหน้าที่คล้าย restic แต่คุณอาจชอบวิธีจัดการคอนฟิกของมันมากกว่า
อ้างอิงเพิ่มเติม: https://news.ycombinator.com/item?id=34154052
duplicati ไม่ควรเสียเวลาลองเท่าไร
ผมพยายามใช้อย่างจริงจังหลายครั้งแต่ก็ล้มเหลวเสมอเพราะบั๊กเต็มไปหมด น่าเสียดายยิ่งกว่าเดิมเพราะชอบอินเทอร์เฟซของมัน
ต่อมาอัปเกรดเซิร์ฟเวอร์ที่บ้านเป็นฮาร์ดแวร์ที่จริงจังขึ้นแล้ว แต่โดยรวม bupstash ทำงานได้ดีกว่า เลยยังใช้อยู่
อย่างไรก็ตามควรคำนึงไว้ว่ารุ่นล่าสุดออกเมื่อ 2 ปีก่อน และผู้เขียนยังระบุว่าเป็นเบต้า
ถึงอย่างนั้นดูเหมือนมาตรฐานคุณภาพของผู้เขียนจะสูงกว่าโปรเจกต์ “ที่ไม่ใช่เบต้า” หลายตัว
ตารางเปรียบเทียบเครื่องมือแบ็กอัปที่มีประโยชน์: https://github.com/deajan/backup-bench
แนะนำให้ลองทำตามคู่มือ quick start ในเอกสาร
รองรับการตัดข้อมูลซ้ำและการเข้ารหัส และมีฟีเจอร์มากกว่านั้นมาก แต่ถ้าไม่ต้องการก็ไม่จำเป็นต้องใช้
ผมใช้ร่วมกับ borgmatic เพื่อจัดกระบวนการแบ็กอัปและกู้คืนจากภัยพิบัติที่ช่วยลดความเสี่ยงข้อมูลสูญหาย
borgbase ก็เป็นบริการที่ดี แต่ถ้าไม่ต้องการฟีเจอร์เสริมของ borgbase การใช้การรองรับ rclone ไปยังที่อย่าง B2 อาจถูกกว่า
ใช้มาค่อนข้างนานทั้งกับโปรเจกต์ส่วนตัวและงานที่มีค่าจ้าง ประสบการณ์ก็ดี
Borg 2 ยังเป็นเบต้า และ Kopia ก็อยู่ในสถานะใกล้เคียงกัน
Kopia เป็นเครื่องมือใหม่กว่า จึงกำลังทดสอบในการแบ็กอัปซ้ำอีกชุดบนเครื่องเดียวกัน และในเมื่อมีพื้นที่ก็ไม่มีเหตุผลที่จะไม่ทำ
บางครั้งจะรัน การตรวจสอบความถูกต้องสมบูรณ์ รวมถึงข้อมูลด้วย เพื่อให้มั่นใจได้ว่าเมทาดาทาและข้อมูลยังปกติ
“ไฟล์คอนฟิก” จริง ๆ แล้วเป็นเชลล์สคริปต์ที่ตั้งค่าสภาพแวดล้อมอย่างตำแหน่งที่เก็บ, รันแบ็กอัปที่ต้องการ, และสั่ง 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
แบบนั้นการสำรองข้อมูลถึงจะเกิดขึ้นจริง
และรู้สึกว่ามันเปลี่ยนไปเปลี่ยนมาน้อยกว่าด้วย ซึ่งผมไม่เคยต้องการกระแสฟีเจอร์ใหม่ ๆ อย่างต่อเนื่องในโซลูชันสำรองข้อมูลอยู่แล้ว
ถ้ากำลังมองหาพื้นที่เก็บข้อมูลสำรองออนไลน์ราคาถูก ก็น่ารู้ไว้ว่าแพ็กเกจ Microsoft 365 Single มี OneDrive 1TB รวมอยู่ด้วย
ส่วนแพ็กเกจ Family ให้ 1TB ต่อคน
ใช้ชุด restic + rclone มาหลายปีแล้วและได้ผลดี
ไม่เร็ว แต่ใช้งานได้
พื้นที่เก็บข้อมูล 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 จะช้ามากถ้ามีไฟล์จำนวนมาก และยังจัดการไฟล์ที่ถูกเปลี่ยนชื่อไม่ได้ จึงต้องส่งใหม่
ถ้าใช้ Borg คุณจะเห็นแบ็กอัพทั้งหมดที่ถูกสร้างขึ้น และย้อนกลับไปยังจุดเวลาที่ต้องการจาก snapshot ก่อนหน้าได้
นี่เป็นข้อดีที่โซลูชันสำรองข้อมูลจำนวนมากก็มีเช่นกัน
พูดให้ชัดคือ ถ้าคุณเผลอลบไฟล์แล้วสถานะนั้นถูก rsync ไปแล้ว คุณจะกู้ไฟล์จากแบ็กอัพนั้นไม่ได้
แต่ถ้าเป็น Borg จะทำได้
สงสัยว่ามีเหตุผลอะไรที่ควรใช้ การเข้ารหัสของ Borg แทน rclone crypt หรือควรทำกลับกันหรือไม่
เป็นเครื่องมือสำหรับคัดลอกไฟล์จากเครื่องหนึ่งไปยังอีกเครื่องหนึ่ง และในกรณีนี้จะเข้ารหัสก่อนคัดลอก
ใกล้เคียงกับ rsync ที่ใช้ร่วมกับคลาวด์
Borg เป็นเครื่องมืออีกประเภทหนึ่งสำหรับการแบ็กอัป
มันทำ deduplication, เข้ารหัส, snapshot, checksum และบีบอัดไดเรกทอรีต้นทางให้เป็น repository เดียว
ทำงานในระดับ บล็อกข้อมูล ไม่ใช่ระดับไฟล์
มีคำสั่งจัดการ repository รวมอยู่ด้วย จึงสามารถค้นหาข้อมูล จัดระเบียบหรือรวม snapshot ฯลฯ ได้
หลังจากนั้นเมื่อจะส่งหรือซิงก์ repository ไปยังที่ที่ต้องการ ก็ใช้เครื่องมืออย่าง rsync/SSH หรือ rclone ได้
ตอนนี้ rclone ได้รับการรองรับแบบ native แล้ว จึงสามารถแบ็กอัปตรงไปยังปลายทางระยะไกลได้ โดยไม่จำเป็นต้องมี repository ทั้งฝั่ง local และ remote
อยากรู้ว่าแตกต่างกันอย่างไรในแง่ประสิทธิภาพและการเข้ารหัส
เคยดู rsync.net แล้ว แต่เสียดายที่ไม่รองรับการเข้ารหัสในแบบที่สมเหตุสมผล
ใช้ Borg backup กับ rsync.net มาหลายปีแล้วและพอใจ
รองรับฟีเจอร์บังคับใช้ Borg ใน ssh session ด้วย force-command และ Borg มีตัวเลือกที่ช่วยป้องกันการลบได้แม้ backup ssh key จะถูกขโมย
โดยรวมเป็นโซลูชันที่แข็งแรงโดยไม่ต้องตั้งค่าให้ยุ่งยากมากนัก
อย่างที่บอก หากบังคับใช้คำสั่งก็ทำได้บน rsync.net และ snapshot ของ rsync.net ก็เป็นเกราะป้องกันกรณีเผลอลบผิดพลาดด้วย