टार: मनमानी अग्रणी निर्देशिका w / o 'cd'ing को पैरेंट डायर के साथ टार फाइल बनाने के लिए कैसे करें


23

कहो कि मेरे पास फाइलों की एक निर्देशिका है

/home/user1/dir1

और मैं अग्रणी निर्देशिका के रूप में केवल "dir1" के साथ एक टार बनाना चाहता हूं:

/dir1/file1
/dir1/file2

मुझे पता है कि मैं पहले निर्देशिका में सीडी कर सकता हूं

cd /home/user1/
tar czvf dir1.tar.gz dir1

लेकिन स्क्रिप्ट लिखते समय, निर्देशिका से निर्देशिका तक कूदना हमेशा अनुकूल नहीं होता है। मुझे आश्चर्य है कि वर्तमान निर्देशिकाओं को बदलने के बिना पूर्ण पथ के साथ ऐसा करने का एक तरीका है?

मुझे पता है कि मैं हमेशा पूर्ण पथ INSIDE और उपयोग के साथ एक टार फ़ाइल बना सकता हूं

--strip-components 

जब निकालते हैं लेकिन कभी-कभी अतिरिक्त पथ नाम अतिरिक्त निजी जानकारी होती है जिसे आप अपनी टार फ़ाइलों के साथ वितरित नहीं करना चाहते हैं।

धन्यवाद!

जवाबों:


24

टार -सी परिवर्तन निर्देशिका

tar -C /home/user1/ -cvzf dir1.tar.gz dir1

btw, बदलते निर्देशिकाओं पर नज़र रखने के लिए एक काम ... धक्का और popd का उपयोग करें।

pushd .
cd /home/user1
tar cvfz dir1.tar.gz
popd

1
धन्यवाद। मुझे नहीं पता था कि "-C" विकल्प का उपयोग अन्य विकल्पों से पहले किया जाना है ... मैंने "tar -cvzf dir1.tar.gz dir1 -C / home / user1 /" की कोशिश की, लेकिन इससे पहले कि यह काम नहीं किया।
यान

1
काम नहीं करता: टार: डायर: स्टेट नहीं कर सकता: ऐसी कोई फ़ाइल या निर्देशिका (dir1 के तहत / घर / उपयोगकर्ता 1 / नहीं है)
ट्राइब्लॉयड

21

गन्न टार के साथ, आप वास्तविक के साथ एक अलग बेस डायरेक्टरी के साथ एक आर्काइव बना सकते हैं:

tar -c --transform 's,^\.,mybasedir,' .

बस अपनी आवश्यकताओं के लिए sed अभिव्यक्ति को अनुकूलित करें।


5

ठीक है, मुझे भी पता चला

tar -czvf file1.tar.gz /home/user1/dir1/../dir1

जिस तरह से मैंने चाहा वैसे काम किया।


हालाँकि वाइल्डकार्ड जैसे "*" तब काम नहीं करते हैं
कर्टिस यलोप

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