นอกสถานที่และการกู้คืน¶
สำเนานอกสถานที่รอหลังการสร้างใหม่
เมื่อขั้นตอนที่ 4 สร้างรายการขึ้นใหม่โดยไม่มีการตั้งค่าเดิม การจำลองข้อมูลนอกสถานที่ของโดเมนเหล่านั้นจะหยุดชั่วคราวจนกว่าค่าเริ่มต้นของการจัดวางจะได้รับการยืนยัน ดู การจัดวางต่อรายการ
การสำรองข้อมูลในเครื่องปกป้องคุณจาก container ที่สูญหายหรือการอัปเดตที่ผิดพลาด การจำลองข้อมูลนอกสถานที่และชุดกู้คืนที่ผ่านการทดสอบปกป้องคุณจากทั้งเครื่อง, แรนซัมแวร์ หรือไฟไหม้ หน้านี้ครอบคลุมการจำลองข้อมูลนอกสถานที่, การทำให้สำเนานั้นป้องกันการแทรกแซง, การพิสูจน์ว่าคุณกู้คืนได้ และการกู้คืนเมื่อ BombVault เองหายไป
การจำลองข้อมูลนอกสถานที่¶
เก็บการสำรองข้อมูลในเครื่องที่เร็วไว้และเพิ่มสำเนานอกสถานที่หนึ่งชุดหรือมากกว่า ตั้งรีพอสิทอรีต่อโดเมนบนหน้า การตั้งค่า, นอกสถานที่ BombVault จำลองสแนปช็อตใหม่ไปที่นั่นด้วย restic copy แบบทำเท่าที่ทำได้ ดังนั้นการสะดุดที่นอกสถานที่จึงไม่เคยทำให้การสำรองข้อมูลในเครื่องล้มเหลว ในรูปแบบนี้รีพอสิทอรีในเครื่องยังคงเป็นหลักและรีพอสิทอรีนอกสถานที่เป็นสำเนา แต่รีพอสิทอรีหลักของโดเมนไม่จำเป็นต้องอยู่ในเครื่องเลย ดู ที่เก็บหลักระยะไกล ด้านล่างสำหรับการสำรองข้อมูลตรงไปยัง S3/rest-server/ฯลฯ แทนการจำลองไปที่นั่น
- หลายปลายทางนอกสถานที่ต่อโดเมน แต่ละโดเมน (containers, VMs, flash, config, ชุดไฟล์ และชุดข้อมูล ZFS) สามารถจำลองไปยังหลายปลายทางนอกสถานที่พร้อมกันได้ ไม่ใช่แค่ปลายทางเดียว ดังนั้นคุณสามารถเก็บ เช่น rest-server บนเครื่องของเพื่อนและ S3 bucket ควบคู่กันได้ เพิ่มปลายทางเสริมบน การตั้งค่า, นอกสถานที่ แต่ละปลายทางมีรีพอสิทอรี, คลาสพื้นที่จัดเก็บ S3, แฟล็ก append-only, การเก็บรักษา และงบประมาณการเติบโตของตัวเอง การตั้งค่านอกสถานที่เดี่ยวที่มีอยู่จะถูกยกไปเป็นปลายทางแรกโดยไม่แตะต้อง และทุกปลายทางของโดเมนจะจำลองตามตารางเวลานอกสถานที่ของโดเมนนั้น
- ตารางเวลานอกสถานที่ต่อโดเมน (แก้ไขควบคู่กับตารางเวลาอื่นๆ ทั้งหมดบน การตั้งค่า, กำหนดการ): ปล่อยว่างไว้เพื่อจำลองหลังการสำรองข้อมูลในเครื่องทุกครั้ง หรือตั้งจังหวะ (เช่น
weekly Sun 03:00) เพื่อส่งนอกสถานที่ไม่บ่อยเท่าที่คุณสำรองข้อมูลในเครื่อง ปุ่ม จำลองตอนนี้ ครอบคลุมการรันตามต้องการ - การเก็บรักษานอกสถานที่ อยู่บน การตั้งค่า, การเก็บรักษา เพื่อให้คุณเก็บสำเนานอกสถานที่ไว้นานขึ้นเป็นคลังเก็บ ปล่อยให้นโยบายเป็นศูนย์ทั้งหมดเพื่อไม่ตัดสแนปช็อตนอกสถานที่โดยอัตโนมัติ
- ขีดจำกัดแบนด์วิดท์ (การตั้งค่า, นอกสถานที่) จำกัดอัตราการอัปโหลด/ดาวน์โหลดของ restic เพื่อไม่ให้การจำลองข้อมูลใช้ WAN ของคุณจนเต็ม
- ตัวบ่งชี้การจำลองข้อมูล แสดงว่าโดเมนใดกำลังจำลองข้อมูลขณะที่ทำงาน (บนหน้าของมันและบนแดชบอร์ด) เป็นตัวบ่งชี้แบบทำงานอยู่ ไม่ใช่แถบเปอร์เซ็นต์ เพราะ
restic copyไม่เปิดเผยความคืบหน้าที่เครื่องอ่านได้
กู้คืนจากที่ใดก็ได้
ทุก container, VM, ชุดไฟล์, แฟลช และการตั้งค่าแอป จะแสดงรายการสำรองข้อมูลของตัวเองเป็นไทม์ไลน์เดียวครอบคลุมทุกที่ที่การสำรองข้อมูลนั้นตั้งอยู่ การสำรองข้อมูลที่คัดลอกไปยัง B2 จะปรากฏเพียงครั้งเดียว โดยมีเครื่องหมายกำกับทุกที่ที่เก็บมันไว้ การกู้คืนจะเลือกที่แรกที่เข้าถึงได้ โดยเริ่มจากรีพอสิทอรีที่รายการนั้นถูกเขียนไว้ และคุณสามารถเลือกที่อื่นได้ทีละแถว ที่นอกสถานที่จะถูกอ่านก็ต่อเมื่อคุณเปิดดูเท่านั้น การลบที่จุดหนึ่งจะตรวจสอบจุดอื่นก่อนและบอกว่านั่นเป็นสำเนาสุดท้ายหรือไม่
ปลายทาง¶
การตั้งค่า, นอกสถานที่ เริ่มด้วย ปลายทาง คือที่ที่สำเนานอกสถานที่ไปอยู่ ตั้งค่าครั้งเดียวสำหรับทุกโดเมน จากนั้นปลายทางจะปรากฏเป็นปุ่มในแถว การจัดวาง ของทุกโดเมนและทุกรายการ เมื่อติ๊กเลือกสำหรับโดเมนเป็นครั้งแรก BombVault จะสร้างรีพอสิทอรีของโดเมนนั้นในโฟลเดอร์ใต้ปลายทางนั้น เช่น rclone:onedrive:BombVault/containers Flash, สำรองข้อมูลตัวเอง และชุดข้อมูล ZFS ไม่มีแถว การจัดวาง ส่วนนอกสถานที่ของรายการเหล่านี้จึงมี เพิ่มจาก และชื่อปลายทางแทน
เพิ่มปลายทาง เปิดตัวช่วยห้าขั้นตอน:
- จะส่งข้อมูลสำรองไปที่ใด ทุกบริการแสดงพร้อมโลโก้ แบ่งเป็นสี่กลุ่ม: บริการจัดเก็บที่มีบักเก็ต S3 (Backblaze B2, Wasabi, Cloudflare R2, Hetzner Object Storage, Amazon S3 และอื่น ๆ) เซิร์ฟเวอร์ S3 ของคุณเอง (Garage, SeaweedFS, RustFS, Silo, Ceph, JuiceFS, Versity S3 Gateway) เซิร์ฟเวอร์และแชร์ของคุณเอง (rest-server, Hetzner Storage Box, SFTP, SMB, WebDAV, พาธที่เมาท์ไว้) และที่จัดเก็บบนคลาวด์ (OneDrive, Google Drive, Dropbox, pCloud, Nextcloud และบริการอื่นที่ rclone รองรับ) แต่ละบริการบอกว่าเหมาะกับการสำรองข้อมูลเพียงใด: ไดรฟ์คลาวด์จะช้าลงเมื่อมีคำขอจำนวนมาก การสำรองข้อมูลครั้งแรกและการตัดแต่งจึงใช้เวลานานกว่าที่นั่น
- ลงชื่อเข้าใช้ บริการที่เลือก ช่องที่ต้องกรอกขึ้นกับบริการ: คีย์การเข้าถึงสำหรับ S3, ผู้ใช้และรหัสผ่านสำหรับ WebDAV และ SMB, รหัสผ่านแอปในกรณีที่การยืนยันตัวตนสองขั้นตอนบล็อกรหัสผ่านปกติ, คีย์ SSH สาธารณะของ BombVault สำหรับ SFTP และ Storage Box หรือโทเค็นสำหรับบริการที่ลงชื่อเข้าใช้ผ่านเบราว์เซอร์ สำหรับบริการเหล่านั้น ตัวช่วยจะแสดงคำสั่ง
rclone authorizeให้รันบนคอมพิวเตอร์ที่มีเบราว์เซอร์ แล้วนำโทเค็นที่พิมพ์ออกมาไปใส่ในช่อง ทดสอบการเชื่อมต่อ จะตรวจสอบการลงชื่อเข้าใช้ก่อนที่จะบันทึกสิ่งใด - เลือกโฟลเดอร์ ตัวช่วยแสดงรายการโฟลเดอร์บนปลายทาง พร้อม โฟลเดอร์ใหม่ สำหรับสร้างโฟลเดอร์ และแสดงพื้นที่ว่างเมื่อบริการรายงานมา โฟลเดอร์ว่างปลอดภัยที่สุด
- การป้องกันการลบ ตัวช่วยบอกตรง ๆ ว่าบริการทำอะไรได้บ้าง rest-server ในโหมด append-only ปฏิเสธการลบ และการทดสอบการแทรกแซงจะตรวจสอบสิ่งนั้น บักเก็ต S3 เก็บเวอร์ชันเก่าไว้ได้ด้วยการทำเวอร์ชันและล็อกอ็อบเจ็กต์ ซึ่ง BombVault ยังตรวจสอบไม่ได้ ไดรฟ์คลาวด์ปฏิเสธการลบไม่ได้เลย: ใครเข้าถึงเซิร์ฟเวอร์ได้ก็เข้าถึงสำเนานั้นได้ด้วย เปิด เปลี่ยนแปลงไม่ได้ (append-only) เฉพาะเมื่อปลายทางฝั่งไกลปฏิเสธการลบจริง ๆ เท่านั้น BombVault จะไม่ตัดแต่งที่นั่นเลย
- เผื่อกรณีฉุกเฉิน ชุดกู้คืนจะแสดงรายการทุกปลายทางพร้อมรีพอสิทอรีของแต่ละโดเมนใต้ปลายทางนั้น การลงชื่อเข้าใช้จะกลับมาพร้อมการสำรองข้อมูลการตั้งค่าของ BombVault ส่วนการติดตั้งใหม่ที่ไม่มีมัน ให้ตั้งค่าปลายทางอีกครั้งที่เดิม
บริการ S3 ทำงานผ่านแบ็กเอนด์ S3 ของ restic เอง ซึ่งทำให้คลาสพื้นที่จัดเก็บและการล็อกอ็อบเจ็กต์ใช้งานได้ บริการอื่นทั้งหมดทำงานผ่าน rclone ที่ BombVault แถมมา และรีโมตของมันจะปรากฏในคอนฟิก rclone ภายใต้ การตั้งค่า, การเข้าถึงคลาวด์ การส่งออกการตั้งค่าจะมีปลายทางรวมอยู่ด้วย และหากรวมข้อมูลรับรอง ก็จะมีการลงชื่อเข้าใช้ของปลายทางด้วย
เซิร์ฟเวอร์รับข้อมูลที่อินสแตนซ์อื่นในกลุ่มของคุณรันอยู่จะปรากฏในวิซาร์ดภายใต้ จากกลุ่มของคุณ ดู เซิร์ฟเวอร์รับข้อมูล
เป้าหมายของโดเมนที่สร้างจากปลายทางจะใช้ชื่อ ตำแหน่ง ข้อมูลรับรอง คลาสพื้นที่จัดเก็บ และสวิตช์เปลี่ยนแปลงไม่ได้ของปลายทางนั้น การเก็บรักษา การบีบอัด และงบประมาณการเติบโตยังคงแยกต่อโดเมน และตำแหน่งของมันย้ายไม่ได้เพราะรีพอสิทอรีของโดเมนอยู่ที่นั่น เพิ่มเป้าหมายสำหรับโดเมนนี้เท่านั้น ใต้แต่ละโดเมนยังคงรับ URL รีพอสิทอรีที่พิมพ์เอง
เป้าหมายที่พิมพ์เองและมีรีพอสิทอรีอยู่ในโฟลเดอร์ของปลายทางสามารถเข้าร่วมกับปลายทางนั้นได้ ปลายทางจะแสดงเป้าหมายเหล่านี้ใต้ อยู่ใต้ปลายทางนี้อยู่แล้ว และ รับช่วง จะผูกเป้าหมายหนึ่งเข้ากับปลายทาง เป้าหมายยังคงรีพอสิทอรี สแนปช็อต การเก็บรักษา และการจัดวางของตัวเอง และใช้ชื่อ ข้อมูลรับรอง คลาสพื้นที่จัดเก็บ และสวิตช์เปลี่ยนแปลงไม่ได้ของปลายทาง BombVault จะตรวจก่อนว่าการลงชื่อเข้าใช้ของปลายทางเปิดรีพอสิทอรีได้ และจะไม่ยอมวางเป้าหมายแบบ append-only ไว้ใต้ปลายทางที่ไม่ใช่ append-only การรับช่วงเป้าหมายหลักของโดเมนจะล้างช่อง off-site ของโดเมนนั้น
การจัดวางต่อรายการ¶
การ์ดของแต่ละ container, VM และชุดไฟล์มีแถว การจัดวาง ที่เป็นปุ่ม: ในเครื่อง และหนึ่งปุ่มต่อเป้าหมายนอกสถานที่แต่ละแห่งของโดเมน ตามด้วยปลายทางที่โดเมนยังไม่มีเป้าหมายอยู่ใต้ ปุ่มที่สว่างอยู่จะได้รับการสำรองข้อมูลของรายการ
- เมื่อ ในเครื่อง สว่างอยู่ รายการจะถูกเขียนไปยังรีพอสิทอรีที่แสดงอยู่ใต้ จัดเก็บที่ และคัดลอกไปยังทุกเป้าหมายอื่นที่สว่างอยู่ ปิดเป้าหมายหนึ่ง แล้วเป้าหมายนั้นจะไม่ได้รับสิ่งใหม่จากรายการนี้อีก ในเครื่องอย่างเดียวไม่คัดลอกไปที่ใดเลย เหมาะกับข้อมูลที่มีสำเนาที่สองอยู่แล้ว เช่น แชร์ที่อยู่บน NAS
- เมื่อ ในเครื่อง ดับอยู่ รายการจะถูกเขียนตรงไปยังรีพอสิทอรีโดยตรงของเป้าหมายแรกที่สว่างอยู่ และคัดลอกจากที่นั่นไปยังเป้าหมายอื่นที่สว่างอยู่ ครั้งแรกจะมีกล่องโต้ตอบสร้างรีพอสิทอรีโดยตรงนั้น
- ปุ่มปลายทางจะสร้างเป้าหมายของโดเมนใต้ปลายทางนั้น และทำให้สว่างเฉพาะรายการนี้ รายการอื่นทุกรายการเริ่มต้นโดยไม่มีสำเนาที่นั่น
- ต้องมีหนึ่งปุ่มสว่างอยู่เสมอ เพราะการสำรองข้อมูลต้องมีที่ไป หากต้องการเว้นบางสิ่งจากการสำรองข้อมูล ให้ยกเว้นมัน
ตำแหน่งจะคงที่ตั้งแต่การสำรองข้อมูลครั้งแรกของรายการ เพราะ BombVault ไม่เคยย้ายการสำรองข้อมูลระหว่างรีพอสิทอรี ส่วนสำเนาสามารถเปลี่ยนแปลงได้ตลอดเวลา ปลายทางที่ไม่ได้รับรายการอีกต่อไปจะเก็บสำเนาที่มีอยู่ไว้และตัดแต่งให้เหลือตามการเก็บรักษาของตัวเองในการทำงานนอกสถานที่ครั้งถัดไปของโดเมน ส่วน ลบที่ B2 บนการ์ดจะลบสำเนาเหล่านั้นทันที เมื่อสำเนาบางส่วนไม่มีอยู่ที่อื่นเลย การยืนยันจะแสดงรายการตามวันที่และขอให้พิมพ์ชื่อของรายการ ปลายทางแบบ append-only ไม่สามารถลบสิ่งใดออกได้
ใต้แถวนี้ การ์ดจะบอกว่ารายการนี้ไปที่ใดและมีอะไรอยู่จริง: มีกี่ไซต์ที่ถือครองมัน แต่ละปลายทางถูกพบล่าสุดเมื่อใด และเป็นไปตามกฎ 3-2-1 หรือไม่ ไซต์คือเซิร์ฟเวอร์ที่มีข้อมูลต้นฉบับ ปลายทางนอกสถานที่แต่ละแห่ง และรีพอสิทอรีแต่ละแห่งที่ทำเครื่องหมายเป็น นอกสถานที่ BombVault ตรวจสอบสำเนาและไซต์ แต่ไม่ตรวจสอบส่วน "สื่อสองชนิด" ของกฎ 3-2-1
ค่าเริ่มต้นของการจัดวาง¶
การตั้งค่า, ที่จัดเก็บ, ค่าเริ่มต้นของการจัดวาง มีหนึ่งแถวต่อโดเมนพร้อมปุ่มชุดเดียวกัน สำเนาจะมีผลทันทีกับทุกรายการที่ไม่มีตัวเลือกของตัวเอง และกับโฟลเดอร์โปรเจกต์ของสแต็ก Compose ด้วย ตำแหน่งจะมีผลกับรายการใหม่ตอนสำรองข้อมูลครั้งแรก การเปลี่ยนตำแหน่งไม่ย้ายการสำรองข้อมูลใด ๆ ก่อนบันทึก แถวจะระบุชื่อทุกปลายทางที่ได้หรือเสียรายการไป และจำนวนสแนปช็อตที่หมายถึง ใช้กับรายการที่ไม่มีการสำรองข้อมูล จะนำทุกรายการที่ยังไม่มีการสำรองข้อมูลกลับไปใช้ค่าเริ่มต้น
ปลายทางนอกสถานที่แห่งใหม่จะได้รับทุกรายการที่ไม่ได้ตั้งเป็นในเครื่อง กล่องโต้ตอบที่ใช้เพิ่มปลายทางจะบอกว่ามีกี่รายการ และหากทราบ มีประวัติมากเพียงใด พร้อมเสนอให้ละเว้นรายการที่ถูกยกเว้นจากปลายทางอื่นอยู่แล้ว
รีพอสิทอรีโดยตรง¶
การปิด ในเครื่อง ของรายการ เพื่อให้ปลายทางที่ไม่มีรีพอสิทอรีโดยตรงกลายเป็นที่อยู่ของมัน จะเปิดกล่องโต้ตอบพร้อมตำแหน่งที่แนะนำข้างปลายทาง เช่น s3:https://s3.eu-central-003.backblazeb2.com/bucket/containers-direct และการทดสอบการเชื่อมต่อที่ไม่สร้างสิ่งใดขึ้นมา สร้างและใช้งาน จะสร้างรีพอสิทอรีและชี้รายการไปที่นั่น รีพอสิทอรีโดยตรงจะใช้คีย์ คลาสพื้นที่จัดเก็บ ขีดจำกัด การตั้งค่า append-only และการเก็บรักษาของปลายทาง และเปลี่ยนไปพร้อมกับมัน การ์ดที่เก็บข้อมูลจะแสดงเป็นแบบอ่านอย่างเดียว เมื่อคีย์ใหม่ของปลายทางเปิดมันไม่ได้ รีพอสิทอรีโดยตรงจะเก็บคีย์เดิมไว้และการบันทึกจะแจ้งเช่นนั้น รายการที่อยู่บนรีพอสิทอรีโดยตรงจะถูกคัดลอกจากที่นั่นไปยังปลายทางอื่นที่สว่างอยู่ และไม่เคยไปยังปลายทางที่รีพอสิทอรีนั้นสังกัดอยู่ สแนปช็อตของมันมีแท็ก bv:direct และทุกรอบการตัดแต่งอื่นจะเก็บพวกมันไว้ ดังนั้นรีพอสิทอรีโดยตรงที่ขาดการเชื่อมโยงกับปลายทางของมันจะไม่มีวันเก่าลงตามกฎในเครื่อง เข้าถึง B2 ผ่านปลายทาง S3 ของมัน โดยกรอกรหัสคีย์และคีย์แอปพลิเคชันเป็นข้อมูลรับรอง S3 คีย์ที่จำกัดไว้เฉพาะโฟลเดอร์ของปลายทางเองจะเข้าไม่ถึงโฟลเดอร์ที่อยู่ข้างกัน จึงควรจำกัดคีย์ไว้ที่โฟลเดอร์ระดับบนของปลายทางแทน
นอกสถานที่¶
รีพอสิทอรีที่ตั้งชื่อไว้สามารถทำเครื่องหมายเป็น นอกสถานที่ ได้บนการ์ดที่เก็บข้อมูล รีพอสิทอรีระยะไกลเริ่มต้นด้วยเครื่องหมายนี้ ให้ปิดมันสำหรับ rest-server ที่อยู่ในอาคารเดียวกัน เครื่องหมายนี้นับเฉพาะไซต์และกฎ 3-2-1 บนการ์ดเท่านั้น ไม่เปลี่ยนแปลงสำเนาใด ๆ
หลังการสร้างใหม่¶
ตัวเลือกสำเนาอยู่ในการตั้งค่าของ BombVault เอง หลังการสร้างใหม่ผ่าน ค้นหาการสำรองข้อมูล โดยไม่มี /config ที่กู้คืนมา ตัวเลือกเหล่านั้นจะหายไป และการคัดลอกทุกอย่างจะส่งรายการที่คุณเคยละไว้กลับไปที่ B2 อีกครั้ง การจำลองข้อมูลนอกสถานที่ของทุกโดเมนที่สร้างใหม่จึงหยุดชั่วคราว แดชบอร์ดจะแสดงเป็นสีเหลืองอำพัน และค่าเริ่มต้นของการจัดวางจะเสนอ ยืนยันค่าเริ่มต้น พร้อมตัวอย่างของสิ่งที่การทำงานครั้งถัดไปจะคัดลอก และชื่อในสำเนาสำรองที่ไม่มีรายการที่ตรงกัน ซึ่งคุณสามารถละไว้ที่นั่นได้ มีแต่การยืนยันเท่านั้นที่จะยุติการหยุดชั่วคราว การนำเข้าไฟล์การตั้งค่าจะนำกฎและค่าเริ่มต้นกลับมาแต่ไม่ยุติการหยุดชั่วคราว
ที่เก็บหลักระยะไกล¶
เส้นทางสำรองของโดเมน (การตั้งค่า, ที่จัดเก็บ) ไม่ได้จำกัดอยู่แค่โฟลเดอร์ในเครื่อง ชี้ตรงไปยังปลายทาง restic ระยะไกลได้เลย (s3:..., rest:http://host:8000/repo, sftp:user@host:/repo, rclone:remote:bucket/path) แล้ว BombVault จะสำรองไปที่นั่นโดยตรง ไม่มีสำเนาในเครื่องแยกต่างหากและไม่มีขั้นตอนการทำซ้ำ นี่เป็นรูปแบบที่ต่างจากการทำซ้ำนอกสถานที่ข้างต้นอย่างแท้จริง ที่นั่นที่เก็บในเครื่องเป็นหลักและที่เก็บนอกสถานที่เป็นคลังสำรองเท่าที่ทำได้ ส่วนที่นี่ที่เก็บระยะไกล คือ ตัวหลัก และเป็นสำเนาเดียวตราบใดที่คุณยังไม่ตั้งค่าการทำซ้ำนอกสถานที่ (หรือปลายทางระยะไกลที่สอง) ให้โดเมนนั้นเพิ่มเติม
ช่องเส้นทางทั้งหก (Containers, VMs, Flash, สำรองข้อมูลตัวเอง, โฟลเดอร์, ชุดข้อมูล ZFS) มีสวิตช์ ในเครื่อง / ระยะไกล อยู่ติดกันทุกช่อง
- ในเครื่อง แสดงตัวเรียกดูโฟลเดอร์แบบที่คุ้นเคย
- ระยะไกล เปลี่ยนเป็นช่อง URL ธรรมดา พร้อมปุ่มที่เปิดกล่องทดสอบการเชื่อมต่อและข้อมูลรับรองชุดเดียวกับที่ปลายทางนอกสถานที่ใช้ เพียงแต่ตั้งค่าไว้สำหรับที่เก็บหลักนี้ จากตรงนั้นคุณจะได้:
- การทดสอบการเชื่อมต่อ กับเส้นทางจริง ก่อนที่คุณจะพึ่งพามัน
- ขีดจำกัดแบนด์วิดท์ (อัปโหลดและดาวน์โหลด) เพื่อไม่ให้การสำรองตามกำหนดเวลาไปยังที่เก็บหลักระยะไกลกินสาย WAN จนเต็ม เป็นพารามิเตอร์ restic
--limit-uploadและ--limit-downloadชุดเดียวกับที่การทำซ้ำนอกสถานที่ใช้ แต่คราวนี้ใช้กับการสำรองเอง - การป้องกันแบบเพิ่มได้อย่างเดียว (ไม่เปลี่ยนแปลง) ตรวจสอบด้วยการทดสอบการแก้ไขเชิงรุกแบบเดียวกัน (การทดลอง DELETE จริงไปยังฝั่งตรงข้าม) ที่ปลายทางนอกสถานที่ได้รับ เมื่อเปิดไว้ BombVault จะปฏิเสธการตัดแต่งที่เก็บนี้เอง เพราะเมื่อไม่มีสำเนาในเครื่องแยกอยู่เบื้องหลัง ข้อมูลรับรองบนเครื่องนี้ต้องไม่สามารถลบสำเนาเดียวของข้อมูลสำรองได้
- การเตือนงบประมาณการเติบโต ดึงมาจากแนวโน้มขนาดที่เก็บชุดเดียวกับที่การ์ดที่จัดเก็บติดตามอยู่แล้ว
ไม่มีข้อใดเป็นข้อบังคับ เส้นทางระยะไกลที่พิมพ์เองโดยไม่บันทึกการตั้งค่าความปลอดภัยจะสำรองเหมือนเดิมทุกประการ (แบนด์วิดท์ไม่จำกัด ตัดแต่งได้ ไม่มีการเตือนงบประมาณ) กล่องตั้งค่าความปลอดภัยมีไว้สำหรับตอนที่คุณอยากได้การปกป้องแบบเดียวกับที่สำเนานอกสถานที่ได้รับ โดยไม่ต้องสร้างปลายทางนอกสถานที่ขึ้นมาเพียงเพื่อการนั้น
ข้อมูลรับรองคลาวด์และ REST ใช้ร่วมกัน
ที่เก็บหลักระยะไกลยืนยันตัวตนด้วยข้อมูลรับรอง S3/REST ชุดเดียวกับที่ตั้งไว้ใน ตั้งค่า, การเข้าถึงคลาวด์, ข้อมูลรับรองคลาวด์ที่ใช้ร่วมกัน ไม่มีที่เก็บข้อมูลรับรองแยกต่างหากสำหรับที่เก็บหลัก
SMB และ WebDAV โดยไม่ต้องเมานต์บนโฮสต์¶
การตั้งค่า, การเข้าถึงคลาวด์, rclone มีฟอร์มสำหรับแชร์ Windows หรือ Samba และสำหรับเซิร์ฟเวอร์ WebDAV (Nextcloud, ownCloud, SharePoint หรืออื่น ๆ) กรอกชื่อสั้น ๆ โฮสต์และแชร์ (SMB) หรือ URL และประเภทเซิร์ฟเวอร์ (WebDAV) ผู้ใช้ และรหัสผ่าน แล้ว BombVault จะเขียนส่วน rclone ให้คุณ rclone จะอำพรางรหัสผ่านเองก่อนที่จะถูกจัดเก็บ การเพิ่มปลายทางด้วยชื่อที่มีอยู่แล้วจะแทนที่ส่วนนั้นแทนที่จะเพิ่มส่วนที่สอง
ฟอร์มจะตอบกลับด้วยตำแหน่งที่เสร็จสมบูรณ์ เช่น rclone:nas:backups ใส่สิ่งนั้นลงใน พาธการสำรองข้อมูล หรือปลายทางนอกสถานที่ และเพิ่มโฟลเดอร์ย่อยถ้าต้องการ (rclone:nas:backups/bombvault) แชร์คือส่วนแรกของพาธ ไม่ใช่ส่วนหนึ่งของชื่อ
นี่เป็นทางที่ดีกว่าการเมานต์แชร์บน Unraid: restic แนะนำไม่ให้เก็บรีพอสิทอรีบนแชร์ CIFS ที่เมานต์ไว้ และที่นี่ไม่มีอะไรถูกเมานต์ NFS ไม่อยู่ในฟอร์มเพราะทั้ง restic และ rclone ไม่มีแบ็กเอนด์ NFS สำหรับ NFS ให้เมานต์ export บนโฮสต์แล้วชี้ พาธการสำรองข้อมูล ไปที่นั่น
นอกสถานที่แบบไม่เปลี่ยนแปลงได้ (append-only)¶
ตั้งแฟล็กรีพอสิทอรีนอกสถานที่เป็น append-only เพื่อให้แรนซัมแวร์หรือโฮสต์ที่ถูกบุกรุกไม่สามารถลบหรือเขียนทับการสำรองข้อมูลของคุณได้ ฝั่งไกล (restic/rest-server ที่ทำงานในโหมด --append-only) เป็นผู้ บังคับใช้ BombVault เพียง ตรวจสอบ มันเท่านั้นและไม่เคยแสดงสีเขียวจากการอ้างการตั้งค่าเพียงอย่างเดียว
ตัวช่วย การตั้งค่านอกสถานที่แบบมีคำแนะนำ จะพาคุณจากการเลือกแบ็กเอนด์ (rest-server / rclone / S3) ผ่านสนิปเปตการดีพลอย rest-server ที่พร้อมวาง, การทดสอบการเชื่อมต่อ, สวิตช์ไม่เปลี่ยนแปลงได้ (ซึ่งรันการทดสอบการแทรกแซงทันที) และกลยุทธ์การเก็บรักษา ดังนั้นนอกสถานที่แบบ append-only จึงเข้าถึงได้โดยไม่ต้องแก้ไขไฟล์กำหนดค่าด้วยมือ
การลบสำเร็จภายใต้ /locks/ เป็นพฤติกรรมที่คาดไว้
append-only ไม่ได้แปลว่าไม่สามารถลบอะไรได้อีกเลย restic ต้องสร้างและปลดล็อกของตัวเอง ดังนั้น /locks/ จึงยังคงเขียนและลบได้โดยเจตนา สแนปช็อตและข้อมูลที่อยู่เบื้องหลัง ซึ่งเป็นสิ่งที่แรนซัมแวร์มุ่งเป้า ไม่สามารถถูกลบได้ หากคุณทดสอบฝั่งปลายทางด้วยตนเอง การลบที่สำเร็จภายใต้ /locks/ คือพฤติกรรมที่ถูกต้อง ไม่ใช่ช่องโหว่ของการป้องกัน
รีพอสิทอรีแบบไม่เปลี่ยนแปลงได้จะไม่เคยถูกตัดทิ้งจากเครื่องนี้
นอกสถานที่แบบไม่เปลี่ยนแปลงได้จะไม่เคยตัดสแนปช็อตเก่าโดยเจตนา ตั้ง สัญญาณเตือนงบประมาณการเติบโต ให้มันเพื่อให้คุณได้รับการแจ้งเตือนก่อนที่ขนาดรีพอสิทอรีจะโตเกินควบคุม
การทดสอบการแทรกแซง¶
BombVault พิสูจน์การรับประกัน append-only เป็นระยะโดยการพยายามลบจริงกับรีพอสิทอรีนอกสถานที่ โดยเล็งไปที่อ็อบเจกต์ที่ไม่มีอยู่จริง:
- ถูกปฏิเสธ หมายถึงได้รับการปกป้อง
- ยอมรับ หมายถึงไม่ได้รับการปกป้อง
- ผลลัพธ์ ที่ไม่สรุปแน่ชัด (เซิร์ฟเวอร์เข้าถึงไม่ได้, ข้อผิดพลาดการยืนยันตัวตน) จะไม่เคยพลิกคำตัดสินที่จัดเก็บไว้
การพลิกจากได้รับการปกป้องเป็นไม่ได้รับการปกป้องจริงจะจุดสัญญาณเตือนครั้งเดียว
การซ้อม DR¶
BombVault มีการพิสูจน์สองระดับว่าการสำรองข้อมูลของคุณกู้คืนได้จริง ไม่ใช่แค่มีอยู่
- การซ้อมตรวจสอบการกู้คืน (ในเครื่อง) BombVault รัน
restic check --read-data-subsetเป็นระยะ (แบบมีขอบเขต, ไม่เคยเป็นการกู้คืนเต็มที่ทำให้ดิสก์เต็ม) และแสดงป้าย ตรวจสอบแล้วว่ากู้คืนได้ ต่อโดเมน จังหวะอยู่บน การตั้งค่า, กำหนดการ; ป้ายอยู่บน การตั้งค่า, ความสมบูรณ์ - การซ้อม DR (นอกสถานที่) BombVault กู้คืนเป้าหมายจริงจากรีพอสิทอรีนอกสถานที่ลงในแซนด์บ็อกซ์ที่ใช้แล้วทิ้ง, ตรวจสอบทีละไฟล์และทีละไบต์ แล้วทำความสะอาด สิ่งนี้พิสูจน์ว่าคุณกู้คืนจากนอกสถานที่ได้ ไม่ใช่แค่ว่ารีพอสิทอรีตอบสนอง
สกอร์การ์ดการป้องกันแรนซัมแวร์ บนแดชบอร์ดจะรวมสิ่งนี้เป็นท่าที เขียว / เหลือง / แดง ต่อโดเมน พร้อมรายการตรวจสอบที่ประทับอายุ (ตั้งค่านอกสถานที่แล้ว, ตรวจสอบ append-only แล้ว, การจำลองข้อมูลเป็นปัจจุบัน, การซ้อมกู้คืนผ่าน, เปิดการเข้ารหัส, ตั้งกลยุทธ์การตัดทิ้ง) ทุกแถวสีแดงจะลิงก์ลึกไปยังวิธีแก้ไข และการ์ดจะเป็นสีเขียวเฉพาะเมื่อมีข้อเท็จจริงที่ตรวจสอบแล้ว
การจับคู่อินสแตนซ์¶
ตัวรับ, แหล่งฝั่งดึง, หน้าอินสแตนซ์ และ Mesh off-site ล้วนคุยกับ BombVault อีกตัวหนึ่ง ทั้งหมดทำแบบนั้นในฐานะสมาชิกของกลุ่มการจับคู่กลุ่มเดียว และอินสแตนซ์จะเข้าร่วมกลุ่มด้วยคำสิบสองคำ
บนอินสแตนซ์แรก เปิด การตั้งค่า → การจับคู่ แล้วกดปุ่ม สร้างวลี ในการ์ดการจับคู่ คำสิบสองคำจะปรากฏขึ้นในหน้าต่างที่มีปุ่ม คัดลอก บนอินสแตนซ์อื่นทุกตัว เปิดที่เดียวกัน กดปุ่ม ป้อนวลี แล้ววางหรือพิมพ์คำเหล่านั้น หรือกดปุ่ม วาง ในหน้าต่างนั้น คำที่ไม่อยู่ในรายการจะถูกระบุพร้อมตำแหน่งของมันทันทีที่พิมพ์ และคำสุดท้ายมีเช็คซัมอยู่ ดังนั้นคำที่พิมพ์ผิดหรือสลับที่กันจะถูกจับได้ก่อนที่การจับคู่ใด ๆ จะเกิดขึ้น สร้างวลีบนอินสแตนซ์เดียวเท่านั้น เพราะอินสแตนซ์สองตัวที่ต่างสร้างวลีของตัวเองจะกลายเป็นสองกลุ่มที่แยกจากกัน ถ้าไม่มีใครปรากฏตัวภายในหนึ่งนาที แท็บจะเสนอทางออกสองแบบ คือแสดงคำเหล่านั้นอีกครั้งเพื่อป้อนที่อีกฝั่ง หรือป้อนคำของอินสแตนซ์อีกฝั่งแล้วเข้าร่วมกลุ่มของมันในขั้นตอนเดียว การจับคู่ทำงานได้แม้ไม่มีรหัสผ่านเข้าสู่ระบบ แต่ควรตั้งไว้ เพราะถ้าไม่ตั้ง ใครก็ตามที่เปิดหน้าเว็บนี้ได้จะอ่านคำเหล่านั้นได้ และผ่านทางกลุ่มจะได้รหัสผ่าน restic ของทุกอินสแตนซ์ในกลุ่มนั้นไปด้วย การ์ดการจับคู่จะแจ้งเรื่องนี้ไว้จนกว่าจะตั้งรหัสผ่าน เมื่อมีรหัสผ่านแล้ว การแสดงวลีอีกครั้งจะถามหารหัสผ่านนั้น ออกจากกลุ่ม จะนำอินสแตนซ์ออกจากกลุ่มอีกครั้ง
ใครก็ตามที่รู้คำเหล่านั้นสามารถเข้าร่วมกลุ่มได้ ดังนั้นจงปฏิบัติกับมันเหมือนรหัสผ่าน
สมาชิกเข้าถึงกันได้อย่างไร แต่ละอินสแตนซ์จะเรียนรู้ที่อยู่ของตัวเองบนเครือข่ายจากเบราว์เซอร์ของคุณทันทีที่คุณเข้าสู่ระบบ ซึ่งแสดงอยู่ในการ์ดรีเลย์เป็น อินสแตนซ์นี้ในเครือข่ายของคุณ แก้ไขที่นั่นได้หากมี reverse proxy หรือพอร์ตที่ไม่ปกติอยู่ด้านหน้า ในเครือข่ายเดียวกัน สมาชิกจะประกาศที่อยู่นั้นผ่านมัลติแคสต์และคุยกันโดยตรง และในจุดที่มัลติแคสต์ข้ามเครือข่ายคอนเทนเนอร์ไม่ได้ เช่น เครือข่ายบริดจ์เริ่มต้นของ Docker อินสแตนซ์จะค้นหาซับเน็ตของตัวเองแทนเพื่อหาตัวอื่น ๆ ด้วยการเรียกที่มีลายเซ็นซึ่งมีเพียงสมาชิกในกลุ่มเท่านั้นที่ตอบได้ ทำให้การจับคู่ยังเสร็จภายในไม่กี่วินาทีโดยไม่ต้องใช้รีเลย์ ถ้าหาไม่เจอ หาไม่เจอหรือไม่ ใต้การ์ดการจับคู่จะรับที่อยู่ด้วยมือ สำหรับซับเน็ตอื่นหรือพอร์ตที่ไม่มาตรฐาน อินสแตนซ์ในเครือข่ายต่างกันจะผ่านรีเลย์ ซึ่งเลือกได้ในแท็บเดียวกัน:
- รีเลย์ของโครงการ (ค่าเริ่มต้น):
parleyport.halleluja.designรีเลย์เดียวกับที่ KnightLoader ใช้ ไม่ต้องตั้งค่าอะไร - รีเลย์ของตัวเอง: คอนเทนเนอร์ ParleyPort จาก Unraid Community Apps หรืออินสแตนซ์หนึ่งของคุณที่เข้าถึงได้จากภายนอกอยู่แล้วโดยเปิด ทำหน้าที่เป็นรีเลย์ ไว้ อินสแตนซ์นั้นจะตอบสนองที่
/relay/connectบนที่อยู่ของตัวเอง อยู่หลัง reverse proxy และใบรับรองที่มันมีอยู่แล้ว และให้เฉพาะกลุ่มของคุณเข้าได้เท่านั้น ใส่ที่อยู่ของรีเลย์ในทุกอินสแตนซ์ที่ควรใช้มัน - ไม่ใช้รีเลย์: สมาชิกจะหากันเจอโดยอัตโนมัติเฉพาะในเครือข่ายเดียวกัน และที่อื่นจะไม่เจอกันเลย
สิ่งที่รีเลย์เห็น ทุกการเรียกระหว่างสมาชิกถูกปิดผนึกด้วย AES-256-GCM ภายใต้คีย์ที่ได้จากคำสิบสองคำ และคีย์นั้นไม่เคยออกจากอินสแตนซ์ของคุณ รีเลย์รู้เพียงแฮชที่จัดกลุ่มการเชื่อมต่อ, อินสแตนซ์ใดที่ข้อความมีปลายทางถึง, ขนาดของมันเท่าไร และเมื่อใดที่มันผ่านไป การเรียกโดยตรงในเครือข่ายท้องถิ่นก็ถูกปิดผนึกแบบเดียวกันและมีการเซ็นกำกับด้วย ดังนั้นจึงไม่มีอะไรขึ้นอยู่กับใบรับรองแบบ self-signed ที่อินสแตนซ์ใช้งานอยู่
สิ่งที่เดินทางผ่านกลุ่ม สกอร์การ์ดในหน้าอินสแตนซ์, คำขอให้ตรวจโดเมนหนึ่งตอนนี้เลย, ข้อเสนอพื้นที่จัดเก็บนอกสถานที่จาก Mesh และสิ่งที่ตัวรับหรือแหล่งฝั่งดึงต้องใช้ ได้แก่ ตำแหน่งรีพอสิทอรีของอินสแตนซ์อีกฝั่งและรหัสผ่าน restic ของมัน ข้อมูลสำรองไม่เคยผ่านเลย มันยังคงไปยังแบ็กเอนด์ของ restic โดยตรงเสมอ และ APP_KEY ก็ไม่เช่นกัน รหัสผ่าน restic เปิดได้แค่รีพอสิทอรีของอินสแตนซ์นั้นเท่านั้น ไม่ใช่ความลับที่เก็บไว้, เซสชัน หรือรหัสกู้คืนของมัน
รายการจากก่อนมีการจับคู่ อินสแตนซ์ที่เพิ่มด้วยโทเคนกองเรือ และตัวรับกับแหล่งฝั่งดึงที่ตั้งค่าด้วย APP_KEY ของอินสแตนซ์อีกฝั่ง จะยังอยู่ต่อหลังการอัปเดตและถูกทำเครื่องหมายว่า จับคู่ใหม่ ตัวรับและแหล่งฝั่งดึงยังคงทำงานต่อไปได้: ในการเริ่มทำงานครั้งแรก BombVault จะแทนที่ APP_KEY ที่เก็บไว้แต่ละตัวด้วยรหัสผ่าน restic ที่ได้จากมัน จับคู่อินสแตนซ์ทั้งสองตัว แล้วแก้ไขรายการนั้นและเลือกอินสแตนซ์ของมัน อินสแตนซ์เช่นนี้จะรับช่วงการ์ดเดิมของมันทันทีที่อินสแตนซ์ที่มีชื่อเดียวกันปรากฏขึ้นในกลุ่ม
ที่เดียวที่ยังคงรับ APP_KEY แบบใส่เองอยู่คือ กู้คืนจากรีพอสิทอรี BombVault อื่น สำหรับกรณีที่อินสแตนซ์อีกฝั่งหายไปและไม่สามารถตอบในกลุ่มได้
แดชบอร์ดผู้รับ (ฝั่งรับ)¶

ฝั่งผู้รับ ถูกเฝ้าดูแบบอ่านอย่างเดียว พร้อมการตรวจความสมบูรณ์ที่รันบนเครื่องนี้
ทุกอย่างข้างต้นเป็นฝั่ง ส่ง บนเครื่องที่ รับ สำเนานอกสถานที่แบบไม่เปลี่ยนแปลงได้จาก BombVault อีกตัว แดชบอร์ดผู้รับให้คุณมีการเฝ้าติดตามแบบอิสระและอ่านอย่างเดียวของรีพอสิทอรีเหล่านั้นบนฮาร์ดแวร์ผู้รับ ดังนั้นความล้มเหลวแบบเงียบที่ฝั่งไกลจึงไม่ผ่านไปโดยไม่มีใครสังเกต
เปิดสวิตช์ ตัวรับ ใน การตั้งค่า เพื่อเผยแท็บ ตัวรับ ปิดโดยค่าเริ่มต้น; เปิดเฉพาะบนเครื่องที่รับการสำรองข้อมูลนอกสถานที่แบบไม่เปลี่ยนแปลงได้จริงเท่านั้น จากนั้นลงทะเบียนรีพอสิทอรีที่ได้รับ (อ่านอย่างเดียว, เปิดด้วยรหัสผ่าน restic ของอินสแตนซ์ผู้ส่ง ซึ่งได้รับมาผ่านกลุ่มการจับคู่) เพื่อให้ได้:
- รายการสแนปช็อตที่จัดกลุ่มตามแหล่งที่มา ดังนั้นคุณสามารถเห็นได้แน่ชัดว่า containers, VMs และชุดไฟล์ใดที่มาถึงแล้ว
- เวลาที่ได้รับล่าสุด ต่อแหล่ง ดังนั้นคุณจึงรู้ว่าแต่ละรายการสดใหม่แค่ไหน
restic checkแบบอิสระ ที่รันบนฮาร์ดแวร์ผู้รับ ดังนั้นความสมบูรณ์จึงได้รับการตรวจสอบ ณ ที่ที่ข้อมูลอยู่จริง ไม่ใช่แค่บนผู้ส่ง- dead-man's switch: การแจ้งเตือนเมื่อแหล่งหนึ่งหยุดส่งภายในกรอบเวลาที่คุณตั้ง
- การแจ้งเตือนความสมบูรณ์: การแจ้งเตือนเมื่อการตรวจสอบที่ฝั่งรับล้มเหลว
ตัวรับเป็นแบบอ่านอย่างเดียวอย่างเคร่งครัด มันไม่เคยเขียนลงรีพอสิทอรีที่ได้รับ ดังนั้นจึงไม่มีทางทำลายการรับประกัน append-only ที่ผู้ส่งพึ่งพา
เซิร์ฟเวอร์รับข้อมูล¶
เครื่องที่รับข้อมูลยังรัน rest-server ที่เครื่องอื่นคัดลอกมาลงได้ด้วย ตั้งค่าเซิร์ฟเวอร์รับข้อมูล ที่ด้านบนของแท็บตัวรับจะถามหาโฟลเดอร์บนแชร์ โดยมี โฟลเดอร์ใหม่ ไว้สร้างโฟลเดอร์ และพอร์ต (8000 หากไม่มีคอนเทนเนอร์อื่นใช้อยู่) จากนั้น BombVault จะ:
- ปฏิเสธหากมีคอนเทนเนอร์ชื่อ
rest-serverอยู่แล้ว หรือมีคอนเทนเนอร์อื่นใช้พอร์ตนั้นอยู่ - ดึง
restic/rest-serverแล้วเริ่มผ่านซ็อกเก็ต Docker ในโหมด append-only พร้อมรีพอสิทอรีส่วนตัวและไฟล์ล็อกอินในโฟลเดอร์นั้น - เขียนเทมเพลต Unraid ของมันลงแฟลชไดรฟ์ เพื่อให้คอนเทนเนอร์ยังแก้ไขได้ในแท็บ Docker หรือเสนอเทมเพลตให้ดาวน์โหลดเมื่อเข้าถึงแฟลชไดรฟ์ไม่ได้
- รันการทดสอบการแทรกแซงกับมัน และแสดงว่ามันปฏิเสธการลบหรือไม่
อินสแตนซ์ในกลุ่มของคุณจะพบเซิร์ฟเวอร์นี้ในวิซาร์ดปลายทางภายใต้ จากกลุ่มของคุณ โดยใช้ชื่อของเครื่องที่รับข้อมูล แต่ละอินสแตนซ์จะได้ล็อกอินของตัวเองเมื่อเลือกเซิร์ฟเวอร์ครั้งแรก และเขียนเฉพาะลงโฟลเดอร์ของตัวเองที่นั่น การ์ดแสดงรายการล็อกอินเหล่านี้ และ เพิกถอนการลงชื่อเข้าใช้ จะถอนอันหนึ่งออก สิ่งที่อินสแตนซ์นั้นคัดลอกไปแล้วจะยังอยู่ในโฟลเดอร์ การตั้งค่ายังสร้างล็อกอินหนึ่งรายการสำหรับผู้ที่อยู่นอกกลุ่ม ซึ่งการ์ดจะแสดงรหัสผ่านให้เห็นเพียงครั้งเดียว
อินสแตนซ์ที่ติดต่อเครื่องรับข้อมูลได้ผ่านรีเลย์เท่านั้นจะใช้เซิร์ฟเวอร์นี้ไม่ได้ เพราะรีเลย์ไม่ส่งต่อข้อมูลสำรอง ให้เพิ่มที่อยู่ของเครื่องรับข้อมูลที่การตั้งค่า, การจับคู่ก่อน เมื่อ BombVault ทำงานบนที่อยู่ IP ของตัวเอง (เช่นบน br0) ให้กรอก ที่อยู่สำหรับพาร์ตเนอร์ เพราะเซิร์ฟเวอร์ฟังอยู่ที่ที่อยู่ของโฮสต์
ตัวอย่างใช้งานจริง: เครื่อง Unraid สองเครื่อง ตั้งแต่ต้นจนจบ¶
ด้านบนอธิบายชิ้นส่วนต่าง ๆ ตรงนี้คือการติดตั้งที่สมบูรณ์หนึ่งชุดพร้อมค่าจริง เพราะชิ้นส่วนจะประกอบง่ายขึ้นมากเมื่อเคยเห็นมันประกอบเสร็จสักครั้ง
สองเครื่อง: TOWER รันคอนเทนเนอร์และส่งข้อมูลสำรอง ส่วน VAULT รับและบังคับความไม่เปลี่ยนแปลง แทนที่ด้วยชื่อ ที่อยู่ และพาธแชร์ของคุณเอง
1. บน VAULT ให้ตั้งเซิร์ฟเวอร์แบบเพิ่มได้อย่างเดียว ใน BombVault บน TOWER ไปที่ การตั้งค่า → นอกสถานที่ → ตั้งค่า เลือก rest-server แล้วสร้างสูตร คัดลอกแท็บ เทมเพลต Unraid (XML) บันทึกบน VAULT เป็น /boot/config/plugins/dockerMan/templates-user/my-rest-server.xml จากนั้น Docker → Add Container แล้วเลือก rest-server จากรายการเทมเพลต ก่อนเริ่มทำงาน ให้เขียนบรรทัด htpasswd ที่แสดงลงใน /mnt/user/appdata/rest-server/.htpasswd บน VAULT รหัสผ่านใช้ครั้งเดียวจะแสดงเพียงครั้งเดียวและไม่ถูกเก็บไว้ ให้คัดลอกตอนนี้ บรรทัดนั้นมีรหัสผ่านเดียวกันที่แฮชด้วย bcrypt ให้แล้ว ข้อความธรรมดาใส่ในข้อมูลรับรอง REST บน TOWER ส่วนบรรทัดที่แฮชแล้วใส่ใน .htpasswd บน VAULT คุณไม่ต้องแฮชอะไรเอง
ปล่อย `--append-only` ไว้ในช่อง OPTIONS นี่คือหัวใจทั้งหมด หากไม่มี VAULT ก็กลับเป็นแชร์ธรรมดาอีกครั้ง
2. บน TOWER ให้ชี้ที่เก็บนอกสถานที่มาที่นี่ URL ของที่เก็บเป็นไปตามรูปแบบที่สูตรพิมพ์ออกมา:
rest:http://VAULT:8000/bombvault-containers/containers
ส่วนแรกของพาธคือผู้ใช้ htpasswd ส่วนที่สองคือที่เก็บ ใส่ผู้ใช้และรหัสผ่านที่สร้างขึ้นเป็นข้อมูลรับรอง REST ของปลายทาง แล้วรัน การทดสอบการเชื่อมต่อ
3. บน TOWER ให้เปิด „ไม่เปลี่ยนแปลง” การทดสอบการแก้ไขจะรันทันทีและต้องแจ้งว่า ได้รับการป้องกัน ความหมายของแต่ละผลลัพธ์:
| ผลลัพธ์ | เกิดอะไรขึ้น |
|---|---|
| ได้รับการป้องกัน | VAULT ปฏิเสธการลบ นี่คือสถานะที่ผ่านเพียงสถานะเดียว |
| ไม่ได้รับการป้องกัน | VAULT ยอมรับการลบ ไม่มี --append-only หรือถูกเอาออกไป |
| สรุปไม่ได้ | ไม่ใช่ทั้งสองอย่าง ส่วนใหญ่เป็นเพราะ URL ไม่ใช่อันที่ restic ใช้เอง หรือข้อมูลรับรองเปลี่ยนไป จะไม่มีการบันทึกและไม่มีการแจ้งเตือน |
4. บน VAULT ให้ดูว่ามีอะไรเข้ามา จับคู่สองเครื่องนี้เข้าด้วยกัน (การจับคู่อินสแตนซ์) เปิด การตั้งค่า → ทั่วไป → ตัวรับ เปิดแท็บ ตัวรับ แล้วลงทะเบียนที่เก็บแบบอ่านอย่างเดียวโดยระบุ TOWER เป็นอินสแตนซ์ฝั่งส่ง
ตำแหน่งคือพาธภายในคอนเทนเนอร์ เขียนแบบสัมพัทธ์กับจุดเมานต์ของโฮสต์
ให้ใส่ user/appdata/rest-server/bombvault-containers/containers ไม่ใช่ /mnt/user/appdata/… BombVault ทำงานในคอนเทนเนอร์ที่ /mnt ของโฮสต์ถูกเมานต์ไว้ที่อื่น พาธสัมบูรณ์ของโฮสต์จึงไม่มีอยู่ในนั้น หากคุณวางลงไป BombVault จะบอกพาธสัมพัทธ์ที่ควรใช้แทน
VAULT จะได้รับรหัสผ่าน restic ของ TOWER ผ่านกลุ่มเมื่อคุณบันทึก ไม่มีใครต้องพิมพ์คีย์เอง
5. ถ้าต้องการ ให้ทำแบบสองทาง ทำห้าขั้นตอนเดิมซ้ำในทิศทางกลับกัน: rest-server บน TOWER ที่รับสำเนาของ VAULT แล้วแต่ละเครื่องจะบังคับความไม่เปลี่ยนแปลงให้อีกเครื่อง และไม่มีเครื่องใดลบข้อมูลสำรองของอีกเครื่องได้
การกู้คืนแบบมีคำแนะนำ¶
แท็บ การกู้คืน โดยเฉพาะจะพาการติดตั้งใหม่หรือสร้างขึ้นใหม่ผ่านกรณีภัยพิบัติในที่เดียว:
- กู้คืนการตั้งค่าของ BombVault เองก่อน ดังนั้นพาธการสำรองข้อมูล, ปลายทางนอกสถานที่ และข้อมูลรับรองที่ขั้นตอนที่เหลือต้องการจะถูกเติมไว้ล่วงหน้า (นำไปใช้ผ่านการรีสตาร์ทตัวเองผ่าน Docker socket ดังนั้นฐานข้อมูลการตั้งค่าที่กำลังทำงานจึงไม่เคยถูกเขียนทับภายใต้ handle ที่เปิดอยู่)
- ตรวจสอบว่า BombVault อ่านการสำรองข้อมูลของคุณได้ (ปัญหาคีย์เข้ารหัสตั้งแต่ต้น)
- ให้คุณ ชี้ไปยังรีพอสิทอรีที่มีอยู่ของคุณ (ในเครื่องหรือนอกสถานที่)
- ค้นพบ containers, VMs, ชุดไฟล์ และชุดข้อมูล ZFS ที่จัดเก็บอยู่ในนั้น
- กู้คืน containers และ VMs ในครั้งเดียว (ปล่อยให้หยุดไว้ เพื่อให้คุณเริ่มพวกมันอย่างตั้งใจ) และแสดงชุดไฟล์กับรายการ ZFS ให้กู้คืนทีละรายการ รายการ ZFS จะกลับมาในสถานะปิด ชุดกู้คืนของคุณอยู่ห่างเพียงคลิกเดียว
การย้ายที่วางแผนไว้ เทียบกับ ภัยพิบัติ
การกู้คืนแบบมีคำแนะนำจะกู้คืนการตั้งค่าของ BombVault เองจากการสำรองข้อมูล สำหรับการย้ายไปยังเครื่องใหม่ที่ วางแผนไว้ คุณสามารถนำการตั้งค่าของคุณไปได้โดยตรงด้วยการ์ด ส่งออก / นำเข้าการตั้งค่า (ไฟล์ JSON ที่พกพาได้) แทน ดู Configuration
กู้คืนจากรีพอสิทอรี BombVault อื่น¶
การ์ดแยกต่างหากบนแท็บ การกู้คืน จะเปิดรีพอสิทอรีของอินสแตนซ์ BombVault อื่น (แชร์ที่เมานต์ภายใต้ /mnt หรือ URL ระยะไกล) ด้วย APP_KEY ของอินสแตนซ์นั้น ในเซสชันแบบครั้งเดียวและอ่านอย่างเดียว เรียกดู containers, VMs และชุดไฟล์ที่จัดเก็บอยู่ที่นั่น, เลือกสแนปช็อตและกู้คืนมัน แล้วอ็อบเจกต์ที่กู้คืนจะกลายเป็น container, VM หรือชุดไฟล์ในเครื่องปกติ ไม่มีอะไรถูกเขียนลงรีพอสิทอรีอื่นเลย และการตั้งค่าการสำรองข้อมูลของคุณเองยังคงไม่ถูกแตะต้อง (เซสชันอยู่ในหน่วยความจำและหมดอายุเอง) การย้าย container จากเซิร์ฟเวอร์ A ไปยังเซิร์ฟเวอร์ B ไม่ได้หมายถึงการชี้การตั้งค่ารีพอสิทอรีของคุณใหม่และย้อนกลับหลังจากนั้นอีกต่อไป การ์ดนี้ใช้ครั้งเดียว: มันเปิดเซสชัน กู้คืนสิ่งที่คุณเลือก แล้วลืมอินสแตนซ์อีกตัวไป ถ้าคุณต้องการการจัดการแบบถาวรแทน ที่เครื่องนี้ดึงสแนปช็อตของอินสแตนซ์อื่นเข้ามาในรีพอสิทอรีของตัวเองตามตารางเวลา นั่นคือแท็บ ดึง ของหน้า อินสแตนซ์
คอนเทนเนอร์ที่เครือข่ายของมันไม่มีอยู่บนเซิร์ฟเวอร์นี้ เช่นเครือข่าย br0 ของ Unraid บนโฮสต์ Docker ทั่วไป จะแสดงตัวเลือกเครือข่ายใต้แถวของมัน BombVault จะสร้างคอนเทนเนอร์บนเครือข่ายที่คุณเลือก โดยคงเครือข่ายอื่นไว้ ที่อยู่ IP แบบคงที่และที่อยู่ MAC เป็นของเครือข่ายเดิมจึงถูกตัดออก และเครือข่ายใหม่จะกำหนดให้
ชุดกู้คืนคีย์เข้ารหัส¶
นี่คือส่วนที่ทำให้การกู้คืนจากภัยพิบัติเป็นไปได้แม้ไม่มี BombVault ที่กำลังทำงาน
คลิกเดียวจะดาวน์โหลด master key, รหัสผ่าน restic ที่ได้มา และ ตำแหน่งรีพอสิทอรีกับคำสั่งที่แน่นอน ดังนั้นคุณสามารถกู้คืนได้ตรงด้วย restic CLI บนเครื่องใดก็ได้ การเตือนบนแดชบอร์ดจะจ้ำจี้จนกว่าคุณจะเก็บมันไว้แล้ว
เก็บชุดกู้คืนไว้นอกเซิร์ฟเวอร์
ชุดนี้มีความลับที่ถอดรหัสการสำรองข้อมูลของคุณ เก็บไว้ในที่ปลอดภัยและแยกจากเซิร์ฟเวอร์ (โปรแกรมจัดการรหัสผ่าน, สำเนาที่พิมพ์ไว้ในตู้เซฟ) หากคุณสูญเสียทั้ง BombVault และ APP_KEY โดยไม่มีชุดกู้คืน การสำรองข้อมูลที่เข้ารหัสไว้ของคุณจะไม่สามารถกู้คืนได้
สแนปช็อตล่าสุดไม่ใช่ตัวที่ควรกู้คืนเสมอไป
ตั้งแต่ restic 0.17 คำสั่ง restic snapshots แสดงขนาดของแต่ละสแนปช็อต หลังข้อมูลสูญหาย สแนปช็อตล่าสุดอาจเป็นตัวที่ถูกทำให้ว่าง จึงอย่ากู้คืนสแนปช็อตที่เล็กกว่าตัวก่อนหน้ามาก หลังโดนแรนซัมแวร์ อาจเป็นตัวที่ถูกเข้ารหัสซึ่งมีขนาดตามปกติ ถ้า BombVault ยังทำงานอยู่ ให้ดูหน้า ความผิดปกติ ก่อน หน้านั้นระบุการสำรองข้อมูลที่ดีล่าสุด การกู้คืนไม่ต้องใช้ข้อมูลความผิดปกติของ BombVault และการหยุดการเก็บรักษาชั่วคราวแค่เก็บสแนปช็อตไว้มากขึ้นเท่านั้น
การผนึกชุดกู้คืน¶
ถ้าคุณเปิดการเข้ารหัส age สำหรับการส่งออกแบบธรรมดาไว้ (การตั้งค่า) ชุดกู้คืนก็จะถูกผนึกด้วยเช่นกันและดาวน์โหลดเป็น bombvault-recovery-kit.md.age มันอยู่ในรูปแบบ ASCII-armored แทนที่จะเป็นไบนารี จึงยังเป็นข้อความธรรมดา: การวางลงในตัวจัดการรหัสผ่านหรือการพิมพ์ออกมายังทำได้เหมือนเดิมทุกอย่าง เพียงแต่เนื้อหาอ่านไม่ได้หากไม่มีคีย์ของคุณ
อย่าเก็บคีย์ age ไว้ในชุดกู้คืน
คุณต้องใช้คีย์ ส่วนตัว age ของคุณเพื่อเปิดชุดกู้คืนที่ถูกผนึก เก็บมันไว้ในที่ที่ไม่ขึ้นกับตัวชุดกู้คืนเอง ไม่อย่างนั้นคุณจะมีสองสิ่งที่ต้องกู้คืนแทนที่จะเป็นสิ่งเดียว การผนึกคุ้มค่าเมื่อชุดกู้คืนถูกเก็บไว้ในที่ที่คุณไม่ได้ควบคุมเต็มที่ (ตัวจัดการรหัสผ่านที่ใช้ร่วมกัน, โน้ตบนคลาวด์, สำเนาพิมพ์ในสำนักงาน) ชุดกู้คืนในตู้เซฟของคุณเองได้รับการปกป้องจากตู้เซฟอยู่แล้ว
เมื่อเปิดการเข้ารหัสแต่ไม่ได้ตั้งค่าผู้รับที่ใช้ได้ การดาวน์โหลดจะถูกปฏิเสธทันที BombVault ไม่เคยถอยกลับไปส่ง master key แบบข้อความธรรมดา
เมื่อไม่มีชุดกู้คืนอยู่ใกล้ตัว¶
รหัสผ่านไม่ได้ถูกเก็บไว้ที่ใดเลย แต่คำนวณจาก APP_KEY ถ้ามีคีย์และเชลล์ คุณก็สร้างมันขึ้นมาเองได้
printf 'bombvault:restic-repo' \
| openssl dgst -sha256 -mac HMAC -macopt hexkey:$APP_KEY -r \
| cut -d' ' -f1
นี่คือ HMAC-SHA256 บนสตริงคงที่ bombvault:restic-repo โดยใช้ไบต์ดิบของ APP_KEY แบบเลขฐานสิบหกเป็นคีย์ และพิมพ์ออกมาเป็นอักขระฐานสิบหกตัวพิมพ์เล็ก 64 ตัว ค่าเดียวกันนี้อยู่ในชุดกู้คืน ระบุไว้เป็นรหัสผ่าน restic ที่อนุมานได้ ส่วนนี้มีไว้สำหรับวันที่ชุดกู้คืนอยู่คนละที่กับคุณ
สำหรับที่เก็บที่รับมา ให้ใช้คีย์ของอินสแตนซ์ฝั่งส่ง
ที่เก็บที่มาถึงที่นี่ผ่านการทำซ้ำนอกสถานที่ ถูกสร้างโดยเครื่องที่ส่งมันมา ด้วย APP_KEY ของเครื่องนั้น การอนุมานจากคีย์ของเครื่องผู้รับจะได้รหัสผ่านที่ restic ปฏิเสธ ซึ่งดูเหมือนที่เก็บเสียหายทุกประการทั้งที่ไม่ได้เสีย นี่คือสาเหตุที่พบบ่อยว่าทำไม restic check บนที่เก็บที่รับมาจึงถามรหัสผ่านซ้ำแล้วซ้ำเล่า
เนื่องจากคำจำกัดความการกู้คืนอยู่ ภายใน รีพอสิทอรีแต่ละตัว (<repo>/def, <repo>/vm-def) โฟลเดอร์รีพอสิทอรีที่คัดลอกมาจึงสมบูรณ์ในตัวเองอย่างเต็มที่ ดังนั้นชุดกู้คืนบวกกับรีพอสิทอรีจึงเป็นทุกสิ่งที่การกู้คืนแบบ bare-metal ต้องการ
การเอาดัมป์ฐานข้อมูลกลับคืน¶
ดัมป์ฐานข้อมูลคือจุดกู้คืนของตัวเองในที่เก็บของคอนเทนเนอร์ มีป้าย dbdump:<container> และมีไฟล์เดียวคือ /dbdump/<container>.sql BombVault แสดงรายการ ดาวน์โหลด และนำเข้าให้ในหน้า สำรองข้อมูล ส่วนด้านล่างคือขั้นตอนเดียวกันด้วย restic เพียงอย่างเดียว สำหรับวันที่ไม่มี BombVault อยู่ด้วย
restic -r <repo> snapshots --tag dbdump:<container>
restic -r <repo> dump --tag dbdump:<container> latest /dbdump/<container>.sql > <container>.sql
ป้าย dbversion: และ dbname: บนดัมป์แต่ละอันบอกว่ามาจากเซิร์ฟเวอร์เวอร์ชันใดและมีฐานข้อมูลใดบ้าง ไฟล์ที่สมบูรณ์จะจบด้วย -- PostgreSQL database cluster dump complete หรือ -- Dump completed
นำเข้าไปยังคอนเทนเนอร์เวอร์ชันเดียวกันหรือใหม่กว่า (PostgreSQL) หรือเวอร์ชันหลักเดียวกัน (MySQL และ MariaDB) ที่เริ่มทำงานหนึ่งครั้งด้วยโฟลเดอร์ข้อมูลว่างเพื่อให้ตั้งค่าเริ่มต้นเสร็จแล้ว เครื่องโฮสต์ไม่ต้องมีไคลเอนต์ฐานข้อมูล เพราะคอนเทนเนอร์มีอยู่แล้ว
docker exec -i <container> sh -c 'exec psql -X -U "${POSTGRES_USER:-postgres}" -d postgres' < <container>.sql
docker exec -i <container> sh -c 'exec mariadb -uroot -p"$MARIADB_ROOT_PASSWORD"' < <container>.sql
docker exec -i <container> sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < <container>.sql
หากต้องการฐานข้อมูลเดียวจากดัมป์ทั้งก้อน MySQL และ MariaDB รับตัวเลือก --one-database <name> ในคำสั่งไคลเอนต์ ส่วนดัมป์ของ PostgreSQL มีหนึ่งส่วนต่อหนึ่งฐานข้อมูล แต่ละส่วนเริ่มด้วยบรรทัด \connect <name> ให้คัดลอกส่วนนั้นไปไว้ในไฟล์ของมันเอง แล้วนำเข้าด้วย -d <name> หลังจากสร้างฐานข้อมูลแล้ว
ดัมป์ที่ทำในฐานะ root พาผู้ใช้ของเซิร์ฟเวอร์มาด้วย
ดัมป์เต็มของ MySQL หรือ MariaDB ที่ทำในฐานะ root มีฐานข้อมูลระบบ mysql รวมอยู่ด้วย การนำเข้าจึงแทนที่บัญชีของเซิร์ฟเวอร์ใหม่ รวมถึงรหัสผ่านของ root ด้วยบัญชีจากดัมป์ ส่วนบน PostgreSQL ข้อความ role ... already exists สำหรับผู้ใช้ที่คอนเทนเนอร์สร้างเองนั้นเป็นเรื่องปกติและไม่เป็นอันตราย