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 mendorongnya kembali ke arsip setelah pengeditan selesai. Bagaimana saya bisa mencapai ini? Apakah ini bermasalah karena ada .
di jalur?
73
.DS_Store
dan kemudian men-tar ulang direktori tersebut.Jawaban:
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 menggambarkan bagaimana tar sebagai program tidak memiliki fungsi utilitas untuk melakukan ini dan ada komplikasi tambahan dengan kompresi, yang harus sebelum dan sesudah melakukan 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.
Opsi pertama adalah proyek archivemount untuk FUSE . Ini tutorialnya . Sistem Anda mungkin sudah memiliki FUSE dan jika tidak, distribusi Anda harus memiliki opsi untuk itu.
Pilihan lainnya adalah tarf . Ini lebih mudah digunakan , tetapi saya pernah mendengar ada masalah dengan merusak arsip bzip2 sehingga Anda dapat mengujinya terlebih dahulu.
sumber
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. Gunakantar t
(mis.tar tzf archive.tar.gz
) Untuk mendaftar file dalam arsip.tar
tidak mendukung pembaruan file "di tempat". 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 tersebut akan berada di arsip, dan file yang ditambahkan nanti akan menimpa yang sebelumnya. Perintah yang digunakan untuk ini adalahtar r
(atautar u
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:
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.
sumber
tar
program standar . Tar sebagai format file sebenarnya sangat mudah diakses. Anda dapat dengan mudah menulis skrip untuk memperbarui konten sendiri, tetapi ada alat lain yang sudah melakukan ini .gzip -dc archive.tar.gz | tar -r data/data/com.myapp.backup/./files/settings.txt | gzip >archive_new.tar.gz
Tar 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.
sumber
di Linux saya x86_64 GNU / Linux untuk melakukan operasi itu saya hanya menggunakan perintah berikut:
Perintah ini menyebabkan pembuatan arsip terkompresi di bawah
/path
menggunakan daftar file yang dimasukkan ke dalamlist.txt
file.sumber
/path/archive.tar
, alih-alih menambahkan / memperbarui file itu.