टार - बाहर काम नहीं करता है


3

मैं एक निर्देशिका को टार के साथ संग्रहित करने और कुछ फ़ाइलों को बाहर करने वाला हूं। मेरे पास एक निर्देशिका $ HOME / java है जिसमें कुछ .java और .class फाइलें शामिल हैं। मैं जो करना चाहता हूं, वह सभी .class फ़ाइलों को -X बहिष्कृत विकल्प का उपयोग करके बाहर करना है।

मैंने खोज का उपयोग करके एक बहिष्कृत फ़ाइल बनाई है

$ find $HOME/java -name "*.class" > Exclude

फिर डायरेक्टरी को आर्काइव करने की कोशिश की

$ tar -cvfX java.tar Exclude $HOME/java

लेकिन किसी तरह यह बाहर नहीं करता है। सोलारिस पर टार संस्करण नाम से बहिष्करण का समर्थन नहीं करता है।

जवाबों:


3
 tar -cvf java.tar --exclude="*.class" $HOME/java

वहाँ से man पेज:

--exclude pattern

    Do not process files or directories that match the specified pattern.  
    Note that exclusions take precedence over patterns or filenames 
    specified on the command line.

होमवर्क के लिए, मैं उत्तर पोस्ट करने के बजाय ओपी को सही दिशा में इंगित करने का सुझाव देता हूं।
Aaron Digulla

man tar एक उत्तर के लिए बहुत छोटा है;) - लेकिन मैं इसे अपने दिमाग में रखूंगा।
miku

2
@ ऐरन - मुझे संदेह है कि होमवर्क का पहलू टार का उपयोग करने पर नहीं है, बल्कि यह कि उसे अपने होमवर्क को टारबॉल के रूप में बदलना होगा। स्पष्ट निर्देश, इस मामले में, संभवतः स्वीकार्य हैं।
tvanfosson

1
--exclude केवल GNU टार के लिए है, न कि सोलारिस देशी टार के लिए। (हालांकि मूल पोस्टर यह जांचना चाह सकता है कि सिस्टम पर GNU टार भी स्थापित है या नहीं /usr/sfw/bin, /usr/local/bin, /usr/gnu/bin, /opt/sfw/bin या /opt/csw/bin।)
alanc

4

आपका सिंटैक्स टार के सोलारिस संस्करण के लिए पूरी तरह से सही है, वास्तव में मैंने इसे रूट और नॉन-रूट उपयोगकर्ता के रूप में सोलारिस 8 और 10 पर आजमाया।

क्या आप सुनिश्चित हैं कि उसने इसे बाहर नहीं किया था? वर्बोज़ मोड -v विकल्प में, बहिष्कृत फ़ाइल अभी भी सूचीबद्ध है और अंतिम फ़ील्ड के आकार के बजाय "बहिष्कृत" कहती है।

क्या कोई त्रुटि संदेश हैं? यदि यह फ़ाइल को बाहर नहीं खोज या पढ़ सकता है, तो यह कहेगा ...

 tar c[BDeEFhilnopPqTvw@[0-7]][bfk][X...] [blocksize]
     [tarfile] [size] [exclude-file]...
     {file | -I include-file | -C directory file}...

अंत में इस सवाल का जवाब दिया और जवाब दिया कि सोलारिस पर टार को देखते हुए बहुत लंबा समय बिताया है - 'बाहर फ़ाइल 'फ़ाइल नाम की सूची के बजाय (मेरे मामले में एक) सहज नहीं है।
DaveRlz

1

टार में नाम पैटर्न द्वारा फ़ाइलों को बाहर करने का एक विकल्प है। इसके बजाय वह प्रयास करें।

यदि आप एक बहिष्कृत फ़ाइल का उपयोग करना चाहते हैं, तो सुनिश्चित करें कि पथ (यानी जो हैं tar आउटपुट और फ़ाइल में) बिल्कुल समान हैं। तो जबकि "ए / बी" कमांड लाइन पर "ए / बी" के समान है, यह अलग है tar


2
-1 - वह कैसे का उपयोग करने वाला है जिसके आउटपुट के साथ find, बहुत सारी फाइलें?
unbeli

आप क्या सुझाव दे रहे हैं? वह एक संपादक के साथ फाइल को "बाहर" नहीं खोल सकता है और इसकी तुलना ऊपर दिए गए टार कमांड के आउटपुट से कर सकता है
Aaron Digulla

2
@Aaron Digulla आपने अपना उत्तर संपादित किया है, दूसरे पैराग्राफ को जोड़ते हुए। मेरी टिप्पणी पहली पंक्ति के लिए थी, जिसमें नाम से फाइलों को छोड़कर सुझाव दिया गया था, जो स्पष्ट रूप से व्यावहारिक नहीं है
unbeli

1

यदि आप वास्तव में -X विकल्प का उपयोग करना चाहते हैं, तो यह प्रयास करें:

tar -cvf java.tar -X Exclude $HOME/java

+1 स्ट्रेंज पर्याप्त है, यह काम करता है, हालांकि मैंने इसे यूनिक्स पावर टूल्स में अलग-अलग पढ़ा है, पैराग्राफ 38.12 राइट ऑर्डर में टारगेट आर्ग्युमेंट्स प्राप्त कर रहा है।

उह, संतरी, केवल GNU टार के साथ इस तरह से काम करता है ...

1

ध्यान दें कि यदि आपको सापेक्ष रास्तों के बारे में ध्यान रखने की आवश्यकता है।

इसलिए आपको उपयोग करने की आवश्यकता है ./fileToExclude में Exclude फ़ाइल - पूर्ण पथ फ़ाइल नाम नहीं।

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