ข้ามไปที่เนื้อหา

นอกสถานที่และการกู้คืน

สำเนานอกสถานที่รอหลังการสร้างใหม่

เมื่อขั้นตอนที่ 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 ไม่มีแถว การจัดวาง ส่วนนอกสถานที่ของรายการเหล่านี้จึงมี เพิ่มจาก และชื่อปลายทางแทน

เพิ่มปลายทาง เปิดตัวช่วยห้าขั้นตอน:

  1. จะส่งข้อมูลสำรองไปที่ใด ทุกบริการแสดงพร้อมโลโก้ แบ่งเป็นสี่กลุ่ม: บริการจัดเก็บที่มีบักเก็ต 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 รองรับ) แต่ละบริการบอกว่าเหมาะกับการสำรองข้อมูลเพียงใด: ไดรฟ์คลาวด์จะช้าลงเมื่อมีคำขอจำนวนมาก การสำรองข้อมูลครั้งแรกและการตัดแต่งจึงใช้เวลานานกว่าที่นั่น
  2. ลงชื่อเข้าใช้ บริการที่เลือก ช่องที่ต้องกรอกขึ้นกับบริการ: คีย์การเข้าถึงสำหรับ S3, ผู้ใช้และรหัสผ่านสำหรับ WebDAV และ SMB, รหัสผ่านแอปในกรณีที่การยืนยันตัวตนสองขั้นตอนบล็อกรหัสผ่านปกติ, คีย์ SSH สาธารณะของ BombVault สำหรับ SFTP และ Storage Box หรือโทเค็นสำหรับบริการที่ลงชื่อเข้าใช้ผ่านเบราว์เซอร์ สำหรับบริการเหล่านั้น ตัวช่วยจะแสดงคำสั่ง rclone authorize ให้รันบนคอมพิวเตอร์ที่มีเบราว์เซอร์ แล้วนำโทเค็นที่พิมพ์ออกมาไปใส่ในช่อง ทดสอบการเชื่อมต่อ จะตรวจสอบการลงชื่อเข้าใช้ก่อนที่จะบันทึกสิ่งใด
  3. เลือกโฟลเดอร์ ตัวช่วยแสดงรายการโฟลเดอร์บนปลายทาง พร้อม โฟลเดอร์ใหม่ สำหรับสร้างโฟลเดอร์ และแสดงพื้นที่ว่างเมื่อบริการรายงานมา โฟลเดอร์ว่างปลอดภัยที่สุด
  4. การป้องกันการลบ ตัวช่วยบอกตรง ๆ ว่าบริการทำอะไรได้บ้าง rest-server ในโหมด append-only ปฏิเสธการลบ และการทดสอบการแทรกแซงจะตรวจสอบสิ่งนั้น บักเก็ต S3 เก็บเวอร์ชันเก่าไว้ได้ด้วยการทำเวอร์ชันและล็อกอ็อบเจ็กต์ ซึ่ง BombVault ยังตรวจสอบไม่ได้ ไดรฟ์คลาวด์ปฏิเสธการลบไม่ได้เลย: ใครเข้าถึงเซิร์ฟเวอร์ได้ก็เข้าถึงสำเนานั้นได้ด้วย เปิด เปลี่ยนแปลงไม่ได้ (append-only) เฉพาะเมื่อปลายทางฝั่งไกลปฏิเสธการลบจริง ๆ เท่านั้น BombVault จะไม่ตัดแต่งที่นั่นเลย
  5. เผื่อกรณีฉุกเฉิน ชุดกู้คืนจะแสดงรายการทุกปลายทางพร้อมรีพอสิทอรีของแต่ละโดเมนใต้ปลายทางนั้น การลงชื่อเข้าใช้จะกลับมาพร้อมการสำรองข้อมูลการตั้งค่าของ 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 จะ:

  1. ปฏิเสธหากมีคอนเทนเนอร์ชื่อ rest-server อยู่แล้ว หรือมีคอนเทนเนอร์อื่นใช้พอร์ตนั้นอยู่
  2. ดึง restic/rest-server แล้วเริ่มผ่านซ็อกเก็ต Docker ในโหมด append-only พร้อมรีพอสิทอรีส่วนตัวและไฟล์ล็อกอินในโฟลเดอร์นั้น
  3. เขียนเทมเพลต Unraid ของมันลงแฟลชไดรฟ์ เพื่อให้คอนเทนเนอร์ยังแก้ไขได้ในแท็บ Docker หรือเสนอเทมเพลตให้ดาวน์โหลดเมื่อเข้าถึงแฟลชไดรฟ์ไม่ได้
  4. รันการทดสอบการแทรกแซงกับมัน และแสดงว่ามันปฏิเสธการลบหรือไม่

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

อินสแตนซ์ที่ติดต่อเครื่องรับข้อมูลได้ผ่านรีเลย์เท่านั้นจะใช้เซิร์ฟเวอร์นี้ไม่ได้ เพราะรีเลย์ไม่ส่งต่อข้อมูลสำรอง ให้เพิ่มที่อยู่ของเครื่องรับข้อมูลที่การตั้งค่า, การจับคู่ก่อน เมื่อ 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 แล้วแต่ละเครื่องจะบังคับความไม่เปลี่ยนแปลงให้อีกเครื่อง และไม่มีเครื่องใดลบข้อมูลสำรองของอีกเครื่องได้

การกู้คืนแบบมีคำแนะนำ

แท็บ การกู้คืน โดยเฉพาะจะพาการติดตั้งใหม่หรือสร้างขึ้นใหม่ผ่านกรณีภัยพิบัติในที่เดียว:

  1. กู้คืนการตั้งค่าของ BombVault เองก่อน ดังนั้นพาธการสำรองข้อมูล, ปลายทางนอกสถานที่ และข้อมูลรับรองที่ขั้นตอนที่เหลือต้องการจะถูกเติมไว้ล่วงหน้า (นำไปใช้ผ่านการรีสตาร์ทตัวเองผ่าน Docker socket ดังนั้นฐานข้อมูลการตั้งค่าที่กำลังทำงานจึงไม่เคยถูกเขียนทับภายใต้ handle ที่เปิดอยู่)
  2. ตรวจสอบว่า BombVault อ่านการสำรองข้อมูลของคุณได้ (ปัญหาคีย์เข้ารหัสตั้งแต่ต้น)
  3. ให้คุณ ชี้ไปยังรีพอสิทอรีที่มีอยู่ของคุณ (ในเครื่องหรือนอกสถานที่)
  4. ค้นพบ containers, VMs, ชุดไฟล์ และชุดข้อมูล ZFS ที่จัดเก็บอยู่ในนั้น
  5. กู้คืน 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 สำหรับผู้ใช้ที่คอนเทนเนอร์สร้างเองนั้นเป็นเรื่องปกติและไม่เป็นอันตราย