Saya ingin membuat arsip tar direktori tertentu (dengan subdirektori tentu saja). Tetapi ketika saya melakukannya, menggunakan perintah tar, saya mendapatkan daftar file yang disertakan, misalnya:
a calendar_final /._ style.css
a calendar_final / style.css
Seperti yang Anda lihat, ada dua versi file yang sama. Ini berlaku untuk setiap file, dan ada banyak. Bagaimana cara mengecualikan file sementara, dengan awalan ._, dari arsip tar?
Jawaban:
Anda memposting dalam komentar bahwa Anda bekerja pada sistem Mac OS X. Ini adalah petunjuk penting untuk tujuan
._*
file - file ini .._*
Entri arsip ini adalah potongan dari data AppleDouble yang berisi informasi tambahan yang terkait dengan file yang sesuai (yang tanpa._
awalan). Mereka dihasilkan oleh keluarga fungsi spesifik copyfile (3) Mac OS X. AppleDouble blob menyimpan data kontrol akses (ACL) dan atribut yang diperluas (umumnya, bendera Finder dan “fork resource”, tetapi xattrs dapat digunakan untuk menyimpan segala jenis data).Alat arsip Mac OS X yang disediakan oleh sistem (
bsdtar
(juga dikaitkan sebagaitar
)gnutar
,, danpax
) akan menghasilkan anggota._*
arsip untuk file apa pun yang memiliki informasi tambahan yang terkait dengannya; dalam mode "unarchive", mereka juga akan men-decode anggota arsip tersebut dan menerapkan informasi tambahan yang dihasilkan ke file terkait. Ini menciptakan arsip "kesetiaan penuh" untuk digunakan pada sistem Mac OS X dengan menjaga dan kemudian mengekstrak semua informasi yang dapat disimpan oleh sistem file HFS +.Alat arsip yang sesuai pada sistem lain tidak tahu untuk memberikan penanganan khusus untuk
._*
file - file ini , sehingga mereka dibongkar sebagai file normal. Karena file seperti itu tidak berguna pada sistem lain, mereka sering dilihat sebagai "file sampah". Sejalan dengan itu, jika sistem non-Mac OS X menghasilkan arsip yang menyertakan file normal yang dimulai dengan._
, alat penguraian Mac OS X akan mencoba untuk memecahkan kode file-file itu sebagai informasi tambahan.Namun, ada cara (?) Yang tidak berdokumen untuk membuat arsip Mac OS X yang disediakan sistem berperilaku seperti yang mereka lakukan pada sistem Unixy lainnya: variabel lingkungan COPYFILE_DISABLE. Mengatur variabel ini (ke nilai apa pun, bahkan string kosong), akan mencegah pengarsip dari menghasilkan
._*
anggota arsip untuk mewakili setiap informasi tambahan yang terkait dengan file yang diarsipkan. Kehadirannya juga akan mencegah para pengarsip untuk mencoba menafsirkan anggota arsip tersebut sebagai informasi tambahan.Anda dapat mengatur variabel ini dalam file inisialisasi shell Anda jika Anda ingin bekerja dengan cara ini lebih sering daripada tidak.
Kemudian, ketika Anda perlu mengaktifkan kembali fitur (untuk menyimpan / mengembalikan informasi yang diperluas), Anda dapat "menghapus" variabel untuk perintah individual:
Pengarsip pada Mac OS X 10.4 juga melakukan sesuatu yang serupa, meskipun mereka menggunakan variabel lingkungan yang berbeda: COPY_EXTENDED_ATTRIBUTES_DISABLE
sumber
Ini seharusnya bekerja:
sumber
tar --version
memberi GNU 1.23 di sini.tar vzcf ...
untuk melihat apakah ada file yang salah dimasukkan.Frederik Deweerdt telah memberikan solusi yang berfungsi pada GNU tar (digunakan pada Linux, Cygwin, FreeBSD, OSX, mungkin yang lain), tetapi tidak pada sistem lain seperti NetBSD, OpenBSD atau Solaris.
POSIX tidak menentukan
tar
perintah (karena itu bervariasi terlalu liar antara varian unix) dan sebagaipax
gantinya memperkenalkan perintah. Opsi tersebut-w
berarti menghasilkan arsip (-r
ekstrak), dan-x
memilih format arsip. Opsi ini-s '!BRE!!'
mengecualikan semua file yang jalurnya cocok dengan BRE ekspresi reguler dasar.sumber
Pada
bsdtar 3.0.3 - libarchive 3.0.3
(dan mungkin sebelumnya) ada opsi (khusus Mac OS X) untukbsdtar
perintah yang dipanggil--disable-copyfile
untuk menekan pembuatan._
file. Versi lama daritar
tidak memiliki--disable-copyfile
opsi, tetapi pengaturan variabel lingkunganCOPYFILE_DISABLE=1
harus berfungsi.sumber
bsdtar 2.8.3 - libarchive 2.8.3
dari10.7.5
yang--disable-copyfile
tidak didokumentasikan tetapi tersedia tetap.Ikuti langkah ini:
Temukan semua
._
file dan daftarkan mereka menggunakan-ls
sehingga Anda dapat melihat semua._
file dan akhirnya menghapusnya.Buat arsip .tar menggunakan.
sumber