rsync ไม่รักษาความเป็นเจ้าของไดเรกทอรีแม้ด้วย -a


12

ฉันใช้คำร้องขอ rsync นี้เพื่อสำรองข้อมูลไดเรกทอรีบ้านของฉัน:

rsync -aARrx --info= --force --delete --info=progress2 -F "$USER_HOME" "$BACKUP_MNTPOINT"

rsync man page บอกว่า -a หมายถึง -g และ -o (ระหว่างสวิตช์อื่น ๆ ) ซึ่งควรรักษาความเป็นเจ้าของ อย่างไรก็ตามฉันสังเกตเห็นว่าหากไม่มีไดเรกทอรีภายใต้$BACKUP_MNTPOINT/$USER_HOMEมันจะถูกสร้างขึ้นด้วย root: ความเป็นเจ้าของ root แทนที่จะเป็นไดเรกทอรีที่ถูกต้อง (สิ่งนี้จะเกิดขึ้นกับไดเรกทอรีที่อยู่ด้านล่าง$BACKUP_MNTPOINT/$USER_HOME) ทำไมถึงเป็นอย่างนั้น?

$BACKUP_MNTPOINTเป็นไดรฟ์ที่ติดตั้ง localy $BACKUP_MNTPOINT/$USER_HOMEมีกรรมสิทธิ์และสิทธิ์ที่เหมาะสม ไม่ได้$USER_HOMEหรือ$BACKUP_MNTPOINTลงท้ายด้วยเครื่องหมายทับ

ทั้งซอร์สและระบบไฟล์เป้าหมายคือ XFS และการรันmkdir $BACKUP_MNTPOINT/$USER_HOMEจะสร้างไดเร็กทอรีที่มีความเป็นเจ้าของที่คาดไว้


1
ระบบไฟล์คืออะไร$BACKUP_MNTPOINTและมีตัวเลือกอะไรติดตั้งอยู่บ้าง สิ่งนี้เกิดขึ้นเฉพาะกับ$BACKUP_MNTPOINT/$USER_HOMEไดเรกทอรีparent ( ) หรือสำหรับทุกไดเรกทอรีที่สร้างขึ้นหรือไม่ ทำ$BACKUP_MNTPOINTและ$USER_HOMEจบด้วย a /หรือไม่?
terdon

ฉันใช้ XFS สำหรับทั้งคู่/homeและไดรฟ์สำรอง จนถึงตอนนี้ฉันคิดว่ามันเกิดขึ้นเฉพาะกับไดเรกทอรีหลัก ไม่ได้$BACKUP_MNTPOINTหรือ$USER_HOMEลงท้ายด้วยเครื่องหมายทับ แก้ไข:ฉันสามารถยืนยันตอนนี้มันเกิดขึ้นกับไดเรกทอรีด้านล่างเท่านั้น$BACKUP_MNTPOINT/$USER_HOME
kralyk

ดังนั้น$BACKUP_MNTPOINT/$USER_HOMEมีสิทธิ์ที่เหมาะสม แต่ไดเรกทอรีย่อยใด ๆ ไม่ได้? โปรดแก้ไขคำถามของคุณและเพิ่มรายละเอียดเหล่านี้ และอธิบายว่าmkdir $BACKUP_MNTPOINT/$USER_HOME/fooสร้างไดเรกทอรีของผู้ใช้ของคุณหรือไม่ถ้าคุณทำด้วยตนเอง
terdon

ใช่mkdir $BACKUP_MNTPOINT/$USER_HOME/fooสร้างไดเรกทอรีด้วยกรรมสิทธิ์ของผู้ใช้
kralyk

จะดีจริง ๆ เพื่อดูข้อมูลที่เกี่ยวข้องจากstrace(ตามที่ระบุไว้ในคำตอบหลอก)
Pavel Šimerda

คำตอบ:


18

ฉันมีปัญหาที่คล้ายกันเมื่อใช้rsyncเพื่อสำรองข้อมูลระบบไปยังเซิร์ฟเวอร์ของฉัน ฉันใช้:

rsync -aAXSHPr \
-e ssh \
--rsync-path="sudo /usr/bin/rsync/" \
--numeric-ids \
--delete \
--progress \
--exclude-from="/path/to/file/that/lists/excluded/folders.txt" \
--include-from="/path/to/file/that/lists/included/folders.txt" \
/ USER@SERVER:/path/to/folder/where/backup/should/go/

การแก้ปัญหาคือไม่มีปัญหาจริงๆ ฉันสงสัยว่าคุณยกเลิกrsyncกระบวนการเมื่อคุณเห็นว่าสร้างโฟลเดอร์ที่มีการตั้งค่าการอนุญาตที่ไม่ถูกต้อง crux คือการrsyncตั้งค่าการอนุญาตของ parent-folder เมื่อทำการซิงค์โฟลเดอร์ย่อยและไฟล์ทั้งหมดแล้ว


1
ว้าวนั่นไม่ได้เกิดขึ้นกับฉันเลยเห็นได้ชัดขอบคุณ
kralyk

0

บางทีเรียกใช้ rsync ผ่าน strace / truss และดูว่าคุณได้รับข้อผิดพลาดกลับมาจาก chown () syscall และเพื่อยืนยันว่า chown () มีเส้นทางที่ถูกต้องและ UID / GID


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