ฉันสามารถเก็บส้อมทรัพยากร OS X ไว้ในการแบ่งปัน Samba ที่ใดก็ได้ * อื่น * กว่าในไฟล์ dotbar ได้หรือไม่


15

ส้อมทรัพยากร OS X เป็นกระแสข้อมูลสำรองที่แนบกับไฟล์ปกติ พวกเขาอาจมีไอคอนที่กำหนดเองของไฟล์, ฉลากสี, คำหลักหรือข้อมูลเมตาอื่น ๆ ที่กำหนดโดยผู้ใช้หรือโดยการใช้งาน

สนับสนุนโดยระบบไฟล์ HFS + ของ OS X แต่เมื่อใดก็ตามที่ OS X เมานต์ระบบไฟล์อื่นไม่ว่าจะเป็น local (FAT32) หรือ remote (NFS, SMB) พวกเขาจะถูกเก็บไว้ในไฟล์ที่เรียกว่า "dotbar": ตัวแยกทรัพยากรสำหรับไฟล์ปกติname.extคือ ._name.extเก็บไว้ในไฟล์อื่นปกติ (ต้องไม่สับสนกับ.DS_Storeไฟล์ที่จัดเก็บการตั้งค่ามุมมองของไดเรกทอรีเช่นไอคอนเทียบกับมุมมองคอลัมน์หรือตำแหน่งของหน้าต่าง)

ปัญหาของ._ไฟล์ดอทบาร์คือพวกเขาเป็นไฟล์ปกติจริง ๆ ในระบบไฟล์เป้าหมายที่มีนามสกุลเดียวกับไฟล์ต้นฉบับดังนั้นจึงสร้างความเสียหายได้หลายวิธี ตัวอย่างเช่น Ant และ Maven จะเห็น._MyClass.javaว่าเป็นไฟล์ Java อื่นที่จะรวบรวม

ผมเห็นว่าOS X สามารถกำหนดค่าให้ส้อมทรัพยากรเก็บในลำธาร SMB ชื่อและที่แซมบ้าสามารถกำหนดค่าให้เก็บชื่อลำธารใน POSIX คุณลักษณะเพิ่มเติมหรือหรือในไดเรกทอรีสถานีที่อื่น

วิธีแก้ปัญหาทั้งสองจะแก้ปัญหาไฟล์ดอทบาร์ที่ทำให้ระบบไฟล์เป้าหมายสกปรก แต่ฉันก็ไม่สามารถทำงานได้

 
Xattr

ก่อนอื่นฉันลองใช้ xattr:

vfs objects = streams_xattr
kernel oplocks = no

ตัวเลือกหลังเกิดจากข้อผิดพลาดนี้ ฉันบอกให้ OS X ใช้งานโดยทำสิ่งนี้ในรูทของการแชร์ก่อนทำการติดตั้ง:

touch .com.apple.smb.streams.on

แต่เมื่อฉันพยายามคัดลอกไฟล์ทับด้วย Finder ฉันได้รับข้อผิดพลาดนี้:

เครื่องมือค้นหาไม่สามารถดำเนินการให้เสร็จสมบูรณ์ได้เนื่องจากข้อมูลบางอย่างใน“ hello.java” ไม่สามารถอ่านหรือเขียนได้
(รหัสข้อผิดพลาด -36)

 
สถานีรถไฟ

จากนั้นฉันลองด้วยที่เก็บ:

vfs objects = streams_depot

ทิ้งไว้.com.apple.smb.streams.onในรากของการแบ่งปัน พยายามคัดลอกไฟล์เดียวกันกับ Finder ฉันพบข้อผิดพลาดอื่น:

ไม่สามารถดำเนินการให้เสร็จสมบูรณ์ได้เนื่องจากเกิดข้อผิดพลาดที่ไม่คาดคิด
(รหัสข้อผิดพลาด -50)

 
ฉันจะทำให้ OS X ทำงานกับสองตัวเลือกเหล่านี้ได้อย่างไร จุดประสงค์ของฉันคือ._กำจัดสิ่งที่น่ารังเกียจออกจากไดเรกทอรีที่ใช้ร่วมกัน

