มีวิธีแก้ไขปัญหาทั่วไปเพื่อตรวจสอบว่าไฟล์เสียหายหรือไม่? ตัวอย่างเช่นไฟล์วิดีโอไม่ดีหรือไฟล์บีบอัดเสียหายเป็นต้น
echo "P = NP" >is-this-corrupt.txt
:)
มีวิธีแก้ไขปัญหาทั่วไปเพื่อตรวจสอบว่าไฟล์เสียหายหรือไม่? ตัวอย่างเช่นไฟล์วิดีโอไม่ดีหรือไฟล์บีบอัดเสียหายเป็นต้น
echo "P = NP" >is-this-corrupt.txt
:)
คำตอบ:
ไม่ไม่มีวิธีแก้ไขปัญหาทั่วไป วิธีเดียวที่จะตรวจสอบว่าไฟล์เสียหายคือการลองอ่าน เฉพาะซอฟต์แวร์ที่รู้วิธีอ่านรูปแบบเฉพาะนั้นเท่านั้น
สิ่งที่คุณสามารถทำได้คือใช้file
เพื่อระบุประเภทของไฟล์จากนั้นใช้ประเภทเพื่อเลือกโปรแกรมที่เหมาะสมเพื่อตรวจสอบไฟล์ คุณสามารถเขียนสคริปต์เช่นนี้:
# /bin/bash -eu
FILENAME=$1
FILETYPE="$(file -b $FILENAME | head -1 | cut -d , -f 1)"
case "$FILETYPE" in
"gzip compressed data") CHECKER="gunzip -t" ;;
# many, many more lines here
*) echo "Unknown type: $FILETYPE"; exit 1 ;;
esac
$CHECKER $FILENAME
แต่คุณมีงานต้องทำมากมายในการกรอกคำสั่งกรณีและปัญหา
อาจเป็นไปได้ว่ามีใครบางคนได้เขียนสคริปต์ (หรือโปรแกรม) เช่นนั้น แต่ฉันไม่รู้อะไรเลย
grep
, cat
, tar
... ) วิธีการแก้ปัญหาของคุณจึงป่องมาก
cat
หรือโปรแกรมอื่น ๆ ที่ใช้งานไฟล์อย่างหมดจดในรูปแบบของไบต์ที่ไม่มีโครงสร้างเพื่อตรวจสอบความเสียหาย ฉันไม่เชื่อว่าทางออกของฉันจะป่อง
หากคุณรู้ว่าในบางช่วงเวลาที่ไฟล์ดีคุณสามารถตรวจสอบผลรวมของมันและใช้มันเพื่อเปรียบเทียบในภายหลังเพื่อให้แน่ใจว่ามันยังคงทั้งหมด สิ่งนี้มีประโยชน์ก่อนที่จะถ่ายโอนไฟล์ระหว่างสื่อหรือผ่านเครือข่าย
หากคุณไม่ทราบเกี่ยวกับสถานะที่ดีของไฟล์ไม่มีวิธีสากลหรือตรวจสอบความเสียหาย เฉพาะรูปแบบไฟล์เฉพาะในแต่ละกรณีกำหนดว่าข้อมูลเสียหายหรือไม่เสียหาย
หากคุณเกิดขึ้นกับการใช้ ZFS คุณสามารถอ่านไฟล์ได้และรับประกันว่าจะไม่เกิดความเสียหายหรือเกิดข้อผิดพลาดในการอ่าน
แก้ไขหลังจากความคิดเห็นที่ฉลาดนี่คือคำอธิบายที่ชัดเจนของคำตอบของฉัน:
ZFS สามารถป้องกันและตรวจจับความเสียหายของข้อมูลที่เงียบ เช่น: http://www.zdnet.com/blog/storage/data-corruption-is-worse-than-you-know/191 แน่นอนว่าไฟล์นั้นได้รับความเสียหายในขณะที่เขียนครั้งแรกไม่มีอะไร ระบบไฟล์สามารถทำได้
เพื่อป้องกันการทุจริตที่จะเกิดขึ้นในระหว่างการส่งไฟล์เทคนิควัตถุประสงค์ทั่วไปทั่วไปคือ md5sum หรือแฮชที่คล้ายกัน