एक भ्रष्ट "tar.gz" फ़ाइल को कैसे पुनर्प्राप्त करें


11

मुझे अचानक एक पुरानी tar.gzफ़ाइल को पुनर्प्राप्त करने की आवश्यकता थी , लेकिन जैसे ही मैं ऐसा करता हूं:

tar -zxvf filename.tar.gz

मैंने इसे प्राप्त किया:

gzip: stdin: invalid compressed data--format violated  
tar: Child returned status 1  
tar: Error is not recoverable: exiting now

8
यह वास्तव में एक gzipped टारबॉल है? fileपहले उस पर कमांड का प्रयास करें ।
एलेक्स

1
हां, यह मेरे साथ एक से अधिक बार हुआ है जो मुझे मिला .tar.gzजो वास्तव में एक था .tar, और एक बार भी एक पीडीएफ।
वॉनब्रांड

जवाबों:


12

आपको निम्नलिखित प्रयास करने चाहिए:

  1. fileसंग्रह पर कमांड का उपयोग यह देखने के लिए करें कि क्या यह gzip-ed डेटा के रूप में मान्यता प्राप्त है ।
  2. strace gunzipफ़ाइल पर चलाएँ । यह फ़ाइल से पढ़े गए अंतिम बाइट्स को प्रिंट करेगा, जो फ़ाइल में उस बिंदु की पहचान करने में आपकी मदद कर सकता है जहां भ्रष्टाचार होता है।
  3. के gunzipतहत एक डीबग बिल्ड चलाएँ gdb। दूषित अनुभाग को ठीक करने का प्रयास करें (आपको ऐसा करने में सक्षम होने के लिए अतिरिक्त भाग्यशाली होना चाहिए) और देखें कि क्या यह फ़ाइल के अंत तक जारी रह सकता है।

भ्रष्टाचार की प्रकृति के आधार पर, आप अपने डेटा को पुनर्प्राप्त करने में सक्षम हो भी सकते हैं और नहीं भी।


gunzip filename.tar.gzमेरे लिए काम किया।
रवि धोरीया

3

एक क्षतिग्रस्त .gz फ़ाइल को पुनर्प्राप्त करने पर रिकवरी कैसे काम करती है, इसके बारे में कुछ जानकारी ।

एक उपकरण भी है जो आपको ऐसा करने में मदद करता है: gzip Recovery Toolkit उर्फ ​​gzrecover


2

पूरी वसूली संभव नहीं है। .Zip जैसे प्रारूप बेहतर सुरक्षा और पुनर्प्राप्ति विकल्प प्रदान करते हैं, लेकिन पूर्ण भी नहीं।

.tar.gz सभी फ़ाइलों को एक साथ जोड़ देता है और फिर एक संपीड़न लागू करता है। .zip प्रत्येक फ़ाइल के लिए संपीड़न पुनरारंभ करता है। इसलिए, .zip फ़ाइल को संपीड़ित ब्लॉक करने के लिए किया गया नुकसान केवल उस फ़ाइल को प्रभावित करता है जिस पर यह ब्लॉक है। Intar.gz नुकसान तब तक सभी बाद की फ़ाइलों को प्रभावित करेगा जब तक कि संपीड़न किसी तरह से पुनरारंभ नहीं होता है।


कि मैं सोच रहा था, अच्छा स्पष्टीकरण thx! मुझे आश्चर्य है कि अगर ज़िप के रूप में अच्छे (लेकिन बेहतर संपीड़न के साथ) अन्य प्रारूप हैं, लेकिन ज़िप हमेशा हर जगह पहचाना जाता है और संभवतः पुनर्प्राप्ति से संबंधित सबसे अच्छा विकल्प है।
कुंभ राशि

1

भागो zcat bad.tar.gz > some.tar, और निकालो। फ़ाइल के दूषित भाग में जाना मुश्किल हो जाएगा। मैन पेज प्रारूप को संकेत देता है, लेकिन मैं Google में अन्य विकल्पों की तलाश करूंगा।

क्या आप सुनिश्चित हैं कि यह gzip के साथ संपीड़ित है? इसकी शिकायत हो सकती है क्योंकि यह प्रारूप को नहीं समझता है ...


1

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

दुर्भाग्य से कोई भी व्यक्ति यह नहीं बताता कि भ्रष्टाचार क्षेत्र के बाद फाइल / धारा का हिस्सा कैसे वसूला जाए। कोई है जो प्राप्तकर्ता है?


-1

यह प्रयोग करें: https://github.com/arenn/gzrt

gzrecover foo.tar.gz
cpio -F foo.tar.recovered -i -v

आपकी कमांड के परिणामस्वरूप एक cpio: illegal option -- Fत्रुटि संदेश आता है।
विद्वान

1
cpio --help आपको विकल्प देता है: -F, --file = [[USER @] HOST:] फ़ाइल-नाम इस मानक-इनपुट या आउटपुट के बजाय इस फ़ाइल-नाम का उपयोग करें। वैकल्पिक USER और HOST एक दूरस्थ संग्रह के मामले में उपयोगकर्ता और होस्ट नामों को निर्दिष्ट करते हैं
W4U

आप abpout से बात नहीं कर रहे हैं cpio, लेकिन विक्रेता के विशिष्ट विकल्पों के साथ एक क्लोन के बारे में, उदाहरण के लिए देखें schillix.sourceforge.net/man/man1/cpio.1.html यदि ypou हालांकि मूल के बजाय किसी क्लोन के बारे में बात करते हैं, तो आप उल्लेख कर सकते हैं कि कौन सा क्लोन है का उपयोग कर रहे हैं।
विद्वान

1
@schilly, मैं बात कर रहा हूँ cpioडेबियन में शामिल हैं। GNU cpio: लिंक
W4U
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.