मैंने सोचा tar archive.tar /users/mylocation
काम करेगा, लेकिन ऐसा नहीं है । मैं ऐसा कैसे कर सकता हूं?
वर्तमान से अलग निर्देशिका में एक संग्रह निकालने के लिए, का उपयोग करें -C
, या --directory
, टार विकल्प, जैसा कि
tar -xf archive.tar -C /target/directory
ध्यान दें कि उस कमांड को चलाने से पहले लक्ष्य निर्देशिका मौजूद होनी चाहिए (इसे इसके द्वारा बनाया जा सकता है mkdir /target/directory
).
पढ़ें मैनुअल पेज (आदेश: man tar
) अन्य विकल्पों के लिए ।
ध्यान दें कि यदि आपके टैरबॉल में पहले से ही एक निर्देशिका नाम है जिसे आप बदलना चाहते हैं, तो जोड़ें --strip-components=1
विकल्प:
tar xf archive.tar -C /target/directory --strip-components=1
पिछले उत्तरों और टिप्पणियों का संयोजन:
केवल सामग्री निकालने और लक्ष्य निर्देशिका बनाने के लिए यदि यह गायब है:
mkdir -p /target/directory && tar xf archive.tar -C /target/directory
ज़िप में रूट(प्रथम स्तर) निर्देशिका को निकालने और निकालने के लिए
mkdir -p /target/directory && tar xf archive.tar -C /target/directory --strip-components=1
एक अन्य विकल्प का उपयोग करना है-एक-शीर्ष-स्तर । यह स्वचालित रूप से मूल के फ़ाइल नाम के आधार पर एक निर्देशिका बनाएगा ।
tar zxvf filename.tgz --one-top-level
इसके अतिरिक्त यदि आप चाहें, तो आप अपना खुद का निर्दिष्ट कर सकते हैं और टार इसे स्वचालित रूप से बना देगा ।
tar zxvf filename.tgz --one-top-level=new_directory
निष्कर्षण के संबंध में मुझे जो दिलचस्प लगा, वह यह है कि यह निर्भर करता है कि आपने संग्रह कैसे बनाया, यह उदाहरण देखें
cd /tmpmkdir foldertouch folder/file.txt
जब आप करते हैं tar -zcvf folder.tar.gz folder
सब कुछ अपेक्षित है = जब आप इसे अनटार करते हैं तो अब यह अनटारर्ड हो जाएगा (फ़ोल्डर बनाया जाएगा, यदि आपने इसे हटा दिया है) के रूप में /tmp/folder/
.
लेकिन, जब आप टार के रूप में बनाएंगे tar -zcvf tmp-folder.tar.gz /tmp/folder
और आप इसे /टीएमपी फ़ोल्डर में अनटार करते हैं, परिणाम होगा /tmp/tmp/folder
निर्देशिका ! ऐसे मामले में आपको इसे अनटार करना होगा / - tar -xf tmp-folder.tar.gz -C /
@ उज्जवाल सिंग: वास्तव में, टार मैन पेज इतना मददगार नहीं है । यह “-सी डीआईआर” को “निर्देशिका डीआईआर में बदलें” के रूप में वर्णित करता है । भी बदतर: “टार -सी mydir xf संग्रह है.टार “काम नहीं करता है, जबकि” टार एक्सएफ आर्काइव । टार -सी mydir” करता है.
इसके अलावा,- सी, --निर्देशिका डीआईआर\एन निर्देशिका डीआईआर में परिवर्तन
को`आउटपुट निर्देशिका को डीआईआर में बदलें (यदि डीआईआर मौजूद नहीं है तो विफल हो जाएगा) ’ के रूप में वर्णित किया जाना चाहिए । धन्यवाद @Mich. @ब्रायन_लर्सन का जवाब भी देखें ।
@ पटमोरिन निष्पक्ष होने के लिए, एक बार जब आप तर्क कॉलिंग सम्मेलनों को समझते हैं तो आप इसका उपयोग कर रहे हैं । आप ‘टार एक्सएफसी आर्काइव’ भी कर सकते हैं । टार मायदिर ’ या ’ टार-सी मायदिर-एक्सएफ आर्काइव । टार’ । यह केवल पारंपरिक शैली और जीएनयू-शैली के झंडे को मिला रहा है जो चीजों को तोड़ता है, जैसा कि । … ईमानदारी से उम्मीद की तरह है । पारंपरिक झंडे को पहले तर्क के रूप में एक बूँद के रूप में पारित किया जाता है । यदि वे पहले नहीं हैं तो आप उनसे काम करने की उम्मीद नहीं कर सकते । (मेरा मतलब है, हाँ, वैसे भी इसकी व्याख्या करना संभव है-मेरी बात यह है कि यह ऊपर और परे होगा, मानक नहीं)