सवाल 'Tar' कमांड का उपयोग करके फ़ाइलों को किसी अन्य निर्देशिका में निकालने के लिए कैसे करें?


मैंने सोचा tar archive.tar /users/mylocation काम करेगा, लेकिन यह नहीं करता है। मैं उसे कैसे कर सकता हूँ?


582
2018-05-26 16:01


मूल


इसके अलावा, -C, --directory DIR\n change to directory DIR इसके बजाय वर्णित किया जाना चाहिए change output directory to DIR (will fail if DIR doesn't exist)। धन्यवाद @ मिच। @ ब्रायन_लेर्सन का जवाब भी देखें। - valid
@ उज्जवल सिंग: दरअसल, टैर मैन पेज उपयोगी नहीं है। यह "-सी डीआईआर" का वर्णन करता है "निर्देशिका डीआईआर में बदलें"। इससे भी बदतर: "tar-c mydir xf archive.tar" काम नहीं करता है, जबकि "tar xf archive.tar -C mydir" करता है। - Pat Morin


जवाब:


वर्तमान से अलग निर्देशिका में एक संग्रह निकालने के लिए, का उपयोग करें -C, या --directory, टैर विकल्प, के रूप में

tar -xf archive.tar -C /target/directory

ध्यान दें कि उस आदेश को चलाने से पहले लक्ष्य निर्देशिका मौजूद है (इसे द्वारा बनाया जा सकता है mkdir /target/directory)।

को पढ़िए मैनुअल पेज (आदेश: man tar) अन्य विकल्पों के लिए।


842
2018-05-26 16:16



हालांकि आपको मैन्युअल रूप से निर्देशिका बनाना है। - Jürgen Paul
क्या पथ छीन लिया जा सकता है: यानी बस फ़ाइल को पुनः प्राप्त करें - zzapper
यदि यह एक बड़ी फ़ाइल है, जब आप कमांड चलाते हैं, तो आपको यह मिलते समय कई सेकंड या मिनट तक कोई आउटपुट नहीं मिलता है। आप इसे जोड़कर इसे ठीक कर सकते हैं -v झंडा (वाचाल प्रकार) जो प्रत्येक फ़ाइल के नाम को सूचीबद्ध करता है क्योंकि यह इसे निष्कर्ष निकालता है। - IQAndreas
@consultstan xkcd.com/1168 - Duncan X Simpson
क्या यह आश्चर्यजनक नहीं है कि, इन सभी वर्षों के बाद, सभी विकल्पों के साथ tar जमा हुआ है, अभी भी एक विकल्प नहीं है अगर यह मौजूद नहीं है तो आउटपुट निर्देशिका बनाएं? - EM0


ध्यान दें कि यदि आपकी टैरबॉल में पहले से ही एक निर्देशिका नाम है जिसे आप बदलना चाहते हैं, तो जोड़ें --strip-components=1 विकल्प:

tar xf archive.tar -C /target/directory --strip-components=1

217
2018-05-21 18:32



धन्यवाद। Wget / etc के माध्यम से डाउनलोड हमेशा एक 'पैरेंट' निर्देशिका है। यह पूरा उत्तर आईएमओ है - या उपर्युक्त उत्तर में ध्यान दिया जाना चाहिए। - bshea


पिछले उत्तरों और टिप्पणियों का मिश्रण:

सामग्रियों को निकालने और लक्ष्य निर्देशिका बनाने के लिए यदि यह गुम है:

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

21
2018-06-27 19:29





एक और विकल्प - एक शीर्ष-स्तर का उपयोग करना है। यह स्वचालित रूप से मूल के फ़ाइल नाम के आधार पर एक निर्देशिका बना देगा।

tar zxvf filename.tgz --one-top-level

इसके अतिरिक्त यदि आप चाहते हैं, तो आप अपना खुद का निर्दिष्ट कर सकते हैं और टैर इसे स्वचालित रूप से बना देगा।

tar zxvf filename.tgz --one-top-level=new_directory

7
2018-03-22 21:49





टैर 1.2 9 के साथ, हम टैर फ़ाइल नाम के बाद ही निर्देशिका नाम जोड़ सकते हैं। उदाहरण के लिए,

tar zxvf tar-file directory-name/

2
2018-06-29 23:00





जो निष्कर्षण के संबंध में मुझे दिलचस्प लगता है, यह निर्भर करता है कि आपने संग्रह कैसे बनाया है, इस उदाहरण को देखें

cd /tmp
mkdir folder
touch folder/file.txt

जब तुम करोगे tar -zcvf folder.tar.gz folder सबकुछ अपेक्षित है = जब आप इसे अनारक्षित करते हैं तो यह अनारक्षित होगा (फ़ोल्डर बनाया जाएगा, अगर आपने इसे हटा दिया है) के रूप में /tmp/folder/

लेकिन, जब आप टैर बनायेंगे tar -zcvf tmp-folder.tar.gz /tmp/folder और आप इसे / tmp फ़ोल्डर में अनारक्षित करते हैं, परिणाम होगा /tmp/tmp/folder निर्देशिका ! इस तरह के मामले में आपको इसे / - tar -xf tmp-folder.tar.gz -C /


1
2017-09-01 22:25