2011-12-20 10 views
18

Có ai biết nếu có tùy chọn rsync không, để các thư mục đang được duyệt không hiển thị trên thiết bị xuất chuẩn.Không hiển thị các thư mục trong đầu ra rsync

Tôi đang đồng bộ hóa thư viện nhạc và số lượng thư mục khổng lồ khiến việc xem những thay đổi tệp nào thực sự đang diễn ra rất khó. Tôi đã thử -v và -i, nhưng cả hai đều hiển thị các thư mục.

Trả lời

19

Nếu bạn đang sử dụng --delete trong lệnh rsync của bạn, vấn đề với gọi grep -E -v '/$' là nó sẽ bỏ qua dòng thông tin như :

deleting folder1/ 
deleting folder2/ 
deleting folder3/folder4/ 

Nếu bạn tạo bản sao lưu và thư mục từ xa đã bị xóa hoàn toàn vì lý do X, nó cũng sẽ xóa thư mục cục bộ của bạn vì bạn không thấy dòng xóa.

Để bỏ qua các thư mục đã tồn tại nhưng giữ dòng xóa cùng một lúc, bạn có thể sử dụng biểu thức này:

rsync -av --delete remote_folder local_folder | grep -E '^deleting|[^/]$' 
+0

Câu trả lời hay. Để đồng bộ hóa tập tin, tôi muốn chạy khô trước khi chạy lệnh để tôi sử dụng tùy chọn '-n'. Để dễ đọc, tôi đã sửa đổi regex grep để bao gồm dòng trống, 'rsync -av --delete remote_folder local_folder | grep -E '^ xóa | [^ /] $ |^$' ' –

11

Tôi sẽ bị cám dỗ để lọc bằng cách sử dụng đường ống qua grep -E -v '/ $' sử dụng kết thúc dòng để loại bỏ các đường kết thúc bằng dấu gạch chéo (một thư mục).

Dưới đây là phiên bản demo thiết bị đầu cuối mà tôi đã kiểm tra nó ...

[email protected]:~$ mkdir rsynctest 
[email protected]:~$ cd rsynctest/ 
[email protected]:~/rsynctest$ mkdir 1 
[email protected]:~/rsynctest$ mkdir 2 
[email protected]:~/rsynctest$ mkdir -p 1/first 1/second 
[email protected]:~/rsynctest$ touch 1/first/file1 
[email protected]:~/rsynctest$ touch 1/first/file2 
[email protected]:~/rsynctest$ touch 1/second/file3 
[email protected]:~/rsynctest$ touch 1/second/file4 

[email protected]:~/rsynctest$ rsync -r -v 1/ 2 
sending incremental file list 
first/ 
first/file1 
first/file2 
second/ 
second/file3 
second/file4 

sent 294 bytes received 96 bytes 780.00 bytes/sec 
total size is 0 speedup is 0.00 


[email protected]:~/rsynctest$ rsync -r -v 1/ 2 | grep -E -v '/$' 
sending incremental file list 
first/file1 
first/file2 
second/file3 
second/file4 

sent 294 bytes received 96 bytes 780.00 bytes/sec 
total size is 0 speedup is 0.00 
+5

tôi đi đến kết luận tương tự bản thân mình. Nó chỉ có vẻ ngu ngốc mà rsync không có một chuyển đổi để làm điều này. Cám ơn vì sự gợi ý! –