उन्हें कॉपी किए बिना किसी अन्य निर्देशिका से फ़ाइलें टार


10

इसमें विशेषज्ञों के लिए यह बहुत सरल होना चाहिए।

मेरे पास केवल 6GB के उपयोगकर्ता डिस्क कोटा के साथ एक लिनक्स खाता है। /optसंपीड़ित 1GB होने पर लगभग 3GB डेटा के साथ कुछ डेटा-फ़ोल्डर है । भीतर कुछ प्रतीकात्मक लिंक हैं data-folder। आमतौर पर काम का बैकअप लेने के लिए मैं निम्नलिखित कार्य करता था।

cp -rvfL /opt/data-folder ~/
cd ~/
tar -zcvf data-folder.tar.gz data-folder
rm -rvf data-folder

अब मैंने अपने यूजर डिस्क कोटे में 2.5GB का उपभोग कर लिया है, मेरे पास अपने घर में फ़ाइलों को कॉपी करने के लिए पर्याप्त जगह है, लेकिन tarफिर से नहीं।

क्या किसी एक कमांड का उपयोग करके किसी फोल्डर को कॉपी और कॉपी करने का कोई तरीका है।

पुनश्च मैं टारगेट नहीं कर सकता /optक्योंकि मैंने केवल पढ़ने के लिए उपयोग किया है /opt


आप निश्चित रूप से / ऑप्ट कर सकते हैं, आप वहां नहीं लिख सकते, बस। 'F' फ्लैग टू टार (3) रिजल्ट को उस फाइल में जमा करने के लिए कहता है, जो बहुत अच्छी तरह से कहीं और हो सकता है। यानी, cd /opt; tar zcf $HOME/junk.tar.gz junk
वॉनब्रांड

जवाबों:


5

आप उस स्थान से दूर एक टार फाइल बनाना चाहते हैं जिस फाइल को आपको टार रेजिड करने की आवश्यकता है?

इसे करने के कई तरीके हैं।

यदि इसे स्थानीय रूप से बनाया जाना है (= एक ही मशीन पर):

tar czvf /path/to/destination/newfile.tar.gz  ./SOURCEDIR_OR_FILES

आप उस कमांड के अंत में अतिरिक्त फाइल या निर्देशिका को जोड़ सकते हैं।

यदि इसे दूरस्थ रूप से बनाया जाना है (अर्थात, आप दूरस्थ होस्ट पर टार फ़ाइल बनाना चाहते हैं जिसमें डेटा टार होने वाला है):

tar czvf - ./SOURCEDIR_OR_FILES | ssh user@host 'cat > newfile.tar.gz'

बाद का संस्करण बहुत बहुमुखी है। उदाहरण के लिए आप एक ही तकनीक का उपयोग करके एक डायरेक्टरी + सबडिर्स को "डुप्लिकेट" भी कर सकते हैं:

एक निर्देशिका + उपखंड को किसी अन्य स्थानीय निर्देशिका में डुप्लिकेट करें:

tar cf - ./SOURCEDIR_OR_FILES | ( cd LOCAL_DEST_DIR && tar xvf - )

किसी अन्य दूरस्थ निर्देशिका के लिए एक निर्देशिका + उपखंडों की नकल करें:

tar cvf - ./SOURCEDIR_OR_FILES | ssh user@host 'cd REMOTE_DEST_DIR && tar xf - '

'V' को ड्रॉप करें यदि आपको फ़ाइलों को प्रदर्शित करने की आवश्यकता नहीं है क्योंकि वे टार-एड (या अनरेड) हैं: तो यह बहुत तेज़ी से चलेगा, लेकिन जब तक कोई त्रुटि न हो, तब तक बहुत कुछ नहीं कहेंगे।

मैं स्रोत के लिए "/।" का उपयोग करता हूं ताकि टार को मजबूर करने के लिए इसे एक विश्वसनीय पथ के रूप में संग्रहीत किया जा सके। कुछ मामलों में आप अतिरिक्त पथ जानकारी जोड़ना चाहेंगे:

उदाहरण के लिए, crontab फ़ाइलों को टारगेट करने के लिए, जिसमें आप / etc शामिल हैं, आप कर सकते हैं:

cd / ; tar czf all_crons.tgz  ./etc/*cron*  ./var/spool/cron

मैं उद्देश्य के सापेक्ष पथ का उपयोग करता हूं: टार के कुछ ओएलडी संस्करण खतरनाक हो सकते हैं और अपने मूल वैश्विक पथ के साथ फाइलें निकाल सकते हैं, जिसका अर्थ है कि आप कर सकते हैं: cd /safedir ; tar xvf sometarऔर उनके मूल पथ पर वैश्विक नामों को अधिलेखित करने वाली फाइलें हैं, जो कि OUTSIDE / safedir है। और इसके नीचे नहीं! बहुत खतरनाक है, और अभी भी संभव है क्योंकि वहाँ पुराने उत्पादन सर्वर हैं। बेहतर होगा कि आप हर समय सापेक्ष रास्तों का उपयोग करें, भले ही आप अधिक हाल के टार का उपयोग करें।


टार के बीच अंतर के बारे में एक और नहीं: कुछ पर आपको -cvfइसके बजाय उपयोग करने की आवश्यकता हो सकती है cvf, अन्य लोग -शैली को नहीं पहचान पाएंगे । और z"सेक के साथ सेक" का मतलब था, लेकिन 'हाल के' टार पर इसका मतलब है "गज़िप के साथ सेक"। आप पता कर सकते हैं जो संपीड़न के साथ एक फ़ाइल पर प्रयोग किया जाता है: file zefile। और फिर उसी के अनुसार इसका नाम बदलें (यदि आपका टार उपयोग करते हैं compress, तो इसका बेहतर नामकरण होना चाहिए .tar.Z not .tar.gz)
ओलिवियर

0

-hटार विकल्प का उपयोग करें । मैन पेज से:

-h, --dereference
don't archive symlinks; archive the files they point to

तो आप उपयोग कर सकते हैं tar -zcvfh data-folder.tar.gz /opt/data-folder


ओह, मुझे इसका उल्लेख करना चाहिए, मैंने पहले ही टार -zcvfh ~ / data-folder.tar.gz / opt / data-folder की कोशिश की। मैं किसी तरह की सर्कुलर आर्काइव समस्या में पड़ रहा हूं। मैं कुछ फाइलें कॉपी करता रहता हूं और कभी खत्म नहीं होता।
कामथ

ऐसा लगता है कि डेटा के उप फ़ोल्डर में एक परिपत्र प्रतीकात्मक लिंक है।
कामथ 12

2
@ गौजमठ, कि ग्नू टार में एक बग है। आप bsdtarइसके बजाय कोशिश करना चाह सकते हैं , या pax( cd /opt && pax -Lw data-folder | gzip > ~/data-folder.tar.gz) जो छोरों का पता
लगाएंगे

1
@AUZKamath आप एक साथ टार कर सकते हैं और tar -rf <tarfilename> <filename>मौजूदा टार फाइल में जोड़ने के लिए अपने होम डाइरेक्टरी उपयोग की फाइलों को हटा सकते हैं ।
harish.venkat

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