it-swarm-id.com

Tambahkan / perbarui file ke arsip tar.gz yang ada?

Apakah ada cara untuk menambah/memperbarui file di arsip tar.gz? Pada dasarnya, saya memiliki arsip yang berisi file di /data/data/com.myapp.backup/./files/settings.txt dan saya ingin menarik file itu dari arsip (sudah selesai) dan Dorong kembali ke arsip setelah pengeditan selesai. Bagaimana saya bisa mencapai ini? Apakah bermasalah karena . di jalan?

78
Naftuli Kay

Format file tar hanyalah serangkaian file yang disatukan dengan beberapa header. Ini bukan pekerjaan yang sangat rumit untuk memisahkannya, memasukkan konten Anda, dan memasangnya kembali. Yang sedang berkata, Jander dijelaskan bagaimana tar sebagai program tidak memiliki fungsi utilitas untuk melakukan ini dan ada komplikasi tambahan dengan kompresi, yang harus sebelum dan sesudah membuat perubahan.

Namun, ada alat untuk pekerjaan itu! Setidaknya ada dua sistem di luar sana yang akan memungkinkan Anda untuk melakukan mountbackback dari arsip tar terkompresi ke folder, kemudian membuat perubahan Anda dalam sistem file. Setelah selesai, lepaskan tautan folder dan arsip terkompresi Anda siap bergulir.

Pilihan pertama adalah archivemount proyek untuk Fuse . Inilah tutorial tentang it . Sistem Anda mungkin sudah memiliki Fuse dan jika tidak, distribusi Anda harus memiliki opsi untuk itu.

Pilihan lainnya adalah tarfs . Ini lebih mudah digunakan , tapi saya pernah mendengarnya mengalami masalah dengan merusak arsip bzip2 sehingga Anda dapat mengujinya cukup teliti terlebih dahulu.

18
Caleb

Untuk menarik file Anda dari arsip Anda, Anda dapat menggunakan tar xzf archive.tar.gz my/path/to/file.txt. Perhatikan bahwa direktori di jalur file akan dibuat juga. Gunakan tar t (mis. tar tzf archive.tar.gz) untuk membuat daftar file dalam arsip.

tar tidak mendukung pembaruan "di tempat" file. Namun, Anda dapat menambahkan file ke akhir arsip, bahkan jika mereka memiliki jalur yang sama dengan file yang sudah ada dalam arsip. Dalam hal ini, kedua salinan file akan berada di arsip, dan file yang ditambahkan nanti akan menimpa yang sebelumnya. Perintah yang digunakan untuk ini adalah tar r (atau tar u untuk hanya menambahkan file yang lebih baru dari arsip) adalah perintah untuk digunakan. . di jalan seharusnya tidak menjadi masalah.

Ada tangkapan, Anda tidak dapat menambahkan ke arsip terkompresi. Jadi, Anda harus melakukan:

gunzip archive.tar.gz
tar rf archive.tar data/data/com.myapp.backup/./files/settings.txt
gzip archive.tar

Yang mungkin bukan yang ingin Anda dengar, karena itu berarti menulis ulang seluruh arsip dua kali. Jika ini bukan arsip yang sangat besar, mungkin lebih baik untar semuanya dan kemudian tar ulang setelah diedit. Sebagai alternatif, Anda dapat menggunakan arsip yang tidak dikompresi.

48
Jander

Tar pada awalnya dimaksudkan untuk digunakan untuk kaset, jadi "mengganti" file tidak benar-benar dalam desain. Namun, Anda dapat menggunakan --delete untuk menghapus file dari tar asli dan kemudian -u untuk memperbarui tar dan menambahkan kembali file. Mungkin perlu sedikit, karena tar perlu mengatur ulang arsip secara internal.

9
rleibman