निर्देशिका संरचना को बनाए रखने के बिना मैं एक निर्देशिका को कैसे टार कर सकता हूं?


85

मैं एक बैकअप स्क्रिप्ट पर काम कर रहा हूं और एक फ़ाइल निर्देशिका को टारगेट करना चाहता हूं:

tar czf ~/backup.tgz /home/username/drupal/sites/default/files

यह इसे टार्स करता है, लेकिन जब मैं परिणामी फ़ाइल को अनटार करता हूं, तो इसमें पूर्ण फ़ाइल संरचना शामिल होती है: फाइलें अंदर होती हैं home/username/drupal/sites/default/files

क्या अभिभावक निर्देशिकाओं को बाहर करने का कोई तरीका है, ताकि परिणामी टार को केवल अंतिम निर्देशिका ( files) के बारे में पता चले ?

जवाबों:


39
cd /home/username/drupal/sites/default/files
tar czf ~/backup.tgz *

19
आप टार के -C विकल्प का भी उपयोग कर सकते हैं।
गुरुग्राम

8
सीडी अनुशंसित नहीं है और त्रुटि प्रवण, उदाहरण के लिए बड़ी स्क्रिप्ट या मेकफाइल्स। नीचे दिया गया उत्तर अधिक सामान्यतः प्रयोग करने योग्य और सही है।
ग्रेगर

कोशिश करता है -Cऔर --directoryUbuntu 16.04 पर मेरे लिए काम नहीं किया। यह केवल विकल्प है जो काम करता है।
हक्सपोर

यह एकमात्र विकल्प है जो कार्य करता है -C ऐड करता है। रूट फ़ोल्डर, जो हम नहीं चाहते हैं।
निकोलस डोरिएर

167

-निर्देशिका विकल्प का उपयोग करें:

 tar czf ~/backup.tgz --directory=/home/username/drupal/sites/default files 

1
अगर मैं 2 निर्देशिका यहाँ रखना चाहता हूँ तो क्या होगा?
शनेपी झोउ

@ user3352668 बस दो निर्देशिकाओं को जोड़ें। उदाहरण के लिए, यदि डिफ़ॉल्ट में "फाइलें" और "अधिक फाइल" हैं, तो बस nbt के स्ट्रिंग में "अधिक फाइल" जोड़ें। Btw: सबसे अच्छा समाधान nbt का है, स्वीकृत उत्तर होना चाहिए
बेनामी

4
-सी डीआईआर एक ही है - अप्रत्यक्ष = डीआईआर , निर्देशिका को बदलकर डीआईआर
मार्कस

1
मैंने सोचा था कि मैं उल्लेख करूंगा कि यहाँ आदेश महत्वपूर्ण है। आपके पास --directory="/home/username/drupal/sites/default files"गंतव्य की सीमा नहीं हो सकती ~/backup.tgz
क्रिस स्ट्राइकसिनस्की

6
@ChrisStryczynski ध्यान दें कि --directoryविकल्प द्वारा दिया गया पथ नहीं है "/home/username/drupal/sites/default files"। इसके /home/username/drupal/sites/defaultबाद, स्थिति के तर्क के अनुसार निर्देशिका के नाम को टारड करने के लिए निर्दिष्ट किया जाता है files
चैप

51

नमस्ते मैं एक बेहतर समाधान है जब निर्दिष्ट निर्देशिका में दर्ज करें यह असंभव है (मेकफाइल्स, आदि)

tar -cjvf files.tar.bz2 -C directory/contents/to/be/compressed .

अंत में डॉट (!) मत भूलना !!


4
अंत में डॉट क्या करता है?
ब्रूस सन

3
@BruceSun The -C आपकी कार्यशील निर्देशिका को बदल देता है। डॉट टार को बताता है कि आप किस निर्देशिका को संग्रहित करना चाहते हैं (यानी वर्तमान वर्किंग डायरेक्टरी)।
user12345

2
यदि आप अंत में डॉट को छोड़ देते हैं, तो आप संभावित रूप से चेतावनी प्राप्त करेंगे: टार: कायरता से खाली संग्रह बनाने से इनकार करते हैं
user12345

3
हर कोई -C विकल्प या --directory के बारे में बात करता है लेकिन छोटे के बिना। '' अंत में @MaikolD ने इसका उल्लेख किया, यह काम नहीं करता है - कम से कम मेरे पर्यावरण पर।
अक्स

6
यह अभी भी .टार की जड़ में एक फ़ोल्डर के साथ आपको छोड़ देता है
इलेक्ट्रोविर

2

सभी txt (* .txt) फ़ाइलों /home/myuser/workspace/zip_from/ को /home/myuser/workspace/zip_to/बिना स्रोत की निर्देशिका संरचना के निर्देशिका से उपयोग करने के लिए गनज़िप करें:

tar -P -cvzf /home/myuser/workspace/zip_to/mydoc.tar.gz  --directory="/home/myuser/workspace/zip_from/" *.txt

2

टार आर्काइव बनाएं

tar czf  $sourcedir/$backup_dir.tar --directory=$sourcedir WEB-INF en

स्थानीय मशीन पर अन-टार फाइलें

tar -xvf $deploydir/med365/$backup_dir.tar -C $deploydir/med365/

एक सर्वर पर अपलोड करें

scp -r -i $privatekey $sourcedir/$backup_dir.tar $server:$deploydir/med365/
echo "File uploaded.. deployment folders"

सर्वर पर अन-टार

ssh -i $privatekey $server tar -xvf $deploydir/med365/$backup_dir.tar -C $deploydir/med365/

0

यह मेरे लिए काम किया:

gzip -dc "<your_file>.tgz" | tar x -C <location>

0

मेरे लिए -C या --directory काम नहीं करता है, मैं इसका उपयोग करता हूं

cd source/directory/or/file
tar -cvzf destination/packaged-app.tgz *.jar
# this will put your current directory to what it previously was
cd -

0

निर्देशिका संरचना के बिना टार फ़ाइल उत्पन्न करने के लिए कृपया निम्न कमांड का उपयोग करें

tar -C <directoryPath> -cvzf <Path of the tar.gz file> filename1 filename2... filename N

उदाहरण के लिए:

tar -C /home/project/files -cvzf /home/project/files/test.tar.gz text1.txt text2.txt

-3
tar -Cczf ~/backup.tgz /home/username/drupal/sites/default/files

-C आपके लिए cd करता है


यह काम नहीं करेगा। MaikoID और नील बटरवर्थ के समाधान देखें।
विंसेंट

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