जवाबों:
आसान तरीका, अगर आपको विशेष रूप से कुछ अन्य निर्देशिका में बदलने के लिए बताने के लिए उपयोग करने की आवश्यकता नहीं है, तो बस कमांड लाइन पर संग्रह के लिए पूर्ण पथ निर्दिष्ट करना है। फिर आप उस निर्देशिका में हो सकते हैं जो आप उस निर्देशिका संरचना को बनाना चाहते हैं जिसे आप संग्रह के अंदर चाहते हैं।-Ctar
निम्नलिखित आर्काइव बनाएगा /var/www/file.tar.gzऔर file1इसमें वर्तमान निर्देशिका (जो कुछ भी होता है) से डाला जाएगा, जिसमें कोई संग्रह जानकारी नहीं होगी।
tar czf /var/www/file.tar.gz file1
पथ (या तो संग्रह, घटक फ़ाइलें, या दोनों) निश्चित रूप से भी सापेक्ष हो सकता है। अगर file1है /tmp, तो आप कर रहे हैं /var/spoolऔर संग्रह में बनाना चाहते हैं /var/www, तो आप की तरह कुछ इस्तेमाल कर सकते हैं:
tar czf ../www/file1.tar.gz /tmp/file1
विषय पर एक लाख रूपांतर हैं, लेकिन यह आपको आरंभ करना चाहिए। vध्वज जोड़ें यदि आप देखना चाहते हैं कि tarवास्तव में क्या करता है।
$PWDहै, उदाहरण में एक निरपेक्ष पथ का उपयोग करना सबसे सुरक्षित लग रहा था।
file1टार संग्रह में पथ होगा /tmp। यह वही हो सकता है या नहीं जिसकी आप अपेक्षा करते हैं।
मैं संपीड़ित डेटा को एक स्ट्रीम (-) में बदल देता हूं और आसानी से नाम बदला और ढूँढता हूं (>) जहां भी मैं चुनता हूं (इसके अलावा मैं हमेशा सापेक्ष पथ को टारगेट करता हूं (/!) तो यह आसान है जब इसे अनसुना कर दिया जाए)
tar -cvf - ./dir-to-compress/* > /location-of-new-file/filename.tar
-Cबहुत अधिक मुहावरेदार (और कम) है।
मुझे लगता है, यह होना चाहिए:
tar czf file.tar.gz -C /var/www/ file1
जो मेरे लिए काम करता है। यह निर्देशिका को बदलने और फिर फ़ाइल चुनने के लिए कहता है।
-C(जो कि इसके प्रलेखित अस्पष्ट रूप में अजीब नहीं है)। जानकारी के लिए देख serverfault.com/q/416002/86283 ।