Jawaban:
Anda biasanya menggunakan flag -u untuk ini. Dari halaman manual tar:
-u, --update only append files newer than copy in archive
jadi urutan ini akan melakukan apa yang Anda butuhkan:
# 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
Untuk tampilan yang sedikit lebih detail, lihat di sini: http://www.gnu.org/software/tar/manual/html_node/how-to-update.html
Anda tidak dapat memperbarui arsip TAR terkompresi ( .tar.gz ) dalam satu langkah. Tetapi, jika Anda memiliki cukup ruang kosong, Anda dapat melakukan ini:
Ekstrak file .tar dari file .tar.gz :
gunzip filename.tar.gz
Perbarui file .tar tanpa kompresi dengan tar -uperintah:
tar -uf filename.tar new_file
Kompres file .tar yang diperbarui :
gzip filename.tar
Jika Anda memiliki CPU multi-core, saya sarankan untuk menggunakannya, pigzbukan gzipuntuk mengekstrak dan membuat file .gz . ( pigzadalah implementasi multi-utas gzip)
Cukup ganti gzip/ gunzipperintah ke pigz/ unpigz.
Jika Anda ingin memperbarui file tertentu dalam *.tar.gzfile, lakukan saja hal berikut:
Masukkan vidari mana tarfile tersedia
/home>vi
Misalnya, jika Anda ingin memodifikasi simple.tar.gz yang berada di bawah /home/test/direktori:
/home/test>vi
Dan di editor kosong masukkan :n simple.tar.gzdan tekan Enter
Anda akan mendapatkan daftar folder dan file memindahkan kursor di mana Anda ingin memodifikasi dan klik Enter. Akan ditampilkan vieditor file tertentu. Kemudian iopsi untuk mengubah file. Setelah perubahan berhasil. Tekan Esctombol dan pilih :wquntuk menulis dan keluar dari file. Kemudian gunakan :quntuk keluar dari daftar file.
Jika Anda akan melakukan ini berulang kali, optimasi dapat berupa:
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