Bir dosyanın bozuk olup olmadığını kontrol etmek için genel çözümler var mı? Örneğin, bir video dosyasının bozuk veya sıkıştırılmış bir dosyanın bozuk olup olmadığı vb.
echo "P = NP" >is-this-corrupt.txt
:)
Bir dosyanın bozuk olup olmadığını kontrol etmek için genel çözümler var mı? Örneğin, bir video dosyasının bozuk veya sıkıştırılmış bir dosyanın bozuk olup olmadığı vb.
echo "P = NP" >is-this-corrupt.txt
:)
Yanıtlar:
Hayır, genel bir çözüm yok. Bir dosyanın bozuk olup olmadığını kontrol etmenin tek yolu denemek ve okumaktır; sadece o formatın nasıl okunacağını bilen yazılım bunu yapabilir.
Yapabileceğiniz şey file
, dosyanın türünü tanımlamak için kullanın ve daha sonra dosyayı kontrol etmek için uygun bir program seçmek için türü kullanın. Bunun gibi bir senaryo yazabilirsiniz:
# /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
Ancak vaka bildirimini doldurmak için yapmanız gereken çok iş var.
Birisi zaten böyle bir komut dosyası (veya program) yazmış olabilir, ama ben bilmiyorum.
grep
, cat
, tar
...). Bu nedenle çözümünüz çok şişirilmiş.
cat
Yolsuzluğu kontrol etmek için veya bir dosyayı yalnızca yapılandırılmamış bayt akışı olarak işleyen başka bir programı kullanamazsınız . Çözümümün şiştiğine inanmıyorum.
Dosyanın iyi olduğunu bir zamanda biliyorsanız, bir sağlama toplamı oluşturabilir ve daha sonra karşılaştırmak için hala tam olduğundan emin olmak için kullanabilirsiniz. Bu, dosyaları ortamlar arasında veya ağlar arasında aktarmadan önce kullanışlıdır.
Bir dosyanın iyi durumunu bilmiyorsanız, hiçbir evrensel yol veya yolsuzluk kontrolü yoktur. Her durumda yalnızca belirli dosya biçimi neyin bozuk veya neyin bozuk olmadığını belirler.
ZFS'yi kullanırsanız, dosyayı okuyabilirsiniz ve bozulmadığı veya okuma hatası aldığınız garanti edilir.
Düzenle Akıllıca yorumlardan sonra, cevabımın açıklaması:
ZFS, sessiz veri bozulmasına karşı koruma ve algılama yapabilir. örneğin: http://www.zdnet.com/blog/storage/data-corruption-is-worse-than-you-know/191 Tabii ki dosya ilk yazıldığı anda zaten bozulmuşsa, hiçbir şey yoktur dosya sistemi yapabilir.
Dosyanın iletimi sırasında oluşabilecek yolsuzluklara karşı korunmak için, genel amaçlı teknikler md5sum veya benzeri karmalardır.