टार: पिछली त्रुटियों के कारण विफलता की स्थिति से बाहर निकलना


78

मैंने एक छोटी स्क्रिप्ट लिखी है जो निर्देशिका और फ़ाइलों की एक सूची को tars और compress करती है।

स्क्रिप्ट सफलतापूर्वक चलती है, जिसमें स्क्रिप्ट को चलाने के बाद एक useable .tar.gz फ़ाइल बनाई जाती है।

हालाँकि, स्क्रिप्ट खत्म होने के बाद मुझे यह कष्टप्रद संदेश मिला:

टार: पिछली त्रुटियों के कारण विफलता की स्थिति से बाहर निकलना

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

इस त्रुटि / चेतावनी संदेश का उत्पादन होने के संभावित कारण क्या हैं - और क्या मैं इसे सुरक्षित रूप से अनदेखा कर सकता हूँ? यदि मैं इसे अनदेखा नहीं कर सकता, तो त्रुटि के निदान और समाधान के लिए क्या कदम हैं?

मैं उबंटू 10.0.4 पर चल रहा हूं

जवाबों:


100

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


8
सुझाव के लिए +1 (मैं पहले 'वर्बोज़' विकल्प का उपयोग कर रहा था)। मैंने पाया कि कम से कम एक फाइल पर एक अनुमति मुद्दा था। कम से कम अब मुझे पता है कि इसे कैसे हल किया जाए। बहुत धन्यवाद
morpheous

हाँ
सूडो

-v ध्वज को खोदना बहुत सलाह है और मेरी समस्या को हल करने में मेरी मदद करता है। '
क्रिया'

22

समस्या तर्क है, fतर्क अगले को फ़ाइलनाम के रूप में लेता है, इसलिए यह तर्क का अंतिम होना चाहिए

tar cvzf output.tgz folder

या

tar -cvzf output.tgz folder

एक ही है और कोई त्रुटि नहीं है।


मेरी समस्या का समाधान किया। मैं टार -zcvfp त्रुटि देने की कोशिश कर रहा था, लेकिन जब टार्ज़-ज़ेडवीफ़ की कोशिश की गई तो सब ठीक था। धन्यवाद।
मियां असबत अहमद

6

कभी-कभी लॉगफ़ाइल्स की तरह बैकअप के दौरान बदल सकने वाली फ़ाइलों का बैकअप लेने पर, आपको उपयोगी विकल्प मिल सकता है '--ignore-fail-read' (मैं डेबियन लिनक्स पर हूँ, गैर ग़ुना टार के लिए निश्चित नहीं हूँ)।

मानक आउटपुट और त्रुटि को 2 अलग-अलग फ़ाइलों में पुनर्निर्देशित किया जा सकता है जैसे कुछ:

LOGDIR='/var/log/mylogdir' 
LOG=${LOGDIR}/backup.log 
ERRLOG=${LOGDIR}/backup.error.log 
DATE=$(date +%Y-%m-%d)
HOSTNAME=$(hostname)
DATA_DIRS='/etc /home /root'

tar --ignore-failed-read -f ${BACKUP_DIR}/${HOSTNAME}-${DATE}.tgz -cvz ${DATA_DIRS} > $LOG 2> $ERRLOG

मुझे लगता है कि यह आम तौर पर सुरक्षित है, लेकिन कृपया सावधान रहें, क्योंकि टार बंद नहीं होगा ...


5

मेरे पास एक ही मुद्दा था और उपरोक्त उत्तरों में से कोई भी मेरे लिए काम नहीं करता था। हालाँकि, मैंने पाया कि निम्नलिखित कमांड चलाने से काम चल रहा है:

tar -cpzf /backups/fullbackup.tar.gz --exclude=backups --exclude=proc --exclude=tmp --exclude=mnt --exclude=sys --exclude=dev --exclude=run /

जिन त्रुटियों को संदर्भित किया जा रहा tar: Exiting with failure status due to previous errorsथा, उन्हें -v विकल्प को बंद करके पहचाना जा सकता है। समीक्षा करने पर, त्रुटियां निर्देशिका /runऔर जैसे निर्देशिकाओं से आईं /sys

इन निर्देशिकाओं को छोड़कर, यह ठीक काम करता है। आशा है कि यह इसी तरह के मुद्दे के साथ किसी को भी मदद करता है।


3

मुझे भी यही समस्या थी। मैंने केवल इतना किया कि कमांड से डैश ("-") को हटा दिया जाए।

इसके बजाय इसे टाइप करें

tar -cvfz output.tar.gz फ़ोल्डर /

इसे टाइप करके देखें

tar cvfz output.tar.gz फ़ोल्डर /

मैं इस बात से अनभिज्ञ हूं कि मेरे मामले में डैश समस्या क्यों पैदा कर रहा था लेकिन कम से कम यह काम कर गया।


