क्या tar -xvf निर्देशिका से मौजूदा फ़ाइलों को हटाता है?


10

मेरे पास एक टार संग्रह है और मैं उपयोग करना चाहता हूं tar -xvf
इस टार आर्काइव में मेरे पास एक डायरेक्टरी ट्री है जिसमें एक दो फाइलें हैं। मेरे सोलारिस 10 सिस्टम पर यह डायरेक्टरी ट्री पहले से मौजूद है और इसमें कई फाइलें हैं।
यदि मैं संग्रह को अनपैक करता हूं तो पूरी निर्देशिका ट्री अधिलेखित है या केवल संग्रह में समाहित फ़ाइलें अधिलेखित हैं?
क्या जिन फ़ाइलों में उनके पास कोई अभिलेख नहीं है, उन्हें हटा दिया जाएगा?


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

जवाब न है। यदि आप पर्याप्त कठिन सोचते हैं, तो आप महसूस करेंगे कि इसका कोई मतलब नहीं है कि एक संग्रह से फ़ाइलों को निकालने का कार्यक्रम पूरी तरह से असंबंधित फ़ाइलों को हटा देगा।
फोस्को

जवाबों:


6

आपके पास पहले से मौजूद डुप्लिकेट फ़ाइलें आपके सिस्टम के आधार पर अनपैक्ड और अधिलेखित हो सकती हैं या नहीं। हालाँकि, यह आमतौर पर डिफ़ॉल्ट रूप से होता है। संग्रह में हैं, लेकिन आपके सिस्टम पर नहीं है फ़ाइलें बस आपके सिस्टम पर नए या मौजूदा निर्देशिका में जोड़ा जाएगा।

डिर /test

/1/a
c

पुरालेख test.tar

/1/b
d

संभवतः इसमें मिला दिया जाएगा:

/1/a
/1/b
c
d

-kटार कमांड में ध्वज जोड़ने से यह सुनिश्चित हो जाएगा कि आपकी लक्ष्य निर्देशिका की कोई भी फाइल अधिलेखित नहीं की जाएगी:

tar -xvkf test.tar

@ बीपी: ओवरराइट को शश के रूप में शेल पर निर्भर किया जा सकता है (अभी भी सूर्य पर डिफ़ॉल्ट शेल?) में एक "नोकलोबेर" शेल चर था जो सेट होने पर आकस्मिक ओवरराइट व्यवहार को रोकता है।
hotei

धन्यवाद ब्लडफिलिया और होटी। मैंने अपने सिस्टम पर एक परीक्षण किया है और टार -xvf उन फ़ाइलों को अधिलेखित करता है जो पहले से मौजूद हैं और जो मौजूद नहीं हैं उन्हें जोड़ता है। मैं यह जानना चाहूंगा कि क्या ऐसी कोई संभावना है कि पूरी निर्देशिका को अधिलेखित कर दिया जाए और इस प्रकार उन फाइलों को खो दिया जाए जो उस निर्देशिका में मेरे सिस्टम पर थीं, लेकिन संग्रह में नहीं थीं? उदाहरण के लिए: मेरे पास dir.tar dir / file2 है। मेरे सिस्टम पर मेरे पास dir / file1, dir / file2 और dir / file3 है। क्या यह संभव है कि अगर मैं tar -xvf dir.tar करूं तो पूरी dir ओवरराइट हो जाएगी और अब file1 और file3 नहीं होगी?
फेलिशिया

@hotei: noclobber(जो POSIX गोले btw में भी मौजूद है) केवल >fooशेल में से रीडायरेक्ट की गई फ़ाइलों को प्रभावित करता है । टार पर इसका कोई प्रभाव नहीं है।
गिल्स एसओ- बुराई को रोकना '

@hotei noclobber आपको शेल में पुनर्निर्देशन के माध्यम से फ़ाइलों को ओवरराइट करने से रोकता है। तो echo foo > bar.txtनहीं अधिलेखित bar.txt यदि वह मौजूद होगा। इस पर कोई प्रभाव नहीं पड़ता है कि कोई कार्यक्रम, जैसे टार, ओवरराइट करेगा।
कीथबी

1
@ फ़ेलिशिया: सिंगल यूनिक्स के अनुसार, टर्क उन फाइलों को नहीं मिटाएगा जो आर्काइव में नहीं थीं। यह संग्रह से सामग्री (लेकिन मोड नहीं) के साथ मौजूदा फ़ाइलों को अधिलेखित कर देगा। आस-पास गैर-आज्ञाकारी तार हो सकते हैं, लेकिन मुझे संदेह है कि उनमें से कोई भी असंबंधित फ़ाइलों को अधिलेखित करेगा जैसे कि dir/file1
गिलेस एसओ- बुराई को रोकना '

0

सबसे आसान तरीका एक नई, खाली निर्देशिका, सीडी को बनाना है, और वहां फाइलों को निकालना है। आपको सावधान रहने की जरूरत है कि निकाली गई फाइलें सापेक्ष हैं (शुरुआत /।) के साथ और पूर्ण नहीं (/ के साथ शुरू)। यदि आप नहीं जानते (तो -tvf tar_filename |)

आप पता लगा सकते हैं कि आपका टार संस्करण डिफ़ॉल्ट रूप से ओवरराइट करता है या मैन पेज को देखकर नहीं। टार निष्कर्षण के दौरान फ़ाइलों को नहीं हटाएगा, जो एक और कारण है कि लोग आमतौर पर निकालने से पहले एक नई, खाली निर्देशिका से शुरू करते हैं।

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