1. Các vấn đề với các ký tự đặc biệt trong tên tệp
Có bất kỳ nhân vật đặc biệt trong tên tập tin? Tùy thuộc vào hệ thống tệp mà bạn đang ghi các tệp này vào, chúng có thể không cho phép bạn đặt tiền tố các tệp có dấu chấm ( .
).
2. Sự cố với thời gian sửa đổi rsync và webdav2
Tôi đã xem qua bài đăng trên blog này , nơi một vấn đề được mô tả là rsync
có vấn đề về việc ghi / theo dõi thời gian sửa đổi tệp trên các thư mục box.com được gắn trên webdav2.
Vấn đề hiển thị như thế này trong hệ thống tệp được gắn kết:
david@sydney:~/Pictures$ ls -l /mnt/box/bwca/08/09/IMG_3084.CR2
-rw-r--r-- 1 david david 12564061 Aug 14 16:08 /mnt/box/bwca/08/09/IMG_3084.CR2
david@sydney:~/Pictures$ ls -l 2012/08/09/IMG_3084.CR2
-rw-rw-r-- 1 david david 12564061 Aug 9 13:00 2012/08/09/IMG_3084.CR2
Bài báo tương tự cho thấy một cách giải quyết:
$ rsync -avhP --size-only --bwlimit=64 2012/08 /mnt/box/bwca/
Đây là một cách sử dụng OK rsync
, nhưng nó chỉ so sánh các tệp dựa trên kích thước của chúng bây giờ, không phải là tổng kiểm tra của chúng.
3. Các vấn đề với davfs2 (WebDAV)
Tôi đã xem qua chủ đề này có tiêu đề: rsync qua davfs2? trong diễn đàn WebDAV (davfs) trên sourceforge. Ai đó đã hỏi về một tình huống tương tự khi họ muốn sử dụng WebDAV để gắn kết một nhà cung cấp lưu trữ trực tuyến và thực hiện rsync cho lưu trữ được gắn kết thông qua WebDAV. Đây là những gì một trong những nhà phát triển (Werner Baumann) của WebDAV đã nói về chủ đề này .
trích đoạn trả lời của Werner
davfs2 sẽ chỉ tải lên các tập tin hoàn chỉnh. Nó không thể thực hiện các công cụ gia tăng rsync thường làm và điều đó làm cho rsync rất hiệu quả.
davfs2 sử dụng bộ đệm cục bộ trên đĩa. Điều này sẽ làm cho nó phản ứng nhanh hơn và ứng dụng của bạn cũng nên kiếm lợi từ việc này. Nhưng nó cần không gian đĩa cục bộ cho việc này. Bạn nên cho phép kích thước bộ đệm lớn, vì vậy rsync có thể thực hiện hầu hết công việc của nó với bộ đệm cục bộ và davfs2 sẽ tải lên hầu hết các tệp trong nền, khi rsync đã kết thúc.
Werner tiếp tục đề xuất như sau
Đây có thể là một bất lợi trong trường hợp này. Khi rsync đọc một tệp trên máy chủ từ xa, nó phải được davfs2 chuyển vào bộ đệm cục bộ trước (nếu nó chưa có ở đó). Điều này có thể làm cho quá trình thực sự và không cần thiết chậm. Vì rsync chỉ hoạt động như một chương trình sao chép tinh vi trong trường hợp của bạn, nên sử dụng cp thay thế sẽ tốt hơn. cp có một tùy chọn (-u) để chỉ sao chép các tệp mới hơn các tệp trong hệ thống tệp davfs2 (= smartdrive) và không cần đọc các tệp mà chỉ đọc dữ liệu meta tệp như mtime.
Một lệnh như "cp -pru thư mục / to / backup dav /" có thể thực hiện công việc. Nó sẽ không tải xuống các tệp (như rsync có thể làm, nhưng tôi không chắc chắn) (vui lòng xem hướng dẫn sử dụng của cp và rsync).
Lựa chọn?
Vì vậy, như @Anthon đã đề xuất, bạn có thể sử dụng cp -u
phương pháp để sao chép các tệp. Nhận ra rằng phương pháp này chỉ xem kích thước của tệp là một yếu tố so sánh, vì vậy nó không hoàn toàn đáng tin cậy.
Bạn không nên sử dụng bất cứ thứ gì chỉ nhìn vào thời gian sửa đổi khi so sánh các tệp , cp -pru
. Werner giải thích tại sao trong chủ đề này :
trích đoạn về vấn đề với thời gian mod
Khi bạn ngắt kết nối hệ thống tệp davfs2 và gắn lại vào một lúc nào đó, thời gian tệp có thể đã thay đổi theo thông tin thời gian từ máy chủ. Các công cụ như cp -pu và rsync không thể dựa vào những thời điểm này để xác định tập tin nào đã thay đổi.
Vì vậy, với các vấn đề khác nhau xung quanh thời gian sửa đổi, một cách tiếp cận sử dụng tổng kiểm tra hoàn toàn có vẻ phù hợp hơn:
$ rsync -avvz --omit-dir-times --checksum --human-readable --progress <local dir> <remote dir>
--max-size=250M --exclude '.*'
. Tôi chắc chắncp
có thể được thực hiện để làm điều này ... có thể bằng cách chuyển đầu ra của tìm kiếm vào cp? Nhưng tôi không biết làm thế nào để làm điều đó. Nếu chúng tôi đưa ra giải pháp, tôi sẽ thửcp -ru
. Cảm ơn