GNU/Linux >> Belajar Linux >  >> Linux

Menambahkan file ke file tbz

Sedangkan tar dapat menambahkan file ke arsip yang sudah ada, tidak dapat dikompresi. Anda harus bunzip2 arsip terkompresi, meninggalkan tarbal standar. Anda kemudian dapat menggunakan tar kemampuan untuk menambahkan file ke arsip yang ada, lalu mengompres ulang dengan bzip2 .

Dari manual:

 -r      Like -c, but new entries are appended to the archive.  Note that this only
         works on uncompressed archives stored in regular files.  The -f option is
         required.

Jawaban lainnya benar:Anda tidak dapat memperbarui arsip tar terkompresi dengan benar tanpa membuka kompresinya. Dokumentasi tar GNU mengisyaratkan hal itu, dan upaya memperbarui gagal dengan pesan kesalahan eksplisit:

$ tar --concatenate --file=cat.tar.bz2 two.tar.bz2 
tar: Cannot update compressed archives
tar: Error is not recoverable: exiting now

Namun, jika Anda tertarik dengan solusi pekerjaan kotor yang tidak memerlukan dekompresi, saya dapat menyediakannya, berdasarkan pengamatan berikut:

  • Menambahkan aliran bzip2 menggunakan cat didukung dan menghasilkan aliran bzip2 yang valid (hal yang sama berlaku untuk gzip);
  • menambahkan tar menggunakan cat tidak menghasilkan file tar yang valid, itulah sebabnya --concatenate opsi ada, tetapi kita dapat meminta tar untuk berpura-pura valid:

Tampaknya lebih intuitif bagi Anda untuk menginginkan atau mencoba menggunakan cat untuk menggabungkan dua arsip daripada menggunakan --concatenate operasi; lagipula, cat adalah utilitas untuk menggabungkan file.

Namun, arsip tar memasukkan penanda akhir file yang harus dihapus jika arsip gabungan ingin dibaca dengan benar sebagai satu arsip. --concatenate menghapus penanda akhir arsip dari arsip target sebelum setiap arsip baru ditambahkan. Jika Anda menggunakan cat untuk menggabungkan arsip, hasilnya bukan arsip format tar yang valid. Jika Anda perlu mengambil file dari arsip yang ditambahkan menggunakan utilitas cat, gunakan --ignore-zeros (-i ) opsi.

Berdasarkan pengetahuan ini, kita dapat melakukan, misalnya:

cat {one,two}.tar.bz2 >combined.tar.bz2

Hasil ini, seperti yang dijelaskan oleh cuplikan dokumentasi di atas, dalam file tar yang tidak valid, tetapi menggunakan --ignore-zeros , itu masih bisa dibaca sepenuhnya:

## Show contents of `one.tar.bz2'
$ tar tf one.tar.bz2
a
b

## Show contents of `two.tar.bz2'
$ tar tf two.tar.bz2
c

## Show contents of `combined.tar.bz2', bypassing the bad format
$ tar tif combined.tar.bz2
a
b
c

Perhatikan bagaimana di atas mencantumkan ketiga file dari dua arsip asli, sedangkan -i dihilangkan (dengan benar) hanya mencantumkan file dari arsip asli pertama:

$ tar tf combined.tar.bz2 
a
b

Sekali lagi, itu tidak lebih dari trik kotor, tetapi bisa berguna jika Anda mengontrol sisi penulisan dan pembacaan dan dapat memastikan bahwa -i akan digunakan saat mencoba membaca dari file yang dibuat dengan cara ini.


Linux
  1. Bagaimana Mengompresi Banyak File Menjadi Arsip .xz?

  2. Kesalahan tar:EOF tak terduga dalam arsip

  3. Bagaimana cara gzip banyak file menjadi satu file gz?

  1. ekstrak satu file dari file tgz besar

  2. Batalkan pengarsipan file sambil mengurangi ukuran arsip?

  3. Gabungkan banyak file tar dalam satu perintah

  1. 16 Perintah Tar untuk Kompres dan Ekstrak File di Linux

  2. Cara Mengarsipkan File Dan Direktori Di Linux [Bagian 1]

  3. Format arsip yang diindeks?