ฉันมีฮาร์ดไดรฟ์ที่มีบล็อกที่ไม่ดีหรือเซกเตอร์ที่ไม่สามารถอ่านได้เนื่องจากปัญหาทางกลที่อาจเกิดขึ้นเช่นหัวดิสก์ที่ไม่ดีมอเตอร์ไม่ดีหรือปัญหาอื่น ๆ ที่ทำให้ฮาร์ดไดรฟ์อ่านข้อมูลอย่างช้า ๆ และมีจำนวนมาก ของข้อผิดพลาดในการอ่าน ฉันเห็นค่าเฉลี่ย 50 KB / วินาทีโดยที่บางคนอ่านลดลงต่ำกว่า 10 KB / วินาทีและบ่อยครั้งที่มันติดอยู่กับไฟล์หรือเซกเตอร์ทั้งหมดโดยปกติจะใช้เวลาค่อนข้างนาน - จาก 2-10 นาทีหรือมากกว่านั้น (เมื่อ ใช้ rsync ก่อนหมดเวลา)
ความเร็วดูเหมือนจะแตกต่างกันอย่างดุเดือดและมันก็ติดอยู่กับไฟล์มากมายและเมื่อในที่สุดมันก็ได้ "unstuck" มันก็ดูเหมือนว่าจะระเบิดนาน ๆ ก่อนที่มันจะติดอีกครั้ง ไดรฟ์ยังคงเงียบมากโดยมีเพียงเสียงคัดลอกไฟล์เป็นครั้งคราว (โดยปกติเมื่อมันติดอยู่ / ถอดออกชั่วขณะหนึ่งก่อนที่จะติดอีกครั้ง) ดังนั้นจึงไม่มีเสียงชั่วร้ายที่เกี่ยวข้องกับการเสียชีวิตของ HDD มีคนแนะนำว่าปัญหาที่เกิดขึ้นฟังดูเหมือนว่าอาจเกิดจากหัวดิสก์ที่ไม่ตรงแนวซึ่งต้องการการอ่านซ้ำหลายครั้งก่อนที่จะอ่านข้อมูลในที่สุด ฟังดูน่าเชื่อถือ แต่ฉันเชือนแช ...
อย่างไรก็ตามปัญหากับ rsync ก็คือดูเหมือนว่าไม่มีการจัดการข้อผิดพลาดที่เหมาะสม เห็นได้ชัดว่ามันไม่ได้มีไว้สำหรับใช้ในการกู้คืนข้อมูลจากความล้มเหลวของฮาร์ดไดรฟ์ แต่ยูทิลิตี้ที่เรียกว่า "การกู้คืนข้อมูล" ที่มีไว้สำหรับการใช้งานดังกล่าวมักจะมุ่งเน้นไปที่การกู้คืนไฟล์ที่ถูกลบ การคัดลอกไฟล์จากฮาร์ดไดรฟ์ที่กำลังจะตาย การกู้คืนไฟล์ที่ถูกลบนั้นไม่ใช่สิ่งที่ฉันต้องการอย่างชัดเจนดังนั้นบางทีคุณอาจเข้าใจความผิดหวังของฉันที่ไม่สามารถค้นหาสิ่งที่ฉันยังหลังจาก
นี่คือที่ที่คุณอาจพูดว่า "คุณควรใช้ ddrescue!" นั่นคือทั้งหมดที่ดีและสวยงาม แต่ฉันได้สำรองข้อมูลส่วนใหญ่แล้วดังนั้นฉันแค่ต้องการกู้คืนไฟล์บางอย่าง ฉันไม่กังวลเกี่ยวกับการพยายามกู้คืนพาร์ติชันแบบบล็อกต่อบล็อกเต็มรูปแบบตามที่ ddrescue ฉันสนใจเพียงแค่ช่วยกู้ไฟล์และไดเรกทอรีที่เฉพาะเจาะจงเท่านั้น
นึกคิดสิ่งที่ฉันต้องการคือการข้ามระหว่าง rsync และ ddrescue:สิ่งที่ให้ฉันระบุต้นทางและปลายทางเป็นไดเรกทอรีของไฟล์ปกติเช่น rsync (มากกว่าสองพาร์ติชันเต็มตามที่ต้องการ ddrescue) ด้วยวิธีการข้ามไฟล์ด้วย ข้อผิดพลาดในการเรียกใช้ครั้งแรกและจากนั้นช่วยให้ฉันพยายามกู้คืนไฟล์เหล่านั้นด้วยข้อผิดพลาดในการเรียกใช้ในภายหลัง (แน่นอนว่ามีคำสั่งเปลี่ยนแปลงเล็กน้อย) อาจเสนอตัวเลือกเพื่อระบุจำนวนครั้งในการลองใหม่ ... เช่น ddrescue ทำงานอย่างไรกับบล็อกฉันเพียงต้องการยูทิลิตี้ที่ทำงานกับไฟล์ / ไดเรกทอรีเฉพาะเช่น rsync
ดังนั้นฉันฝันกลางวันที่นี่หรือมีบางสิ่งที่มีอยู่ที่สามารถทำได้? หรืออาจเป็นวิธีที่จะทำให้ rsync หรือ ddrescue ทำงานในลักษณะนี้? ฉันเปิดรับกับวิธีแก้ไขปัญหาที่อาจใช้งานได้จริงตราบใดที่พวกเขาให้ฉันเลือกไฟล์ที่ฉันต้องการ "ช่วยเหลือ" และสามารถข้ามไฟล์ที่มีข้อผิดพลาดในการเริ่มต้นและลอง / ลองข้อผิดพลาดเหล่านั้นอีกครั้งในภายหลัง
จนถึงตอนนี้ฉันได้ลอง rsync ด้วยตัวเลือกต่อไปนี้ แต่มันมักจะติดอยู่ในไฟล์นานกว่าการหมดเวลาและโดยปกติแล้วฉันต้องการให้มันย้ายไปยังไฟล์ถัดไปและกลับมาที่ไฟล์ที่ได้รับมา ติดอยู่ ฉันไม่คิดว่าเป็นไปได้ว่า อย่างไรก็ตามนี่คือสิ่งที่ฉันใช้มาจนถึงตอนนี้:
rsync -avP --stats --block-size=512 --timeout=600 /path/to/source/* /path/to/destination/