rsync: วิธีแยกไดเรกทอรีสูงสุด


14

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

คำสั่ง rsync ที่ฉันใช้มีดังนี้:

rsync --exclude ./ -rlptDu ./ server.example.com:/usr/local/directory/

และserver.example.com:/usr/local/directory/มีลักษณะเช่นนี้:

drwxrws---  5 root   staff 24576 Jul  9 15:00 .

(ผู้ใช้ในพื้นที่ของฉันเป็นสมาชิกของstaff)

เมื่อฉันใช้ rsync ฉันได้รับข้อผิดพลาดต่อไปนี้:

rsync: failed to set times on "/usr/local/directory/.": Operation not permitted (1)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1070) [sender=3.0.9]
make: *** [pub_to_mel_internal] Error 23

นี่คือรุ่น 3.0.9 บนเครื่องโลคัลและ 3.0.7 บนรีโมททั้งสองเครื่องที่รัน Debian


คุณคุ้นเคยกับไวยากรณ์ในตัวอย่างนี้: wirespeed.xs4all.nl/mediawiki/index.php/ หรือไม่มันอนุญาตให้คุณรวมไฟล์ / ไดเรกทอรีเฉพาะจากไดเรกทอรีที่แยกออกจากกัน คุณอาจต้องใช้ไฟล์ที่แยกออก
jippie

ใช่. ปัญหาคือฉันดูเหมือนจะไม่สามารถโน้มน้าวให้แยกไดเรกทอรีระดับบนสุด (โดยเฉพาะ) ฉันไม่เคยมีปัญหาในการผสมรวม / ไม่รวมในอดีตดูเหมือนว่าระดับบนสุดเป็นกรณีพิเศษ
Steve Pomeroy

คำตอบ:


8

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

rsync -rlptDu -- * server.example.com:/usr/local/directory/

เพิ่ม.[!.]*หลังจาก*ถ้าคุณมีไฟล์จุดในไดเรกทอรีสูงสุดและ..?*ถ้าคุณมีชื่อไฟล์ที่ขึ้นต้นด้วยสองจุด


2
เยี่ยมมากขอบคุณ! ที่ได้ผล ข้อเสียเพียงอย่างเดียวของเทคนิคนี้คือมันต้องการเชลล์เพื่อเลือกไฟล์ทั้งหมด หากคุณมีไฟล์จำนวนมากในไดเรกทอรี (ซึ่งฉันไม่ได้ใช้ในกรณีของฉัน) มันอาจทำให้หายใจไม่ออก ที่อาจจะได้รับการแก้ไขโดยใช้ xargs (แม้ว่าจะไม่ได้มีตัวเลือก - ลบ)
Steve Pomeroy

ปัญหาหนึ่งที่ฉันได้รับเมื่อใช้*คือ--deleteไม่ได้ลบไฟล์ใด ๆ เนื่องจากไม่ได้เป็นส่วนหนึ่งของการค้นหา
thomasa88

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