मैं एक tar.gz फ़ाइल को कैसे अपडेट कर सकता हूं?


32

मैंने एक tar.gz फ़ाइल (GUI का उपयोग कर, कमांड लाइन नहीं) बनाई है। मैं इसे एक कमांड से कैसे अपडेट कर सकता हूं कि नई फाइलें जोड़ी गई हैं और संशोधित फाइलें भी अपडेट हैं?


जवाबों:


28

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


2
ओपी संकुचित संग्रह को अद्यतन करने के बारे में पूछ रहा था जिसे अद्यतन नहीं किया जा सकता है।
QZZ

18

समाधान / समाधान

आप संपीड़ित TAR संग्रह ( .tar.gz ) को एक चरण में अद्यतन नहीं कर सकते । लेकिन, यदि आपके पास पर्याप्त खाली जगह है तो आप ऐसा कर सकते हैं:

  1. निकालें .tar से फ़ाइल .tar.gz फ़ाइल:

    gunzip filename.tar.gz

  2. कमांड के साथ असंपीड़ित .tar फ़ाइल अपडेट करें tar -u:

    tar -uf filename.tar new_file

  3. अद्यतन .tar फ़ाइल को संपीड़ित करें :

    gzip filename.tar

जल्दी करो

यदि आपके पास मल्टी-कोर सीपीयू है, तो मैं निकालने pigzके gzipलिए उपयोग करने की सलाह देता हूं और .gz फाइलें बनाता हूं । ( pigzबहु-सूत्रीय कार्यान्वयन है gzip)

बस gzip/ gunzipआज्ञाओं को बदलें pigz/ unpigz

संबंधित मैनुअल


5

यदि आप किसी विशेष फ़ाइल को *.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फ़ाइल सूची से बाहर आने के लिए उपयोग करें।


1

यदि आप इसे बार-बार करने जा रहे हैं, तो एक अनुकूलन हो सकता है:

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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.