Ketika Anda mengirim set file yang sama, rsync
lebih cocok karena hanya akan mengirim perbedaan. tar
akan selalu mengirim semuanya dan ini adalah pemborosan sumber daya ketika banyak data sudah ada. The tar + rsync + untar
kehilangan keuntungan ini dalam kasus ini, serta keuntungan dari menjaga folder di-sync dengan rsync --delete
.
Jika Anda menyalin file untuk pertama kalinya, mengemas terlebih dahulu, kemudian mengirim, kemudian membongkar (AFAIK rsync
tidak mengambil input pipa) adalah rumit dan selalu lebih buruk daripada hanya rsyncing, karena rsync
tidak harus melakukan tugas lebih dari apa pun tar
.
Tip: rsync versi 3 atau yang lebih baru melakukan rekursi tambahan, artinya mulai menyalin segera sebelum menghitung semua file.
Tip2: Jika Anda menggunakan rsync
lebih dari ssh
, Anda juga dapat menggunakan keduanyatar+ssh
tar -C /src/dir -jcf - ./ | ssh user@server 'tar -C /dest/dir -jxf -'
atau hanya scp
scp -Cr srcdir user@server:destdir
Aturan umum, sederhanakan.
MEMPERBARUI:
Saya telah membuat data demo 59M
mkdir tmp; cd tmp
for i in {1..5000}; do dd if=/dev/urandom of=file$i count=1 bs=10k; done
dan menguji beberapa kali transfer file ke server jauh (tidak dalam lan yang sama), menggunakan kedua metode
time rsync -r tmp server:tmp2
real 0m11.520s
user 0m0.940s
sys 0m0.472s
time (tar cf demo.tar tmp; rsync demo.tar server: ; ssh server 'tar xf demo.tar; rm demo.tar'; rm demo.tar)
real 0m15.026s
user 0m0.944s
sys 0m0.700s
sambil menyimpan log terpisah dari paket lalu lintas ssh yang dikirim
wc -l rsync.log rsync+tar.log
36730 rsync.log
37962 rsync+tar.log
74692 total
Dalam hal ini, saya tidak dapat melihat keuntungan dalam lebih sedikit lalu lintas jaringan dengan menggunakan rsync + tar, yang diharapkan ketika mtu default adalah 1500 dan sementara file berukuran 10k. rsync + tar menghasilkan lebih banyak traffic, lebih lambat selama 2-3 detik dan meninggalkan dua file sampah yang harus dibersihkan.
Saya melakukan tes yang sama pada dua mesin pada lan yang sama, dan di sana rsync + tar melakukan jauh lebih baik dan lebih sedikit lalu lintas jaringan. Saya berasumsi penyebab frame jumbo.
Mungkin rsync + tar akan lebih baik daripada hanya rsync pada kumpulan data yang jauh lebih besar. Tapi terus terang saya tidak berpikir itu sepadan dengan masalah, Anda perlu ruang ganda di setiap sisi untuk berkemas dan membongkar, dan ada beberapa opsi lain seperti yang telah saya sebutkan di atas.