Ketika saya tar file tertentu di OS X:
tar cvf foo.tar foo
Ini menghasilkan file tambahan ._foo
di tarball:
./._foo
foo
yang hanya muncul jika saya mengekstraknya di sistem operasi non-Mac. Tetapi ._foo
tidak ada di sistem file saya! Apa yang sedang terjadi? Bagaimana saya bisa menyingkirkannya?
Jawaban:
Tar OS X menggunakan format AppleDouble untuk menyimpan atribut dan ACL yang diperluas.
Tar OS X juga tahu cara mengubah anggota ._ kembali ke format asli, tetapi file ._ biasanya disimpan ketika arsip diekstraksi pada platform lain. Anda dapat memberitahu tar untuk tidak memasukkan metadata dengan menetapkan COPYFILE_DISABLE ke beberapa nilai:
man copyfile
ls -l@
menunjukkan kunci dan ukuran atribut yang diperluas,ls -le
mencetak ACLxattr -l
daftar kunci dan nilai atribut yang diperluasxattr -c
menghapus semua atribut yang diperluas (-d tidak bisa digunakan sendiri)chmod -N
menghapus ACLInformasi yang disimpan sebagai atribut yang diperluas:
sumber
env COPYFILE_DISABLE tar -cf archive.tar my_folder/
.cat
atautype
untuk melihat apa yang ada di dalamnya, paling tidak. Dan biasanya ada teks sederhana yang dimasukkan secara manual di sana. Saya tidak akan membuangnya untuk cadangan tetapi bisa menjadi sampah jika Anda ingin mendistribusikan sesuatu lintas platform dan khususnya jika ada di sana karena kesalahan. Hanya mengatakan opsi untuk meninggalkan mereka cukup valid.Pada
bsdtar 3.0.3 - libarchive 3.0.3
(dan mungkin sebelumnya) ada opsi baru untukbsdtar
perintah yang dipanggil--disable-copyfile
untuk menekan pembuatan._
file.sumber
bsdtar 2.8.3 - libarchive 2.8.3
dari10.7.5
yang--disable-copyfile
tidak didokumentasikan tetapi tersedia tetap.The
._
file sumber daya garpu seperti yang disebutkan dalam jawaban lainnya. Namun, ada cara yang lebih baik untuk menghilangkannya saat menggunakantar
:Ada juga
dot_clean
utilitas untuk membersihkan file-file ini (saya pikir ini biasanya digunakan untuk penyimpanan eksternal).sumber
Berikut ini adalah skrip python untuk menghapus file-file itu. Harus bekerja di OS populer apa pun.
Tidak diuji secara menyeluruh, gunakan dengan risiko Anda sendiri!
sumber
Karakter periode, ".", Digunakan pada platform Mac sebagai indikator file tersembunyi. Di Windows, itu adalah karakter "$". Bagaimanapun, file ._foo mungkin menyimpan beberapa informasi spesifik OS X dan saya akan merekomendasikan untuk tidak menghapusnya. Pada sistem lain, Anda harus mengabaikannya, atau seseorang di sini mungkin dapat memberi Anda skrip yang akan menyembunyikan file dan folder yang dimulai dengan ".".
sumber