การย้อนกลับ bvfs subvolume ด้วย subvolumes เด็ก


9

มีวิธีการที่เป็นที่นิยมในการย้อนกลับไปยังสแน็ปช็อตย่อยที่มี subvolumes ย่อยหรือไม่ ตัวอย่างเช่นนี่คือเลย์เอาต์ btrfs ของฉัน:

ID 257 gen 59802 top level 5 path __active
ID 258 gen 59784 top level 5 path __snapshot
ID 259 gen 59802 top level 257 path home
ID 260 gen 36538 top level 257 path opt
ID 261 gen 59802 top level 257 path var

ดังนั้นคุณจะเห็นได้ว่าบ้านการเลือกและ var เป็น subvolumes ย่อยของ __active หากฉันถ่ายภาพ __active แบบนี้จะเป็นเค้าโครงใหม่ของฉัน

ID 257 gen 59802 top level 5 path __active
ID 258 gen 59784 top level 5 path __snapshot
ID 259 gen 59802 top level 257 path home
ID 260 gen 36538 top level 257 path opt
ID 261 gen 59802 top level 257 path var
ID 416 gen 59784 top level 258 path __snapshot/__active

หากฉันต้องการย้อนกลับไปที่สแน็ปช็อตของ __active มีวิธีในการแนบกลับบ้านเลือกและเปลี่ยนเป็น __active ใหม่หรือไม่

คำตอบ:


3

หากคุณหมายถึงการติดตั้งซ้ำที่btrfs subvolume listจะแสดง:

ID 257 gen 59802 top level 5 path __active
ID 258 gen 59784 top level 5 path __snapshot
ID 259 gen 59802 top level 416 path home
ID 260 gen 36538 top level 416 path opt
ID 261 gen 59802 top level 416 path var
ID 416 gen 59784 top level 258 path __snapshot/__active

แล้วไม่มีbtrfs-progsมีตอนนี้เป็นวิธีที่จะทำเช่นนั้นด้วย

ไดรฟ์ย่อยสามารถลบได้หาก child-subvolumes ทั้งหมด (สร้างขึ้นด้วยbtrfs subvolume create ...) ว่างเปล่า แต่สิ่งนี้ไม่เป็นความจริงสำหรับสแน็ปช็อต (ซึ่งสร้างขึ้นด้วยbtrfs subvolume snapshot ...สแน็ปช็อตสามารถถูกลบได้เสมอและหากคุณย้ายมันได้ ปัญหากับการลบภาพรวม

แม้ว่า subvolumes ย่อยและสแน็ปช็อตของลูกจะปรากฏในโครงสร้างต้นไม้เดียวกันและแม้กระทั่งแชร์btrfs subvolume delete ..คำสั่ง แต่ก็ไม่ได้ทำเหมือนกัน


1

ก่อนอื่นเลยเมื่อทำการสร้าง__snapshot/__activesubvolumes (home, opt, var) จะไม่ถูกดักจับ สร้างไดเรกทอรีที่ว่างเปล่าแทน ดังนั้น__snapshot/__activeสามารถลบออกได้อย่างง่ายดายในขณะที่__activeไม่สามารถ

แต่จุดหลักคือการกู้คืนด้วย__active __snapshot/__activeเท่าที่ฉันรู้มันไม่สามารถทำได้แบบอะตอม แต่คุณสามารถจับmvภาพและ subvolumes อื่น ๆอย่างมีความสุข(ตราบเท่าที่พวกมันเขียนได้) ดังนั้นการทำเช่น

mv __active __snapshot/__active.old
mv __snapshot/__active __active

เรียกคืน__activeจากภาพรวม แต่ย้าย subvolumes __snapshot/__active.old/{home,opt,var}ไป หากต้องการติดตั้งใหม่คุณสามารถใช้

mv __snapshot/__active.old/{home,opt,var} __active/

และคุณจะได้รับ

ID 257 gen 59804 top level 258 path __snapshot/__active.old
ID 258 gen 59786 top level 5 path __snapshot
ID 259 gen 59802 top level 416 path home
ID 260 gen 36538 top level 416 path opt
ID 261 gen 59802 top level 416 path var
ID 416 gen 59784 top level 5 path __active

ในกรณีที่สแนปชอตของคุณเป็นแบบอ่านอย่างเดียวคุณสามารถทำได้

mv __active __snapshot/__active.old
btrfs subvolume snapshot __snapshot/__active __active
mv __snapshot/__active.old/{home,opt,var} __active/
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.