temukan dan rsync?

24

Saya ingin dapat mencari file lebih dari 14 hari dan lebih dari 10k dan daripada rsync file yang ditemukan ke tujuan.

Apakah ada cara untuk menggabungkan kedua perintah ini?

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

Jawaban:

33

Anda dapat mengirim output find ke rsync menggunakan salah satu opsi yang diuraikan di bawah ini.

Metode # 1

Kedua opsi ini sangat mirip, keduanya menganggap Anda mengubah direktori ke beberapa lokasi dan kemudian menjalankan findperintah dari sana.

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

Anda juga dapat menggunakan pipa untuk memberi makan daftar di:

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

Metode # 2

Metode ini dapat dijalankan dari mana saja.

$ find /src/dir/ -mtime +14 -size +10k -printf %P\\0 \
        | rsync --files-from=- --from0 /src/dir/ /dst/dir/
  • printf %P: Nama file dengan nama argumen baris perintah di mana ia ditemukan dihapus. Dengan cara ini, Anda dapat menggunakan direktori src, tidak perlu cd ke direktori src Anda terlebih dahulu.

Referensi

slm
sumber