Bir tar.gz dosyasını nasıl güncelleyebilirim?

21

Bir tar.gz dosyası oluşturdum (komut satırını değil, GUI'yi kullanarak). Yeni dosyaların eklendiği ve değiştirilen dosyaların da güncellendiği bir komutla nasıl güncelleyebilirim?

    
sordu xpanta 13.03.2013 13:54

4 cevap

21

Normalde bunun için -u bayrağı kullanırdınız. Tar'ın adam sayfasından:

 -u, --update
       only append files newer than copy in archive

Yani bu dizi ihtiyacınız olan şeyi yapacak:

# 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

Biraz daha ayrıntılı bir bakış için, buraya bakın: İşte

    
verilen cevap roadmr 13.03.2013 14:26
8

Çözüm / Geçici Çözüm

Sıkıştırılmış TAR arşivini ( .tar.gz ) bir adımda güncelleyemezsiniz. Ancak, yeterli boş alanınız varsa bunu yapabilirsiniz:

  1. .tar.gz dosyasından .tar dosyasını çıkartın:

    gunzip filename.tar.gz

  2. Sıkıştırılmamış .tar dosyasını tar -u komutuyla güncelleyin:

    tar -uf filename.tar new_file

  3. Güncellenen .tar dosyasını sıkıştır:

    gzip filename.tar

Speedup

Çok çekirdekli bir CPU'nuz varsa, ayıklamak için pigz yerine gzip değerini ve .gz dosyaları oluşturmanızı öneririz. ( pigz , gzip öğesinin çok iş parçacıklı bir uygulamasıdır)

gzip / gunzip komutlarını pigz / unpigz olarak değiştirin.

İlgili el kitapları

verilen cevap andras.tim 28.01.2015 20:02
5

Belirli bir dosyayı *.tar.gz dosyasında güncellemek istiyorsanız, aşağıdakileri yapın:

vi dosyasının kullanılabilir olduğu yerden tar değerini girin

/home>vi

Örneğin, /home/test/ dizininin altındaki simple.tar.gz 'i değiştirmek isterseniz:

/home/test>vi

Ve boş editörde :n simple.tar.gz değerini girin ve Enter 'a basın. Klasörlerin listesini alacaksınız ve dosyaları değiştirmek istediğiniz yerde imleci taşıyın Ve Enter 'ı tıklayın. Belirli bir dosyanın vi editörünü gösterecektir. Ardından dosyayı değiştirmek için i seçeneği. Başarılı değişimden sonra. Dosyayı yazmak ve kapatmak için Esc tuşuna basın ve :wq öğesini seçin. Ardından dosya listesinden çıkmak için :q kullanın.

    
verilen cevap priyanka 10.04.2014 13:28
0

Bunu tekrar tekrar yapacaksanız, bir optimizasyon olabilir:

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
    
verilen cevap Shubham Chaudhary 25.04.2017 13:43

Etiketlerdeki diğer soruları oku