ฉันพยายามคัดค้านไฟล์ dotbar เพียง:

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

แต่ที่ทำให้เกิดการใช้งานบางอย่างที่จะล้มเหลวเช่นMercurial เมื่อเรียกใช้จาก OS X ผ่านการติดตั้งร่วมกันของ

ฉันใช้ OS X 10.9.5 เป็นลูกค้า Samba 3.6.6 จาก Debian Wheezy เป็นเซิร์ฟเวอร์

แก้ไข: นี่คือการกำหนดค่าของฉันตามที่ร้องขอ:

[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

คุณพยายามเปลี่ยนunix extensionsคำสั่งลงใน[global]เซสชันเพื่อดูว่าแก้ไขกรณีของคุณหรือไม่ คุณสามารถอัปเดตคำถามของคุณด้วยผลลัพธ์จากtestparmคำสั่งได้หรือไม่
fgbreel

@fgbreel เพิ่มการกำหนดค่าให้กับคำถามของฉัน ฉันไม่ได้ลองเปลี่ยนส่วนขยาย unix เพราะมันเปิดใช้งานโดยค่าเริ่มต้น (และฉันต้องการแมปลิงก์สัญลักษณ์และเนื้อหา) คุณคิดว่าฉันควรปิดใช้งานหรือไม่
Tobia

ใช่ไม่สมเหตุสมผล :(
fgbreel

คำตอบ:


2

ดูเหมือนว่าคุณอาจจะสามารถที่จะทำเช่นนี้กับใหม่vfs_fruitโมดูลซ้อนกับvfs_streams_xattrวีเอฟเอโมดูล

ดูตัวอย่างเช่นเธรดรายการจดหมายนี้ คุณต้องมีระบบไฟล์ที่รองรับคุณสมบัติเพิ่มเติมและคุณจะต้องติดตั้งมันเพื่อเปิดใช้งาน

อย่างไรก็ตามตามวิกิ Sambaนี่เป็นคุณลักษณะใหม่ใน Samba 4.2 ดังนั้นคุณจะต้องอัปเกรด (ณ ตอนนี้แม้แต่ Debian Sid [ทดลอง] ยังไม่มี 4.2)

หากคุณไม่สนใจที่จะทิ้งแพ็คเกจ Debian และสร้าง Samba เวอร์ชันใหม่ (หรืออัปเกรดเป็น Jessie และรอ 4.2 เพื่อแสดงใน jessie-backport) คุณสามารถซ่อนไฟล์ dot จากลูกค้า

คุณอาจมีการแชร์ที่ต่างกันสองรายการซึ่งชี้ไปที่ไดเรกทอรีเดียวกันซึ่งหนึ่งในนั้นซ่อนไฟล์. _files อาจไม่ดีที่สุด แต่อาจใช้การได้


0

ฉันไม่ทราบว่าเป็นไปได้หรือไม่ที่มีการตั้งค่าดั้งเดิมของ Mac แต่คุณสามารถใช้เครื่องมือเช่นAsepsisเพื่อช่วยแก้ไขปัญหานั้นได้ มันจะย้ายมูล Mac ทั้งหมดไปยังโฟลเดอร์ของตนเอง


ครั้งล่าสุดที่ฉันตรวจสอบ Asepsis จะลบ.DS_Storeไฟล์เท่านั้นไม่ใช่ไฟล์ "dotbar" ._*ซึ่งทำให้เกิดปัญหามากที่สุดในเครือข่ายที่ใช้ร่วมกัน
Tobia

@Tobia: คุณยกประเด็นดี ในกรณีนั้นฉันพบBlueHarvestด้วย แต่ไม่ฟรี ดูเหมือนว่า BlueHarvest จะใช้การตรวจสอบแบบเรียลไทม์ในขณะที่ Asepsis ใช้ทิศทางแบบพาสซีฟอีกครั้ง (ผ่านการแพตช์ไฟล์ระบบ)
Blake Johnson

ขอบคุณ แต่ฉันจะรอการแก้ไขทางด้านแซมบ้าเนื่องจากฉันเชื่อว่ามันเป็นเพียงเรื่องของการกำหนดค่า
เบี
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.