tìm và rsync?


24

Tôi muốn có thể tìm kiếm các tệp trong hơn 14 ngày và hơn 10 nghìn và hơn rsync các tệp được tìm thấy đến đích.

Có cách nào để kết hợp hai lệnh này không?

find ./ -mtime +14 -size +10k 
rsync --remove-sent-files -avz /src /dest

Câu trả lời:


33

Bạn có thể gửi đầu ra của tìm kiếm vào rsync bằng một trong các tùy chọn được nêu dưới đây.

Phương pháp số 1

Hai tùy chọn này rất giống nhau, cả hai đều cho rằng bạn đang thay đổi thư mục sang một số vị trí và sau đó chạy findlệnh từ đó.

$ rsync -avz --remove-sent-files \
        --files-from=<(find ./ -mtime +14 -size +10k) ./ /dest

Bạn cũng có thể sử dụng một đường ống để cung cấp danh sách trong:

$ find ./ -mtime +14 -size +10k -print0 \
        | rsync -av --files-from=- --from0 ./ /dest

Phương pháp # 2

Phương pháp này có thể được chạy từ bất cứ đâu.

$ find /src/dir/ -mtime +14 -size +10k -printf %P\\0 \
        | rsync --files-from=- --from0 /src/dir/ /dst/dir/
  • printf %P: Tên tệp với tên của đối số dòng lệnh mà theo đó nó được tìm thấy đã bị xóa. Bằng cách này, bạn có thể sử dụng bất kỳ thư mục src nào, không cần phải cd vào thư mục src của bạn trước.

Tài liệu tham khảo

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.