Sử dụng tập lệnh shell để kiểm tra xem rsync có thực hiện bất kỳ thay đổi nào không


10

Tôi đã có một tập lệnh bash có hai thư mục của rsync. Đôi khi có một sự thay đổi, tỷ lệ cược là không có gì.

Tôi chỉ muốn chạy một lệnh nếu rsync thực sự thay đổi (thêm / cập nhật tệp). Nếu không tôi muốn bỏ qua nó. Có một phản hồi trở lại tôi nên xem xét?

Câu trả lời:


11

Nếu bạn sử dụng tùy chọn -i (và không sử dụng tùy chọn -v), rsync sẽ chỉ in các dòng thành STDOUT cho bất kỳ thay đổi nào đã được thực hiện. Tùy thuộc vào kịch bản của bạn, điều này có thể trông giống như

if [ -n "$(rsync -i /dir1 /dir2)" ]; then
  run_command;
fi

Điều đó dường như làm chính xác những gì tôi muốn ... cảm ơn. Không nghĩ đến việc sử dụng cờ -i như thế.
raccettura

Để làm rõ, nếu bạn muốn chạy tập lệnh chỉ khi một thay đổi được thực hiện, thì ==nên làm !=.
hamx0r

Cũng như nó là, mã này là sai từ những gì tôi đã thấy. Đối với mã đó, bạn nhận được nó Đồng bộ hóa đã chạy FINE hoặc ĐÃ CÓ LRI, nhưng mã này không kiểm tra xem có thay đổi hay không. Tôi không biết liệu phiên bản khác của Rupync có thể không, nhưng tôi đã sử dụng RSYNC trong Raspbmc (một triển khai cũ mà chúng tôi có) và OSMC. Điều này thật đáng buồn vì RSYNC dường như là một công cụ tuyệt vời.

2
Với đầu ra -iphiên bản cờ - rsync khi không có thay đổi nào được thực hiện. 3.1.1sending incremental file list
Dor
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.