2009-12-15 16 views
6

Khi rsync in ra chi tiết về những gì nó đã làm cho mỗi tệp (sử dụng một trong các cờ tiết) có vẻ như bao gồm cả các tệp đã được cập nhật và tệp không được cập nhật. Ví dụ một đoạn đầu ra của tôi bằng cách sử dụng -v cờ trông như thế này:Chỉ có rsync báo cáo các tệp đã được cập nhật

rforms.php is uptodate 
robots.txt is uptodate 
sorry.html 
thankyou.html is uptodate 

Tôi chỉ quan tâm về các tập tin đã được cập nhật. Trong trường hợp trên là sorry.html. Nó cũng in ra tên thư mục khi nó nhập chúng ngay cả khi không có tập tin trong thư mục đó được cập nhật. Có cách nào để lọc ra các tập tin và thư mục uptodate không có tập tin cập nhật từ đầu ra này?

Trả lời

4

Bạn có ống thông qua grep:

rsync -vv (your other rsync options here) | grep -v 'uptodate' 
+0

Trên các tệp đang chạy dài, bạn sẽ không nhận được tiến trình vì grep không tương tác. – srigi

+0

không hoạt động đối với phiên bản> = 3.0.7 (xem http://serverfault.com/questions/401210/rsync-report-only-uploaded-files#comment418372_401215) –

+1

Tôi muốn sửa, hoặc ít nhất là làm rõ, những gì @jeff đăng ở trên và những gì @KarlRichter chỉ ra. Tôi nghĩ rằng vấn đề không phải là 'rsync -v' không còn phát ra chuỗi" uptodate "nữa mà đúng hơn là bạn cần sử dụng' rsync -vv'. Lưu ý hai 'v'. Tôi vừa xác minh điều này hoạt động trên Ubuntu 14.04 với phiên bản 'rsync' 3.1.0. Bạn có thể cập nhật bài đăng của mình để phản ánh điều này không? –

3

đầu ra Rsync có thể được tùy biến rộng rãi, hãy nhìn vào ; -v là một cách khá thô lỗ để nhận thông tin từ rsync hiện đại.

Trong trường hợp của bạn, tôi không chắc chắn chính xác những gì bạn xem là "cập nhật". Ví dụ, xóa trên máy thu quá? Chỉ các tệp/dir, mà còn cả đường ống và liên kết tượng trưng nữa? Mod/lần truy cập hoặc chỉ nội dung?

Là một thử nghiệm đơn giản, tôi đề nghị bạn xem: rsync --info=name1 <other opts>.

+0

Làm thế nào về cập nhật như trong "xúc động trong bất kỳ cách nào"? – Michael

0

Dưới đây là quan điểm của tôi ... (công việc đã được chứng minh và rất hài lòng với nó.)

rsync -arzihv --stats --progress \ 
    /media/frank/foo/    \ 
    /mnt/backup_drive/ | grep -E '^[^.]|^$' 

Các bit quan trọng là -i cho itemize.

Các grep phép tất cả dòng sản lượng vượt qua (còn bất kỳ tóm tắt như trong -h --stats, cũng những người có sản phẩm nào trước đó, có lợi cho mức độ dễ đọc) trừ những bắt đầu với một dấu chấm: Đây là những người, mà describe unchanged files:

A . means that the item is not being updated (though it 
    might have attributes that are being modified). 
Các vấn đề liên quan