rsync không bảo vệ quyền sở hữu thư mục ngay cả với -a


12

Tôi sử dụng lời gọi rsync này để sao lưu thư mục chính của mình:

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

Trang man rsync nói rằng -a ngụ ý -g và -o (trong số các thiết bị chuyển mạch khác), cần duy trì quyền sở hữu. Tuy nhiên, tôi nhận thấy rằng nếu một thư mục không tồn tại $BACKUP_MNTPOINT/$USER_HOME, nó được tạo với quyền sở hữu root: root thay vì thư mục chính xác. (Điều này chỉ xảy ra với các thư mục ngay bên dưới $BACKUP_MNTPOINT/$USER_HOME). Tại sao vậy?

$BACKUP_MNTPOINTlà một ổ đĩa gắn cục bộ. $BACKUP_MNTPOINT/$USER_HOMEkhông có quyền sở hữu và quyền. Không $USER_HOMEphải cũng không $BACKUP_MNTPOINTkết thúc bằng một dấu gạch chéo.

Cả nguồn và hệ thống tệp đích là XFS và việc chạy mkdir $BACKUP_MNTPOINT/$USER_HOMEsẽ tạo một thư mục với quyền sở hữu dự kiến.


1
Hệ thống tập tin là $BACKUP_MNTPOINTgì và với những tùy chọn nào được gắn kết? Điều này chỉ xảy ra cho thư mục cha ( $BACKUP_MNTPOINT/$USER_HOME) hoặc cho tất cả các thư mục được tạo? Làm $BACKUP_MNTPOINT$USER_HOMEkết thúc với một /?
terdon

Tôi sử dụng XFS cho cả hai /homevà ổ đĩa sao lưu. Cho đến nay tôi nghĩ rằng nó chỉ xảy ra cho các thư mục cha. Không $BACKUP_MNTPOINTphải cũng không $USER_HOMEkết thúc bằng một dấu gạch chéo. EDIT: Tôi có thể xác nhận ngay bây giờ nó chỉ xảy ra với các thư mục ngay bên dưới$BACKUP_MNTPOINT/$USER_HOME
kralyk

Vì vậy, $BACKUP_MNTPOINT/$USER_HOMEcó quyền đúng nhưng bất kỳ thư mục con nào không? Vui lòng chỉnh sửa câu hỏi của bạn và thêm các chi tiết này. Ngoài ra, làm rõ liệu có mkdir $BACKUP_MNTPOINT/$USER_HOME/footạo thư mục do người dùng của bạn sở hữu hay không nếu bạn thực hiện thủ công.
terdon

Có, mkdir $BACKUP_MNTPOINT/$USER_HOME/footạo một thư mục với quyền sở hữu của người dùng.
kralyk

Sẽ rất tuyệt khi thấy thông tin liên quan từ strace(như được chỉ định trong câu trả lời giả).
Pavel imerda

Câu trả lời:


18

Tôi gặp vấn đề tương tự khi sử dụng rsyncđể sao lưu hệ thống của mình vào máy chủ. Tôi đã sử dụng:

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/

Giải pháp là không thực sự có vấn đề. Tôi nghi ngờ rằng bạn đã hủy bỏ rsyncquy trình một khi bạn thấy rằng nó tạo các thư mục với các quyền được đặt sai. Điểm mấu chốt là rsyncchỉ đặt quyền của thư mục mẹ sau khi hoàn thành đồng bộ hóa tất cả các thư mục con và tệp của nó.


1
Wow, điều đó hoàn toàn không xảy ra với tôi, được phát hiện độc đáo, cảm ơn.
kralyk

0

Có lẽ chạy rsync thông qua strace / truss và xem liệu bạn có nhận được lỗi từ tòa nhà chown () không, và cũng để xác nhận rằng chown () có đường dẫn và UID / GID chính xác.


Một nhận xét tốt nhưng không phải là một câu trả lời.
Pavel imerda
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.