जवाबों:
आप सामान्य रूप से इसके लिए -u ध्वज का उपयोग करेंगे। टार के मैन पेज से:
-u, --update only append files newer than copy in archive
इसलिए यह क्रम वही करेगा जो आपको चाहिए:
# First create the tar file. It has to be UNCOMPRESSED for -u to work
tar -cvf my.tar some-directory/
# ... update some files in some-directory
# ... add files in some-directory
# Now update only the changed and added files
tar -uvf my.tar some-directory/
# Compress if desired
gzip my.tar
थोड़ा और विस्तृत देखने के लिए, यहाँ देखें: http://www.gnu.org/software/tar/manual/html_node/how-to-update.html
आप संपीड़ित TAR संग्रह ( .tar.gz ) को एक चरण में अद्यतन नहीं कर सकते । लेकिन, यदि आपके पास पर्याप्त खाली जगह है तो आप ऐसा कर सकते हैं:
निकालें .tar से फ़ाइल .tar.gz फ़ाइल:
gunzip filename.tar.gz
कमांड के साथ असंपीड़ित .tar फ़ाइल अपडेट करें tar -u:
tar -uf filename.tar new_file
अद्यतन .tar फ़ाइल को संपीड़ित करें :
gzip filename.tar
यदि आपके पास मल्टी-कोर सीपीयू है, तो मैं निकालने pigzके gzipलिए उपयोग करने की सलाह देता हूं और .gz फाइलें बनाता हूं । ( pigzबहु-सूत्रीय कार्यान्वयन है gzip)
बस gzip/ gunzipआज्ञाओं को बदलें pigz/ unpigz।
यदि आप किसी विशेष फ़ाइल को *.tar.gzफ़ाइल में अपडेट करना चाहते हैं , तो बस निम्नलिखित करें:
viजहाँ tarफ़ाइल उपलब्ध है , वहाँ से प्रवेश करें
/home>vi
उदाहरण के लिए। यदि आप simple.tar.gz को संशोधित करना चाहते हैं जो /home/test/निर्देशिका के अंतर्गत है:
/home/test>vi
और खाली संपादक में प्रवेश करें :n simple.tar.gzऔर दबाएं Enter
आपको फ़ोल्डर और फ़ाइलों की सूची मिल जाएगी, जहां कर्सर संशोधित करना चाहते हैं और क्लिक करें Enter। यह viविशेष फ़ाइल के संपादक को दिखाएगा। फिर iफ़ाइल को बदलने का विकल्प। सफल बदलाव के बाद। प्रेस Escकुंजी और :wqलिखने के लिए और फ़ाइल से बाहर निकलें। फिर :qफ़ाइल सूची से बाहर आने के लिए उपयोग करें।
यदि आप इसे बार-बार करने जा रहे हैं, तो एक अनुकूलन हो सकता है:
if [[ -f my.tar.gz ]]; then
if [[ ! -f my.tar ]]; then
echo 'No tar, unzipping tar.gz'
gunzip my.tar.gz
fi
tar -uvf my.tar file1 file2 file_new
gzip -fk my.tar # This keeps a copy of the tar.
# -f --force overwrite existing .tar.gz
# -k --keep Keep the input file (.tar file)
else
tar -cvzf my.tar.gz file1 file2
fi