Saya telah membuat file tar.gz (menggunakan GUI, bukan baris perintah). Bagaimana saya bisa memperbaruinya dengan perintah bahwa file baru ditambahkan dan file yang dimodifikasi juga diperbarui?
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
OP bertanya tentang memperbarui arsip terkompresi yang tidak dapat diperbarui.
QkiZ
18
Solusi / Penanganan Masalah
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
Percepatan
Jika Anda memiliki CPU multi-core, saya sarankan untuk menggunakannya, pigzbukan gzipuntuk mengekstrak dan membuat file .gz . ( pigzadalah implementasi multi-utas gzip)
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
Jawaban:
Anda biasanya menggunakan flag -u untuk ini. Dari halaman manual tar:
jadi urutan ini akan melakukan apa yang Anda butuhkan:
Untuk tampilan yang sedikit lebih detail, lihat di sini: http://www.gnu.org/software/tar/manual/html_node/how-to-update.html
sumber
Solusi / Penanganan Masalah
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 -u
perintah:tar -uf filename.tar new_file
Kompres file .tar yang diperbarui :
gzip filename.tar
Percepatan
Jika Anda memiliki CPU multi-core, saya sarankan untuk menggunakannya,
pigz
bukangzip
untuk mengekstrak dan membuat file .gz . (pigz
adalah implementasi multi-utasgzip
)Cukup ganti
gzip
/gunzip
perintah kepigz
/unpigz
.Manual terkait
sumber
Jika Anda ingin memperbarui file tertentu dalam
*.tar.gz
file, lakukan saja hal berikut:Masukkan
vi
dari manatar
file tersediaMisalnya, jika Anda ingin memodifikasi simple.tar.gz yang berada di bawah
/home/test/
direktori:Dan di editor kosong masukkan
:n simple.tar.gz
dan tekan Enter Anda akan mendapatkan daftar folder dan file memindahkan kursor di mana Anda ingin memodifikasi dan klik Enter. Akan ditampilkanvi
editor file tertentu. Kemudiani
opsi untuk mengubah file. Setelah perubahan berhasil. Tekan Esctombol dan pilih:wq
untuk menulis dan keluar dari file. Kemudian gunakan:q
untuk keluar dari daftar file.sumber
Jika Anda akan melakukan ini berulang kali, optimasi dapat berupa:
sumber