टार "पर नहीं निकल सकता है स्टेट: डायरेक्टरी की ऐसी कोई फाइल नहीं", क्यों?


50

मैं निम्नलिखित कमांड का उपयोग करके tar.gz फ़ाइल बनाने की कोशिश कर रहा हूँ:

sudo tar -vcfz dvr_rdk_v1.tar.gz dvr_rdk/

यह तब फ़ाइलें बनाना शुरू करता है (फ़ोल्डर में कई फाइलें), लेकिन फिर मुझे निम्न त्रुटि मिलती है:

tar: dvr_rdk_v1.tar.gz: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors

मुझे इस त्रुटि का कोई विवरण नहीं दिखता, इसका क्या मतलब है?

जवाबों:


61

विकल्पों में -से निकालें vcfztarविकल्पों के लिए हाइफ़न की आवश्यकता नहीं है।

एक हाइफ़न के साथ, -fविकल्प के लिए तर्क है z। तो आदेश प्रभाव में है जिसे संग्रह करने की कोशिश की जाती है dvr_rdk_v1.tar.gzऔर dvr_rdkजिसे संग्रह कहा जाता है z। हाइफ़न के बिना, विकल्पों का शब्दार्थ बदलता है, ताकि कमांड लाइन पर अगला तर्क, यानी आपके संग्रह का फ़ाइल नाम, fध्वज का तर्क बन जाए ।

उस निर्देशिका के लिए अपनी लिखित अनुमति की भी जांच करें जिससे आप कमांड निष्पादित कर रहे हैं।


6
यह नहीं है की जरूरत है हाइफ़न, लेकिन वे एक समस्या नहीं होनी चाहिए, वे सिर्फ वैकल्पिक हैं
माइकल Mrozek

18
@MichaelMrozek वास्तव में, हटाने से -फर्क पड़ता है, क्योंकि GNU टार quirky है। विकल्प तर्क को पहले तर्क में बंडल नहीं किया जा सकता है जब यह एक के साथ शुरू नहीं होता है -, इसलिए तर्क fअगले तर्क के लिए है tar, और इसलिए tar vcfz dvr_rdk_v1.tar.gzइसके बराबर है tar -v -c -f dvr_rdk_v1.tar.gz -z
गाइल्स का SO- बुराई से रोकना '

1
मुझे यह भी एहसास हुआ कि अगर मैं हटा देता हूं zया शामिल jहोने के बावजूद संग्रह संपीड़न सफल होता -है। जब मैं हाइफ़न को शामिल करता हूं तो यह शामिल होता है कि विकल्प में अंतिम वर्ण "फ़ाइल" के रूप में माना जाता है। इसलिए एक परिणाम के रूप में मुझे jया zएक संग्रहीत फ़ाइल के रूप में अगर मैं इस विकल्प का उपयोग करता हूं -cvfzया -cvfj
जॉनीक्यू

9
सारांश: यदि अंतिम विकल्प की तुलना में कहीं भी एक विकल्प के रूप में 'एफ' होता है, तो कमांड वह नहीं करेगा जो इरादा था। मैं यह नहीं देखता कि जब वे इतने गंभीर और आसानी से पहचाने जाने योग्य मुद्दे का पता लगाते हैं तो गन्नू कैसे चेतावनी नहीं दे सकता। मैंने सिर्फ 40 मिनट बिताए इस विचित्रता को खत्म करने की कोशिश की। इस एक ने हजारों-हज़ारो घंटे की उत्पादकता को बर्बाद किया होगा।
smci

57

-fविकल्प सीधे फ़ाइल नाम पूर्व में होना चाहिए। तो, के tar -vczf filename.tar.gzबजाय का उपयोग करें-vcfz


आह यह बताता है कि मैं जिस कमांड का उपयोग कर रहा हूं वह क्रमशः और इन कमांड के साथ jया इसके zसाथ एक संपीड़ित आर्काइव फ़ाइल बनाने की कोशिश क्यों करता है । -cvfj-cvfz
जॉनीक्यू

17

टार आदेश ऐतिहासिक दृष्टि से कुछ आदेशों का पालन नहीं करता है कि यूनिक्स से एक रहा है उपयोगिता वाक्य रचना के दिशा निर्देशों

टार के लिए मानक पृष्ठ कहता है:

f
सिस्टम-निर्भर डिफ़ॉल्ट के बजाय संग्रह के नाम के रूप में पहली फ़ाइल ऑपरेंड (या दूसरा, यदि बी पहले ही निर्दिष्ट किया गया है) का उपयोग करें।

जबकि सिंटैक्स दिशानिर्देशों में यह शामिल है:

दिशानिर्देश 5:
विकल्प-तर्कों के बिना एक या एक से अधिक विकल्प, इसके बाद विकल्प-तर्क लेने वाले अधिकांश एक विकल्प को स्वीकार किया जाना चाहिए, जब एक के पीछे समूहबद्ध किया जाए - 'सीमांकक।

इसलिए जब आपने जो कमांड टाइप किया था, tar -vcfz dvr_rdk_v1.tar.gz dvr_rdk/वह टार के पुराने संस्करणों पर ठीक होगा, टार के कुछ संस्करण जो उपयोगिता सिंटैक्स दिशानिर्देशों का कड़ाई से पालन करने के लिए लिखे गए हैं, इसका अर्थ " zफ़ाइल तर्क के रूप में उपयोग करना -f" होगा। तो आपको पोर्टेबल होने के लिए निम्नलिखित का उपयोग करना चाहिए:

tar -cvzf dvr_rdk_v1.tar.gz dvr_rdk/

-1

आर्काइव बनाने के लिए

$ tar -cvf music.tar Music/

यह फ़ाइल और फ़ोल्डरों की सूची दिखाता है

$ tar -tvf music.tar         

और फिर से निकालने के लिए

$ tar -xvf music.tar         

यह वास्तव में उसकी त्रुटि की व्याख्या नहीं करता है, है ना? यह केवल के उपयोग की व्याख्या कर रहा है tar
बर्नहार्ड

1
@Bernhard खैर, अपनी त्रुटि है कि वह उपयोग कर रहा था था tarगलत है, हालांकि यह अच्छा है कम से कम क्या मुख्य अंतर (चलती है उल्लेख करने के लिए -fसमाप्त करने के लिए)
माइकल Mrozek

2
@MichaelMrozek खैर, वह अंत में zडाल की तुलना में बाहर छोड़ दिया f, इसलिए मेरी टिप्पणी।
बर्नहार्ड

Ubuntu के लिए काम करने वाला यह आदेश, यह सफल होगा
धामु

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