rsync: làm thế nào để loại trừ thư mục trên cùng


14

Vì vậy, tôi có một vấn đề có vẻ đơn giản, nhưng cho đến nay tôi vẫn chưa tìm thấy giải pháp: Tôi muốn loại trừ thư mục trên cùng khỏi rsync, trong khi vẫn đồng bộ hóa tất cả các con của nó. Vấn đề cụ thể là tôi không có quyền sửa đổi thời gian của thư mục trên cùng, nhưng muốn tất cả trẻ em có thời gian đồng bộ hóa chính xác.

Lệnh rsync tôi đang sử dụng như sau:

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

server.example.com:/usr/local/directory/trông như thế này:

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

(người dùng địa phương của tôi là thành viên của staff)

Khi tôi chạy rsync, tôi gặp lỗi sau:

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

Đây là phiên bản 3.0.9 trên máy cục bộ và 3.0.7 trên điều khiển từ xa, cả hai máy đều chạy Debian.


Là bạn quen với cú pháp trong ví dụ này: wirespeed.xs4all.nl/mediawiki/index.php/... Nó cho phép bạn bao gồm tập tin cụ thể / thư mục từ một thư mục loại trừ khác. Bạn có thể cần phải sử dụng một tập tin loại trừ mặc dù.
jippie

Vâng. Vấn đề là tôi dường như không thể thuyết phục nó để loại trừ thư mục toplevel (cụ thể). Tôi đã không có vấn đề với việc trộn bao gồm / loại trừ trong quá khứ, có vẻ như toplevel là một trường hợp đặc biệt.
Steve Pomeroy

Câu trả lời:


8

Tôi nghĩ rằng các quy tắc bộ lọc của rsync không thể phù hợp với thư mục toplevel, vì vậy nó luôn được đồng bộ hóa. Một cách giải quyết là đồng bộ hóa tất cả các tệp trong thư mục này thay vì chính thư mục đó.

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

Thêm .[!.]*sau *nếu bạn có tệp chấm trong thư mục trên cùng và ..?*nếu bạn có tên tệp bắt đầu bằng hai dấu chấm.


2
Thật sự cảm ơn! Điều đó làm việc. Nhược điểm duy nhất của kỹ thuật này là nó yêu cầu shell để chọn tất cả các tệp. Nếu bạn có hàng tấn tệp trong thư mục (mà tôi không có trong trường hợp của tôi), nó có thể bị sặc. Điều đó có thể được sửa bằng xargs (mặc dù không phải với các tùy chọn --delete).
Steve Pomeroy

Một vấn đề tôi gặp phải khi sử dụng *--deletekhông xóa bất kỳ tệp nào, vì chúng không phải là một phần của tìm kiếm.
thomasa88

@ thomasa88 Xin vui lòng xem câu trả lời này .
Kamil Maciorowski
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.