Apakah ada cara untuk mendapatkan rsync untuk mencetak file file lengkap ke semua file yang berbeda tanpa benar-benar mentransfer file?
Atau, saya perlu cara untuk membedakan file di dua pohon (lebih dari SSH) hanya berdasarkan pada perubahan ukuran atau waktu modifikasi terakhir.
--dry-run
akan tergantung pada penggunaan Anda pada-v
dan--progress options
- jadi jika Anda tidak mendapatkan output sama sekali, periksa opsi ini diatur sesuai kebutuhan. Saya perhatikan bahwa ia akan mengirim nama direktori bahkan ketika file tidak berubah, tetapi Anda dapat memfilter ini dengan melewatkan outputsed
atau sejenisnya.Saya lebih suka menggunakan --out-format untuk melihat detailnya, lebih sedikit:
sumber
rsync -rvn localdir targetdir
-N berarti menunjukkan tindakan saja (tanpa tindakan apa pun yang dilakukan).
Perhatikan bahwa Anda memerlukan 'v' atau tidak akan menunjukkan apa pun kepada Anda! (sisa jawabannya lupakan ini ...)
sumber
Membangun jawaban lain dan https://serverfault.com/a/618740/114520
--dry-run
(atau-n
) untuk menghindari modifikasi--itemize-changes
(atau-i
) untuk menemukan perubahan--archive
(atau-a
) untuk mendapatkan semua subdirektoriegrep
untuk menyaring entri yang dimulai dengan titik (tidak ada perubahan)Yang memberi Anda:
rsync -nia source destination | egrep -v "sending incremental file list" | egrep -v "^\."
Jika Anda hanya menginginkan satu cara, Anda dapat mengubah perintah:
rsync -nia source destination | egrep -v "sending incremental file list" | egrep -v "^(\.|<)"
rsync -nia source destination | egrep -v "sending incremental file list" | egrep -v "^(\.|>)"
Dan jika Anda hanya perlu file, tambahkan saja
awk
sihir:rsync -nia source destination | egrep -v "sending incremental file list" | egrep -v "^\." | awk '{print $2}'
sumber
Saya akan melakukan sesuatu seperti ini:
Sebagai contoh:
sumber
Kebenaran dari masalah ini adalah bahwa jika Anda menjalankan
rsync -v ...
dan menampilkan nama file ke layar, file tersebut sedang ditransfer (atau akan ditransfer, jika Anda menjalankan --dry-run). Untuk memastikan mengapa rsync hendak mentransfernya, gunakan mode perincian: https://serverfault.com/a/618740/27813Seperti yang telah dicatat oleh orang lain, secara default rsync hanya membandingkan berdasarkan ukuran file dan cap waktu, yang keduanya harus cocok dengan yang lain "delta copy" dimulai pada file itu. Jika Anda benar-benar ingin melihat file mana yang berbeda, gunakan mode checksum "-c".
sumber