जब फ़ाइलों को विभिन्न निर्देशिकाओं में संग्रहीत किया जाता है, तो मूल निर्देशिका को शामिल किए बिना एक टार आर्काइव बनाना


11

मेरे पास फ़ाइल सिस्टम में निम्नलिखित चार फाइलें हैं:

/home/martin/cvs/ops/cisco/b/s1
/home/martin/cvs/ops/cisco/b/s2
/home/martin/cvs/ops/extreme/b/r3
/home/martin/cvs/ops/j/b/r5

मुझे उन फ़ाइलों को टार आर्काइव में डालने की आवश्यकता है, लेकिन मैं निर्देशिकाओं को जोड़ना नहीं चाहता। सबसे अच्छा मैं साथ आ सकता था:

tar -C ~/cvs/ops/ -czvf archive.tgz cisco/b/s1 cisco/b/s2 extreme/b/r3 j/b/r5

यह अभी भी सही नहीं है, क्योंकि संग्रह में प्रत्येक फ़ाइल दो निर्देशिकाओं में गहरी है। क्या कोई बेहतर तरीका है? या मैं बस कॉपी करना है s1, s2, r3और r5एक निर्देशिका में फ़ाइलों और साथ संग्रह बना tar -czvf archive.tgz s1 s2 r3 r5?

जवाबों:


17

आप -Cकई बार उपयोग कर सकते हैं (एक निर्देशिका से दूसरे में जा रहे हैं):

tar czvf archive.tar.gz -C /home/martin/cvs/ops/cisco/b s1 s2 -C ../../extreme/b r3 -C ../../j/b r5

ध्यान दें कि प्रत्येक -Cविकल्प को उस बिंदु पर वर्तमान निर्देशिका के सापेक्ष व्याख्या की जाती है (या आप केवल पूर्ण पथ का उपयोग कर सकते हैं)।


11

यदि आपके पास फ़ाइल में फ़ाइलों की सूची है, या उन्हें कमांड का उपयोग करके उत्पन्न कर सकते हैं, तो आप एक एकल GNU टार कमांड का उपयोग कर सकते हैं:

tar cf foo.tar -T list-of-files --transform 's:.*/::'

परिवर्तन अभी भी निर्देशिकाओं को रखता है, लेकिन लेआउट को पूरी तरह से समतल करता है। तो आपको निर्देशिकाओं को फ़िल्टर करने के कुछ तरीके की आवश्यकता है, इसलिए फ़ाइलों की सूची की आवश्यकता है।


8

आप एक-एक करके फाइल को आर्काइव में जोड़ सकते हैं:

tar cf /tmp/archive.tar -C /home/martin/cvs/ops/cisco/b s1
tar rf /tmp/archive.tar -C /home/martin/cvs/ops/cisco/b s2
tar rf /tmp/archive.tar -C /home/martin/cvs/ops/extreme/b r3
tar rf /tmp/archive.tar -C /home/martin/cvs/ops/j/b r5

आप इसे आसान बनाने के लिए इसे स्क्रिप्ट कर सकते हैं: प्रत्येक पथ के लिए, tar rfआधार निर्देशिका के साथ -Cपैरामीटर के लिए मान और जोड़ने के लिए पथ के बिना आधार फ़ाइल नाम के साथ चलाएँ ।

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