कैसे जांचा जाए कि कोई फाइल भ्रष्ट है या नहीं?


13

क्या कोई फ़ाइल दूषित है या नहीं यह जांचने के लिए कोई सामान्य समाधान हैं? उदाहरण के लिए, एक वीडियो फ़ाइल खराब है, या एक संपीड़ित फ़ाइल भ्रष्ट है, आदि।


1
क्या आप पूछते हैं कि क्या डिस्क पर कोई भौतिक त्रुटि है या यदि फ़ाइल की जानकारी गलत है?
थोर्बोजर्न रेव एंडरसन

2
अगर एक मनमानी फ़ाइल में जानकारी सही है, तो जाँच करना बहुत मुश्किल है। echo "P = NP" >is-this-corrupt.txt:)
टॉम एंडरसन

जवाबों:


10

नहीं, कोई सामान्य समाधान नहीं हैं। एक फ़ाइल भ्रष्ट है या नहीं यह जाँचने का एकमात्र तरीका यह है कि इसे आज़माएँ और पढ़ें; केवल सॉफ्टवेयर जो जानता है कि उस विशेष प्रारूप को कैसे पढ़ा जा सकता है।

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

लेकिन केस स्टेटमेंट को भरने के लिए आपके पास बहुत काम होगा।

यह संभव है कि किसी ने पहले से ही इस तरह की स्क्रिप्ट (या प्रोग्राम) लिखी हो, लेकिन मुझे इसका कोई पता नहीं है।


1
"केवल सॉफ्टवेयर जो जानता है कि उस विशेष प्रारूप को कैसे पढ़ा जा सकता है" वह एक गलत धारणा है। बहुत सारे प्रोग्राम हैं जो आपके द्वारा दिए गए फ़ाइल के प्रकार की परवाह नहीं करते हैं। (लगता है कि उदाहरण के लिए grep, cat, tar...)। इसलिए आपका समाधान बहुत फूला हुआ है।
rozcietrzewiacz

4
"पढ़ने" से मेरा मतलब "व्याख्या" था - मुझे अधिक स्पष्ट होना चाहिए था। आप catभ्रष्टाचार के लिए जाँच करने के लिए किसी भी अन्य प्रोग्राम का उपयोग नहीं कर सकते हैं , जो किसी फाइल को शुद्ध रूप से बाइट्स की असंरचित धारा के रूप में मानता है। मुझे विश्वास नहीं है कि मेरा समाधान फूला हुआ है।
टॉम एंडरसन

आप कर सकते हैं, जैसा कि कालेब ने सुझाव दिया कि प्रत्येक फ़ाइल को द्विआधारी डेटा के रूप में माना जाए और बाद में सत्यापन के लिए चेकसमों को संग्रहीत किया जाए। यह सार्वभौमिक, सरल और अपेक्षाकृत तेज है।
rozcietrzewiacz

1
लेकिन मैं अब देख रहा हूं कि आपके दृष्टिकोण का एक लाभ है कि आप उन फाइलों पर भी सत्यापन कर सकते हैं, जिन्हें आपने पहले नहीं देखा या एक्सेस नहीं किया है। यह निश्चित रूप से एक प्लस है - आप इसे अपने उत्तर में इंगित कर सकते हैं।
rozcietrzewiacz

14

यदि आप किसी बिंदु पर जानते हैं कि फ़ाइल अच्छी है, तो आप इसका एक चेकसम बना सकते हैं और बाद में तुलना करने के लिए इसका उपयोग यह सुनिश्चित करने के लिए कर सकते हैं कि यह अभी भी पूरा है। यह माध्यमों या नेटवर्क के बीच फ़ाइलों को स्थानांतरित करने से पहले उपयोगी है।

यदि आप किसी फ़ाइल की अच्छी स्थिति के बारे में नहीं जानते हैं, तो कोई भी सार्वभौमिक तरीका या भ्रष्टाचार की जाँच नहीं है। प्रत्येक मामले में केवल विशिष्ट फ़ाइल प्रारूप यह निर्धारित करता है कि भ्रष्ट क्या है या भ्रष्ट डेटा नहीं है।


3

यदि आप ZFS का उपयोग करते हैं, तो या तो आप फ़ाइल पढ़ सकते हैं और यह गारंटी दी जाती है कि यह दूषित नहीं है या आपको पढ़ने में त्रुटि हुई है और यह है।

बुद्धिमान टिप्पणियों के बाद संपादित करें, यहाँ मेरे जवाब का स्पष्टीकरण है:

ZFS मूक डेटा भ्रष्टाचार के खिलाफ सुरक्षा और पता लगा सकता है। उदाहरण: http://www.zdnet.com/blog/storage/data-corruption-is-worse-than-you-know/191 यदि फ़ाइल पहले से ही लिखी गई समय पर पहले से ही दूषित है, तो कुछ भी नहीं है फ़ाइल सिस्टम कर सकता है।

फ़ाइल के प्रसारण के दौरान होने वाले भ्रष्टाचार से बचाने के लिए, सामान्य सामान्य प्रयोजन तकनीकें md5sum या इसी तरह की हैश होती हैं।


वाह, क्या विशेषता है: O
लांसबेंस

1
तो अगर आप वेब से एक वीडियो डाउनलोड करते हैं जो भ्रष्ट है? ZFS आपको वहां मदद करने के लिए कुछ भी नहीं करता है - यह सिर्फ पुष्टि करता है कि भ्रष्ट फ़ाइल को बदला नहीं गया है। ZFS शानदार है, लेकिन यह भ्रष्ट फ़ाइलों की जाँच करने का समाधान नहीं है।
टॉम एंडरसन

दुर्भाग्य से यह सिर्फ एक फाइल सिस्टम अखंडता जांच है, न कि फाइलों की वास्तविक समझ और क्या वे भ्रष्ट हैं। सबसे आम उपयोग मुझे संदेह है @ लांस के बाद यह तय करने में सक्षम हो रहा है कि एक आने वाली फ़ाइल डाउनलोड की गई है या अन्यथा स्थानांतरित की गई वैध है या नहीं। ZFS जादुई रूप से यह तय नहीं कर सकती है कि कोई फ़ाइल अच्छी है या नहीं, केवल यह वादा करें कि आप जो भी देते हैं वह सहेजा जाता है और स्थानीय रूप से एक टुकड़े में वापस आ जाता है।
कालेब

जैसा कि प्रश्न टैग / डेटा-रिकवरी और / फाइल सिस्टम है, मैंने माना कि यह पहले से ही पहले से टूटी हुई फ़ाइलों के बारे में नहीं बल्कि मूक डेटा भ्रष्टाचार के बारे में था। उस बिंदु को स्पष्ट करने के लिए संपादित उत्तर।
जूलियाग्रे

@ जिलीग्रे: मैंने आपके जवाब के लगभग एक घंटे बाद इस सवाल को उस टैग (संभवतः गलत तरीके से) के साथ रिट्वीट किया। जब आपने इसका उत्तर दिया तो बस "linux" टैग किया गया था।
कालेब
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.