Mac tar 'in tar ._' deki dosya adlarını koymasını engelle [al]


46

Olası Çoğalt:
Neden OS X üzerindeki tarball'ımda ._foo gibi dosyalar alıyorum?

Mac'te autoconf komut dosyaları oluşturuyorum. Tar çalıştığında, tüm bu ._ foobar adlarını arşive koyar :

libewf-20110312/borlandc/builder5/ewfacquire/._ewfacquire.bpf
libewf-20110312/borlandc/builder5/ewfacquire/ewfacquire.bpf
libewf-20110312/borlandc/builder5/ewfacquire/._ewfacquire.bpr
libewf-20110312/borlandc/builder5/ewfacquire/ewfacquire.bpr

Şimdi devam eden, Apple'ın HFS dosya sistemi, dosya özelliklerini ._ foobar adlarına koyuyor, böylece başka bir Mac sisteminde geri yüklenebiliyorlar. Ama onları istemiyorum --- onlar sadece benim için önemsiz. Onları bastırmanın bir yolu var mı?



2
@geekosaur Unix.SE üzerindeki kullanıcı pes etti ve yanlış bir cevap verdi.
Daniel Beck

Aynı çözümü kullanan arşivlerden (örn. ) Dosyaları düzgün bir şekilde çıkarmakla._*.__init__.py ilgili bir SU sorusu da vardır .
Chris Johnsen

Yanıtlar:


69

Başına Başka bir soruya bir cevap , siz (dahil sistem tarafından sağlanan programların birkaç önlemek için belgesiz (?) Ortam değişkeni COPYFILE_DISABLE ayarlayabilirsiniz katran için özel bir anlam vermekten) ._*arşiv üyeleri. Özellikle, onları önleyecektir:

  • genişletilmiş öznitelik verilerinin (kaynak çatalları dahil) ._*arşiv üyelerine depolanması
    (yani Mac OS X'te oluşturulan arşivleri “kirletmemesi” ancak diğer sistemlerde kullanılması amaçlanmıştır) ve

  • gibi adlandırılmış arşiv üyelerinden genişletilmiş öznitelikler veya kaynaklar çıkarmaya çalışmak ._*
    (yani, ._*arşivdeki diğer üyelerdeki arşiv üyelerini yanlış yorumlamayın ).

Ortam değişkeni için kullandığınız değer önemli değildir (boş dize bile olabilir). Değer gibi 0ve falseözelliği yeniden etkinleştirilemez. Önemli olan tek şey, değişkenin ayarlanmış olup olmadığıdır (özelliği yeniden etkinleştirmek için onu “kaldırmanız gerekir”).

Bourne tarzı mermilerin ( sh , ksh , bash , zsh , vb.) Ekstra ortam değişkenleri ile komut önekleme kabiliyetinden yararlanarak bu değişkeni tek tek komutlarda kullanabilirsiniz .

COPYFILE_DISABLE=1 tar cf new.tar …

Sorunla değil, sık sık karşılaşırsanız, bu değişkeni kabuğunuzun başlangıç ​​dosyalarından birinde ayarlamak ve vermek isteyebilirsiniz.

# turn off special handling of ._* files in tar, etc.
COPYFILE_DISABLE=1; export COPYFILE_DISABLE

İhtiyacınız olduğunda, bireysel komutlar için değişkeni kaldırabilirsiniz.

(unset COPYFILE_DISABLE; tar cf somefile.tar …)

Bu Mac OS X 10.6 sisteminde, aşağıdaki komutların tümü COPYFILE_DISABLE hakkında biliyor gibi görünüyor:

  • /usr/bin/tar(sembolik bir bağlantı bsdtar)
  • /usr/bin/bsdtar
  • /usr/bin/gnutar
  • /bin/pax

Mac OS X 10.5 kaynaklı COPYFILE_DISABLE. 10.4'ü desteklemeniz gerekiyorsa, aynı şekilde çalışan COPY_EXTENDED_ATTRIBUTES_DISABLE vardır.


VAY. Tam da aradığım şey. Teşekkürler. Benim autoconf dosyalarım daha temiz olacak.
vy32

0

Bir uzman değil, ama küçük bir googling bunu buldu: http://www.ofzenandcomputing.com/zanswers/3422

ve bu: http://hintsforums.macworld.com/archive/index.php/t-28703.html

İkinci komut bir betiğe eklenmiş gibi görünüyor ... kaynak çatal dosyalarının oluşturulmasını engelleyemeyebilirsiniz, ancak daha sonra bunları otomatik olarak silebilirsiniz.

düzenleme: Bunun kötü sonuçları olabileceğini belirtmeliydim, kendi sorumluluğunuzdadır kullanın.


1
Komut dosyası kaynak çatalları yerel diskteki dosyalardan kaldırır. Genellikle bir amaca hizmet ederler (belirli bir dosyanın ilişkili uygulamasını değiştirmek gibi), bu nedenle büyük bir uyarı ile gelmelidir.
Daniel Beck

Senaryo bana yardımcı olmuyor. Dosyaları tar arşivinden değil diskten kaldırır. Diskimde kaynak dosyalarının olmadığı anlaşılıyor. Ama arşive konuyorlar. Zip dosyalarının aksine, dosyaları yalnızca bir tar arşivinden kaldıramazsınız.
vy32

(bah, timeouts) Aslında, tarBSD libarchivetabanlı olandan başka birisini kullanıyorsanız (Mac OS X dahil) kullanabilirsiniz, ancak güvenilir olmayabilir; GNU tar'ı yüklemek genellikle iyi bir fikirdir. (Ancak, acı vericidir. Sanırım hepsini listelemeniz ve sonra bu isimleri komut satırında geçirmeniz gerekir.) Ayrıca, kaynak çatalları teknik olarak disktedir, ancak HFS + üzerinde genişletilmiş özniteliklerde saklanırlar; ._dosyalar uzatılmış özelliklerini desteklemeyen yerlerde kaynak çatal saklamak OS X'in yoludur.
geekosaur

0

Kendinizinkini derlemeyi tarveya varsa Macports veya Fink'ten yüklemeyi deneyebilirsiniz (Homebrew'da yoktur). Bazı "şans" ile OS X meta verilerinin bilgisizliği olmalı ve bu dosyaları oluşturmayı atlamalıdır.


Olumsuz oy için bir açıklama için teşekkür ederiz. Teşekkür ederim.
Daniel Beck
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.