Biasanya, rsync
melompati file ketika file memiliki ukuran dan waktu yang sama di sisi sumber dan tujuan. Ini adalah heuristik yang biasanya merupakan ide yang baik, karena mencegah rsync
dari harus memeriksa isi file yang sangat mungkin identik pada sisi sumber dan tujuan.
--ignore-times
memberitahu rsync
untuk mematikan heuristik waktu-dan-ukuran file, dan dengan demikian mentransfer SEMUA file tanpa syarat dari sumber ke tujuan. rsync
kemudian akan melanjutkan untuk membaca setiap file di sisi sumber, karena itu akan perlu menggunakan algoritma delta-transfer, atau cukup mengirim setiap file secara keseluruhan, tergantung pada apakah --whole-file
opsi tersebut ditentukan.
--checksum
juga memodifikasi heuristik waktu-dan-ukuran file, tetapi di sini mengabaikan waktu dan hanya memeriksa ukuran. File pada sisi sumber dan tujuan yang berbeda dalam ukuran ditransfer, karena mereka jelas berbeda. File dengan ukuran yang sama adalah checksummed (dengan MD5 dalam rsync
versi 3.0.0+, atau dengan MD4 di versi sebelumnya), dan yang ditemukan memiliki jumlah yang berbeda juga ditransfer.
Dalam kasus di mana sisi sumber dan tujuan sebagian besar sama, --checksum
akan menghasilkan sebagian besar file checksummed di kedua sisi. Ini bisa memakan waktu lama, tetapi hasilnya adalah bahwa data minimum yang paling sederhana sebenarnya akan ditransfer melalui kabel, terutama jika algoritma delta-transfer digunakan. Tentu saja, ini hanya kemenangan jika Anda memiliki jaringan yang sangat lambat, dan / atau CPU yang sangat cepat.
--ignore-times
, di sisi lain, akan mengirim lebih banyak data melalui jaringan, dan itu akan menyebabkan semua file sumber dibaca, tetapi setidaknya itu tidak akan membebani beban tambahan komputasi banyak hashsum yang kuat secara kriptografis pada CPU sumber dan tujuan. Saya berharap opsi ini berkinerja lebih baik daripada --checksum
ketika jaringan Anda cepat, dan / atau CPU Anda relatif lambat.
Saya pikir saya hanya akan menggunakan --checksum
atau --ignore-times
jika saya mentransfer file ke tujuan di mana diduga bahwa beberapa file rusak, tetapi waktu modifikasinya tidak berubah. Saya tidak bisa memikirkan alasan bagus lainnya untuk menggunakan kedua opsi ini, walaupun mungkin ada beberapa use case lainnya.
--checksum
berguna bersama--itemize-changes
untuk memverifikasi cadangan. Sesekali skrip cadangan saya menjalankan perbandingan penuh dengan cara ini setelah pembaruan harian / mingguan saat ini selesai. Saya mendapatkan email yang ditandai mendesak jika--itemize-changes
output sesuatu yang tidak terduga, jadi saya tahu ada potensi masalah yang harus saya perhatikan.--ignore-times
dan terutama--checksum
diperlukan jika salah satu "file" Anda adalah wadah file Truecrypt karena secara default cap waktu file tidak diperbarui. Lihat productforums.google.com/forum/#!topic/drive/gnmDp3UXEgs dan ask-leo.com/why_wont_my_truecrypt_volume_backup.html--checksum
checksum hanya nama file sumber pada mesin tujuan atau semua file di direktori tujuan?checksum juga berguna jika Anda telah menggunakan sistem lain untuk menyinkronkan file, yang belum mempertahankan cap waktu. Checksum hanya akan mentransfer file yang berbeda DAN memperbarui semua cap waktu di sisi penerima sehingga mereka cocok
sumber
Satu detail: opsi checksum memeriksa seluruh file di satu ujung, lalu seluruh file di ujung lainnya. Jika file Anda agak besar, ini membunuh paralelisme.
Juga, jika Anda memiliki file besar, Anda kemungkinan besar akan mengalami timeout dengan
--checksum
, karena Anda tidak melakukannya-I
.sumber
Dari
info rsync
dalam hal--checksum
opsi - "Karena seluruh file ini memeriksa semua file di kedua sisi koneksi terjadi di samping verifikasi checksum otomatis yang terjadi selama transfer file, opsi ini bisa sangat lambat."sumber
The
--ignore-times
pilihan mungkin akan menghasilkan semua file delta dikodekan dan algoritma delta transfer (delta encoding) setidaknya lambat seperti checksumming tersebut.Saya tidak tahu apakah rsync
--ignore-times
cukup pintar untuk menghindari "verifikasi setelah transfer otomatis" dalam kasus yang sering terjadi ketika delta-transfer tidak menghasilkan apa-apa yang ditransfer.Untuk
--ignore-times
:Keduanya
--checksum
dan--ignore-times
akan "sangat lambat" tetapi--ignore-times
kemungkinan bahkan lebih lambat (karena 2 kemungkinan di atas).Pertanyaan bagus - silakan posting jika Anda menemukan perbedaan kinerja dalam praktik.
sumber