Saya memiliki file besar foo.tar.xz
yang berisi banyak (katakanlah 200000) file. Saya menemukan bahwa arsip ini berisi beberapa (sekitar 5000) file yang tidak saya inginkan. Saya tidak memiliki ruang disk yang cukup untuk mendekompres semuanya ke disk saya; selain itu, saya khawatir atribut / hak mungkin hilang jika saya melakukannya. Saya memiliki cukup ruang untuk menampung dua salinan arsip terkompresi . Apakah ada alat untuk menghapus beberapa file dari arsip (ditentukan dengan regex pada nama file) dengan cepat, yaitu tanpa membongkar arsip ke dalam file individual?
17
gtar --delete
.-T
bekerja dengan--delete
, dan--wildcards
memungkinkan Anda untuk menggunakan pola daripada nama file, jadi buat file sementara yang berisi pola dan penggunaanunxz < file.tar.xz | tar --wildcards --delete -T patternfile | xz > file2.tar.xz
. Itu tidak akan melakukan regex lengkap (jika Anda membutuhkannya, cukup gunakantar -t
dan buat daftar nama file yang akan dihapus), cukup pola nama file yang cocok.(diedit, karena saya salah mengerti pertanyaan, yang sejak itu diedit juga)
Yang terbaik yang dapat Anda lakukan adalah mengekstrak, menghapus, dan mengkompres ulang seluruh file.
unxz < foobar-old.tar.xz | tar --delete foo/bar | xz > foobar-new.tar.xz
Tidak mungkin menghapus file dari tar secara langsung.
tar adalah aliran, awalnya ditujukan untuk tape drive yang tidak melakukan pencarian acak dengan baik - sementara secara teori bisa dimungkinkan pada sistem file disk untuk melubangi / menulis ulang file yang tersisa, dengan kompresi, titik tersebut dapat diperdebatkan seperti kebanyakan jika tidak semua Metode kompresi sangat bergantung pada konten yang terjadi sebelumnya dalam file. Untuk melakukan ini di tempat Anda akan memerlukan pengetahuan yang sangat rinci tentang kedua metode kompresi serta format file tar. Kompleksitas ke titik yang tak seorang pun akan peduli dengan itu. Lebih murah hanya menyimpan file di sekitarnya dan mengabaikannya.
Jika Anda membutuhkan fungsi ini, tar mungkin bukan yang Anda inginkan.
sumber
--wildcards
tolong ... saya harus memasukkan./
pada awal pola meskipun ...Menurut manual , Anda dapat memberikan daftar nama file
tar
untuk hanya mengekstraknya. Sebagai contoh:sumber