जवाबों:
आप सामान्य रूप से इसके लिए -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