bup-damage - สุ่มทำลายบล็อกของไฟล์
bup damage [-n count] [-s maxsize] [--percent pct] [-S seed] [--equal] <filenames...>
ใช้ bup damage เพื่อจงใจทำลายบล็อกในไฟล์ .pack หรือ .idx (จาก .bup/objects/pack) เพื่อทดสอบคุณสมบัติการกู้คืนของ bup-fsck(1) หรือโปรแกรมอื่นๆ
โปรแกรมนี้อันตรายอย่างยิ่ง และจะทำลายข้อมูลของคุณ
ความเสียหาย bup มีประโยชน์เป็นหลักสำหรับการทดสอบเครื่องมือกู้คืนข้อมูลโดยอัตโนมัติหรือด้วยตนเอง เพื่อให้มั่นใจว่าเครื่องมือใช้งานได้จริง
จำนวนบล็อกแยกที่สร้างความเสียหายในแต่ละไฟล์ (ค่าเริ่มต้น 10) โปรดทราบว่าเป็นไปได้ที่เซกเมนต์ที่เสียหายมากกว่าหนึ่งเซ็กเมนต์จะอยู่ในบล็อกการกู้คืน bup-fsck(1) เดียวกัน ดังนั้นคุณจึงอาจสร้างความเสียหายได้ไม่มากเท่าที่คุณต้องการ หากเป็นปัญหา ให้ใช้ --equal
ขนาดสูงสุดเป็นไบต์ของแต่ละบล็อกที่เสียหาย (ค่าเริ่มต้น 1 เว้นแต่จะระบุ --percent) โปรดทราบว่าเนื่องจากวิธีการทำงานของ bup-fsck(1) บล็อกแบบหลายไบต์อาจอยู่ในขอบเขตระหว่างบล็อกการกู้คืน 2 บล็อก และทำให้บล็อกการกู้คืน 2 บล็อกแยกกันเสียหาย ในไฟล์ขนาดเล็ก เป็นไปได้ที่บล็อกที่เสียหายจะมีขนาดใหญ่กว่าบล็อกการกู้คืน หากปัญหาเหล่านี้อาจเป็นปัญหา คุณควรใช้ขนาดความเสียหายเริ่มต้นที่หนึ่งไบต์
ขนาดสูงสุดเป็นเปอร์เซ็นต์ของไฟล์ต้นฉบับของแต่ละบล็อกที่เสียหาย หากกำหนดทั้ง --size และ --percent ขนาดบล็อกสูงสุดจะเป็นค่าต่ำสุดของข้อจำกัดทั้งสอง คุณสามารถใช้สิ่งนี้เพื่อให้แน่ใจว่าบล็อกที่กำหนดจะไม่สร้างความเสียหายให้กับบล็อกการกู้คืน git-fsck(1) มากกว่าหนึ่งหรือสองบล็อก
เพาะตัวสร้างตัวเลขสุ่มด้วยค่าที่กำหนด หากคุณใช้ตัวเลือกนี้ การทดสอบของคุณจะสามารถทำซ้ำได้ เนื่องจากออฟเซ็ต ขนาด และเนื้อหาของบล็อกที่เสียหายจะเหมือนกันทุกครั้ง ตามค่าเริ่มต้น ตัวเลขสุ่มจะแตกต่างกันทุกครั้ง (คุณจึงสามารถเรียกใช้การทดสอบแบบวนซ้ำและทดสอบซ้ำด้วยความเสียหายที่แตกต่างกันในแต่ละครั้ง)
แทนที่จะเลือกออฟเซ็ตแบบสุ่มสำหรับบล็อกที่เสียหายแต่ละบล็อก ให้เว้นระยะบล็อกเท่าๆ กันทั่วทั้งไฟล์ โดยเริ่มจากออฟเซ็ต 0 หากคุณเลือกขนาดบล็อกสูงสุดที่ถูกต้องด้วย วิธีนี้รับประกันได้ว่าบล็อกความเสียหายใดๆ จะไม่สร้างความเสียหายมากกว่าหนึ่ง git-fsck( 1) บล็อกการกู้คืน (สิ่งนี้รับประกันเช่นกันหากคุณใช้ -s 1.)
# make a backup in case things go horribly wrong
cp -pPR ~/.bup/objects/pack ~/bup-packs.bak
# generate recovery blocks for all packs
bup fsck -g
# deliberately damage the packs
bup damage -n 10 -s 1 -S 0 ~/.bup/objects/pack/*.{pack,idx}
# recover from the damage
bup fsck -rbup-fsck(1), par2(1)
ส่วนหนึ่งของชุด bup(1)
เอเวอรี่ เพ็ญนฤนาท apenwarr@gmail.com.