6
आपने शायद जीएनयू टार के साथ इसका परीक्षण किया है। आपका भ्रम इस तथ्य से आता है कि यह विकल्पों की दो अलग-अलग शैलियों को स्वीकार करता है - बिना डैश के "पुरानी शैली" टार विकल्प और डैश के साथ "मानक यूनिक्स" विकल्प। डैश के विकल्प के लिए विकल्प का अनुसरण करने के लिए विकल्प के तर्क की आवश्यकता होती है। तो इस मामले में तर्क -fहोना चाहिए output.tar.gzऔर zबीच में नहीं होना चाहिए । विकल्पों के पुन: आदेश के बिना यह सही ढंग से होगा tar -cvf output.tar.gz -z folder/:। पुरानी शैली सभी विकल्पों को एक स्थान पर रखने की उम्मीद करती है और सभी तर्क का पालन करती है।
पाबौक

GNU टार डॉक्यूमेंटेशन देखें और उदाहरण के लिए Tru64 UNIX tar man पेज
पाबौक

@pabouk यह टिप्पणी अपने आप में एक जवाब होने के योग्य थी। कृपया उस टिप्पणी की सामग्री को इस प्रश्न के उत्तर के रूप में जोड़ें, ताकि क्रेडिट वहीं जाए जहां क्रेडिट देय है।
cwallenpoole

मुझे भी समस्याएं थीं, लेकिन यह नाम -v के साथ एक फ़ाइल थी-जाहिरा तौर पर टार में कुछ कीड़े हैं जिनके संबंध में यह है कि यह किस फ़ाइल का बैकअप ले सकता है ... यह एक समस्या नहीं होनी चाहिए। आरएम और एमवी के बाद से मेरा वर्कअराउंड काम नहीं करेगा, एक फ़ाइल प्रबंधक का उपयोग करना था। तो जाहिरा तौर पर एमवी और आरएम छोटी गाड़ी भी हैं। मैंने mv '-v' v और rm '-v' की कोशिश की, लेकिन त्रुटि संदेश मिला। टार ने उल्लेख किया कि यह टार फाइल को स्टेट नहीं कर सकता है। का उपयोग कर रहा था -ffjv
जिम माइकल्स

1

आपने पहले वाले उत्तर को गलत समझा है। समस्या यह नहीं है -, यह वह जगह है जहां fआपकी तर्क सूची में है।

tar cvfz target.tgz <files>

"Z" नामक एक संग्रह बनाने की कोशिश करेंगे, क्योंकि वह पाठ के बाद है f। त्रुटि संदेश है क्योंकि टार को "z" संग्रह में जोड़ने के लिए "target.gz" नहीं मिल सकता है।

tar cvzf target.tgz <files>

सही ढंग से target.tgz बनाएगा और इसमें फाइल्स जोड़ेगा। ऐसा इसलिए है क्योंकि target.tgz fतर्क के बाद पहला पाठ है।


इसे "भ्रमित" उत्तर के लिए एक टिप्पणी के रूप में जोड़ा जाना चाहिए। दुर्भाग्य से आपको 50 अंक की प्रतिष्ठा हासिल करने के बाद ही ऐसी टिप्पणियों को जोड़ने की अनुमति दी जाएगी। विषय के लिए: क्या आपने इसका परीक्षण किया? मैंने इसे GNU टार 1.26 के साथ परीक्षण किया और डैश के साथ और बिना वेरिएंट जैक के उत्तर में वर्णित वास्तव में अलग हैं। यह उत्तर में लिखे अनुसार व्यवहार करता है।
पाबौक

0

आमतौर पर आप उस संदेश को अनदेखा कर सकते हैं। यदि टार निर्माण के दौरान अंतर्निहित निर्देशिका ट्री में कोई परिवर्तन (जैसे फ़ाइल विलोपन / निर्माण / संशोधन) हैं, तो यह उस संदेश को फेंक देगा। इसके अलावा अगर डिवाइस नोड्स, फ़ोरोस और जैसी विशेष फाइलें हैं, तो वे उस चेतावनी का कारण बनेंगे।

क्या आप वाकई किसी भी दोषी फाइल को नहीं देख सकते हैं? के साथ प्रयास करेंtar cvfz yourtarball.tgz /your/path


0

मेरे पास एक ऐसी ही समस्या थी जो मुझे मिली एक फ़ाइल को अनट्रेस कर रही थी। पता चला कि मेरे पास रूट के स्वामित्व वाले संग्रह में फाइलें लिखने की अनुमति नहीं थी। सुडो का उपयोग करके इसे ठीक किया।


0

शुरुआती लोगों के लिए इस त्रुटियों को प्राप्त करने का एक कारण यह है
वे उस निर्देशिका में संचालन करना भूल जाते हैं जहां फाइलें मौजूद हैं
उस स्थान पर जाएं और कमांड निष्पादित करें 
जैसे कि मेरी फाइलें डेस्कटॉप में हैं 
~ / डेस्कटॉप # टार - cf did.tar abc xyz
जहां xyz और abc फाइलें हैं और हम उन फाइलों को store.tar में स्टोर कर रहे हैं
यदि हम जाते हैं और कमांड को अन्य स्थान पर करते हैं तो हमें उपरोक्त त्रुटि मिलेगी 

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.