tar कमांड - सीमलाइक छोड़ें


13

मैं टार कमांड का उपयोग करता हूं,

tar -cvf protTests.tar protTests/*

करने के लिए tarफ़ोल्डर के अंदर सभी फाइलों, protTests। लेकिन यह फ़ोल्डर के अंदर प्रतीकात्मक लिंक सहित है, जो एक वांछित नहीं है।

क्या कोई कमांड लाइन विकल्प है, जो सभी सिम्बलिंक को छोड़ देगा?

जवाबों:


11

आप ऐसा कर सकते हैं, उन tarसभी फाइलों की एक सूची के साथ आपूर्ति करने के लिए protTestsजो सिम्बल हैं।

find protTests -maxdepth 1 -mindepth 1 -not -type l -print0 |
  tar --null --files-from - -cvf protTests.tar

वैसे, आपकी मौजूदा कमान:

tar -cvf protTests.tar protTests/*

में सभी फ़ाइलों को संग्रहीत नहीं protTestsकिया जाएगा, यह केवल उन लोगों को संग्रहीत करेगा जिनके नाम .(जो छिपे नहीं हैं) से शुरू नहीं होते हैं। *ग्लोब ऑपरेटर फ़ाइलें हैं जिनके नाम के साथ शुरू छोड़ देता है तो .डिजाइन द्वारा। कमांड में यह भी समस्या है कि अगर protTestsबहुत सारी फाइलें (कई हजार से अधिक) हैं, तो protTests/*कमांड लाइन पर फिट होने के लिए बहुत सारे तर्कों का विस्तार कर सकते हैं।

इस तरह की एक सरल कमांड में न तो कोई समस्या होगी:

tar -cvf protTests.tar protTests

1
टार का कोई विकल्प नहीं है --files-from, यह gtar का एक विकल्प है, इसलिए आप ऐसी सलाह देते हैं, बेहतर उल्लेख करते हैं कि यह gtar विशिष्ट है। ढूँढें का कोई प्राथमिक नहीं है -not, यह एक और गैर-पोर्टेबल GNUism है। सामान्य तौर पर, एक अलग खोज कॉल का उपयोग करना एक बुरा विचार है। यह फ़ाइल नाम में मज़ेदार पात्रों के साथ समस्याएँ दे सकता है और यह निश्चित रूप से कम प्रदर्शन देता है क्योंकि फाइल सिस्टम को खोजने के लिए टार की आवश्यकता होती है। ये समस्याएँ स्टार जैसे कार्यक्रमों पर लागू नहीं होती हैं जो कामेच्छा का उपयोग करते हैं और इस प्रकार इसमें पाया गया कोड शामिल होता है।
विद्वान

मुझे एक और सामान्य संकेत जोड़ने दें: एक सलाह देते समय जो कि UNIX प्रोग्राम के विक्रेता विशिष्ट संस्करण के लिए विशिष्ट है, विक्रेता का उल्लेख करना अच्छा है और यह विक्रेता विशिष्ट है। यह आमतौर पर सॉफ्टवेयर के आधिकारिक नामों का उपयोग करके किया जा सकता है, जैसे टार के बजाय गेदर, vi के बजाय vim। ध्यान दें कि यह एक UNIX संबंधित सूचना प्लेटफ़ॉर्म है, इसलिए सामान्य उदाहरणों में POSIX मानक के साथ गठबंधन किया जाना चाहिए।
विद्वान

आप सही कह रहे हैं, @schily, यह एक GNU- विशिष्ट समाधान है। आपके उत्तर पर आधारित starएक अच्छा विकल्प है और मैंने इसे उसी कारण से उकेरा है। मैं "मजेदार पात्रों" की आपत्ति से भी सहमत हूं, लेकिन चूंकि जीएनयू में यह विकल्प tarनहीं है कि -0यह एक व्यापार है। मैं प्रदर्शन आपत्ति से सहमत नहीं हूं, इस स्थिति में वास्तव में इसका कोई परिणाम नहीं है।
सेलदा

2
@ सामान्य तौर पर, दोनों GNU tarऔर bsdtarहै --files-fromऔर --nullजो अजीब चरित्र के साथ समस्या को दूर करता है (यदि find's -print0या के साथ संयुक्त -exec printf '%s\0' {} +)। लेकिन यहाँ, आप शायद --no-recursionविकल्प जोड़ना चाहते हैं । कुछ paxकार्यान्वयन में एक -0विकल्प भी है ।
स्टीफन चेजलस

2
@ मुझे लगता है कि यह टिप्पणी धागा विभिन्न संस्करणों के लिए वकालत के लिए जगह नहीं है tar। कृपया इसे चैट पर ले जाएं । यह पहले से ही बहुत लंबा है और धार्मिक युद्ध की तरह है। जब तक इस बिंदु पर ओपी झंकार नहीं करता, मुझे नहीं लगता कि यह मायने रखता है कि इसका tarउपयोग किस संस्करण में है। हमें यह भी पता नहीं है कि वे किस तरह के यूनिक्स का उपयोग कर रहे हैं।
सेलडा

-2

मेरा टार कार्यान्वयन सबसे अच्छा तरीका है

star -cv -f out.tar -find protTests ! -type l

8
zsh: command not found: starजब आप उन उपयोगिताओं का उल्लेख करते हैं जो आप जानते हैं> आपके पाठकों के 99% आपके सिस्टम पर नहीं होंगे, तो उन्हें कहां से समझाएं। और आपको अपने स्वयं के उत्पाद का उल्लेख करते समय अपनी संबद्धता का खुलासा करना होगा (चाहे आप लिंक पोस्ट करें या नहीं, इसलिए आप लिंक को पोस्ट कर सकते हैं)।
गाइल्स का SO- बुराई पर रोक '22

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

8
अधिकांश लोग जो अक्सर टार का उपयोग करते हैं, उन्होंने कभी भी पैक्स के बारे में नहीं सुना है, अकेले सितारा जाने दें।
गिल्स एसओ- बुराई को रोकना '

वैसे वे लोग जो नहीं जानते हैं कि वे लिनक्स पर gtar का उपयोग कर रहे हैं जब वे "टार" कहते हैं तो वे वैसे लोग नहीं होते जो किसी भी तरह से परवाह करते हैं। स्टार सबसे पुराना मुफ्त टार कार्यान्वयन है और विभिन्न टार कार्यान्वयन में देखी गई कई विशेषताओं को स्टार से लिया गया है, इसलिए मूल के बारे में बात क्यों नहीं की जाती है?
शिल्पी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.