OS X kaynak çatallarını nokta çubuğu dosyalarından daha başka herhangi bir yerde * Samba paylaşımında saklayabilir miyim?


15

OS X kaynak çatalları, normal dosyalara eklenen alternatif veri akışlarıdır. Dosyanın özel simgesini, renkli etiketini, anahtar kelimelerini veya kullanıcı veya uygulamalar tarafından ayarlanan diğer meta verileri içerebilir.

Bunlar doğal olarak OS X'in HFS + dosya sistemi tarafından desteklenen, ancak OS X onlar sözde "dotbar" dosyalarında saklanır (NFS, SMB) uzak (FAT32) yerel veya ister başka dosya sistemi, bağlar zaman vardır: normal dosyanın kaynak çatalı name.extolan başka bir normal ama gizli dosyada saklanır ._name.ext. ( .DS_StoreSimge, sütun görünümü veya penceresinin konumu gibi bir dizinin görünüm ayarlarını saklayan dosyalarla karıştırılmamalıdır .)

Dotbar ._dosyaları ile ilgili sorun , hedef dosya sisteminde, orijinal dosya ile aynı uzantıya sahip gerçek normal dosyalar olmalarıdır, bu nedenle çeşitli yollarla tahribat yaratır. Örneğin, Ant ve Maven ._MyClass.javaderlenecek başka bir Java dosyası olarak görecekler .

OS X'in kaynak çatallarını SMB adlı akışlarda depolamak üzere yapılandırılabileceğini ve Samba'nın adlandırılmış akışları POSIX genişletilmiş özniteliklerinde veya alternatif olarak başka bir yerde bir depo dizininde depolamak için yapılandırılabileceğini görüyorum .

Her iki çözüm de hedef dosya sistemini kirleten dotbar dosyaları sorununu çözecektir, ancak ikisini de çalıştıramıyorum.

 
xattr

İlk önce xattr ile denedim:

vfs objects = streams_xattr
kernel oplocks = no

İkinci seçenek bu hatadan kaynaklanmaktadır . OS X'e, bunu paylaşmadan önce bunu paylaşımın kökünde yaparak kullanmasını söyledim:

touch .com.apple.smb.streams.on

Ama bir dosyayı Finder ile kopyalamaya çalıştığımda şu hatayı aldım:

Finder işlemi tamamlayamıyor çünkü “hello.java” daki bazı veriler okunamıyor veya yazılamıyor.
(Hata kodu -36)

 
Depo

Sonra depo ile denedim:

vfs objects = streams_depot

.com.apple.smb.streams.onpaylaşımın kökünde bırakarak . Aynı dosyayı Finder ile kopyalamaya çalışırken başka bir hata aldım:

Beklenmedik bir hata oluştuğu için işlem tamamlanamıyor
(hata kodu -50)

 
OS X'in bu iki seçenekten biriyle nasıl çalışmasını sağlayabilirim? Amacım bu iğrençleri ._paylaşılan dizinlerden çıkarmak.

Ben sadece dotbar dosyalarını veto'lama denedim:

veto files = /._*/
delete veto files = yes

Ancak bu, bazı uygulamaların başarısız olmasına neden olur, örneğin, takılı bir SMB paylaşımı üzerinden OS X'ten çalıştırıldığında Mercurial .

İstemci olarak OS X 10.9.5 kullanıyorum; Sunucu olarak Debian Wheezy'den Samba 3.6.6.

Düzenleme: İşte yapılandırmam istendiği gibi:

[global]
    security = user
    invalid users = root
    workgroup = COMPANY_NAME
    encrypt passwords = true
    panic action = /usr/share/samba/panic-action %d
    syslog = yes
    syslog only = yes

    # PERFORMANCE TUNING
    socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=131072 SO_SNDBUF=131072 SO_KEEPALIVE
    read raw = true
    write raw = true
    use sendfile = true
    min receivefile size = 16384
    aio read size = 16384
    aio write size = 16384
    max xmit = 131072
    getwd cache = true

    # DEFAULT OPTIONS FOR ALL SHARES
    writeable = true
    force group = company_group

    create mask = 664
    security mask = 664
    force create mode = 664
    force security mode = 664

    directory mask = 2775
    directory security mask = 2775
    force directory mode = 2775
    force directory security mode = 2775

    # solve problem where OS X clients remove mode 0100
    map archive = no

[homes]
    browseable = no

Davanızı çözüp çözmediğini görmek için unix extensionsyönergeyi [global]oturuma değiştirmeye çalıştınız mı? Sorunuzu testparmkomuttan gelen çıktı ile güncelleyebilir misiniz ?
fgbreel

@fgbreel Soruma yapılandırma eklendi. Unix uzantılarını değiştirmeyi denemedim, çünkü varsayılan olarak etkindir (ve sembolik bağlantıları ve şeyleri eşlemem gerekiyor.) Sizce devre dışı bırakmam gerekir mi?
Tobia

Evet, mantıklı değil :(
fgbreel

Yanıtlar:


2

Eğer gibi görünüyor olabilir yeni ile bunu yapabilmek vfs_fruit ile yığılmış modülü, vfs_streams_xattr VFS modülü.

Örneğin, bu posta listesi iş parçacığına bakın . Genişletilmiş öznitelikleri destekleyen altta yatan bir dosya sistemine ihtiyacınız var ve bunları etkinleştirilmiş olarak monte etmelisiniz.

Bununla birlikte , Samba wiki'ye göre, bu Samba 4.2'deki yeni bir özelliktir, bu yüzden yükseltmeniz gerekecektir. (Şu an itibariyle Debian Sid [deneysel] 'in henüz 4.2'si yok.)

Debian paketinden kurtulmak ve yeni bir Samba sürümü oluşturmak (veya Jessie'ye yükseltmek ve 4.2 jessie-backports'ta görünmesini beklemek) ile ilgilenmiyorsanız, nokta dosyalarını istemcilerden gizleyebilirsiniz.

Aynı dizine işaret eden iki farklı paylaşımınız olabilir, bunlardan biri ._files dosyasını gizler. Belki de optimal değildir, ancak uygulanabilir olabilir.


0

Yerel Mac tercihleriyle mümkün olup olmadığını bilmiyorum, ancak bu soruna yardımcı olmak için Asepsis gibi bir araç kullanabilirsiniz . Tüm Mac bırakmalarını kendi klasörlerine taşır.


En son kontrol ettiğimde, .DS_StoreAsepsis ._*ağ paylaşımlarında en fazla soruna neden olan "dotbar" dosyalarını değil, yalnızca dosyaları kaldırır
Tobia

@Tobia: İyi bir noktaya değindin. Bu durumda, BlueHarvest'i de buldum , ancak ücretsiz değil. BlueHarvest gerçek zamanlı izleme kullanırken Asepsis pasif yönlendirme kullanıyor (bir sistem dosyasını yamalamak suretiyle).
Blake Johnson

Teşekkürler. Ama Samba tarafında bir çözüm bekleyeceğim, çünkü bunun sadece bir yapılandırma meselesi olduğuna inanıyorum.
Tobia
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.