Apakah ada perintah, seperti rsync, yang dapat menyinkronkan file besar, jarang, dari satu server linux ke yang lain?
Sangat penting bahwa file tujuan tetap jarang. Mungkin lebih panjang (tetapi tidak lebih besar) dari drive yang berisi itu. Hanya blok yang diubah harus dikirim melintasi kawat.
Saya sudah mencoba rsync, tetapi tidak mendapat sukacita. https://groups.google.com/forum/#!topic/mailing.unix.rsync/lPOScZgFE9M
Jika saya menulis sebuah program untuk melakukan ini, apakah saya hanya menciptakan kembali kemudi? http://www.finalcog.com/synchronise-block-devices
Terima kasih,
Chris
linux
rsync
kvm-virtualization
fadedbee
sumber
sumber
Jawaban:
Untuk membuat file baru dalam mode jarang
Diikuti oleh
Untuk memperbarui semua file yang ada (termasuk yang sudah dibuat sebelumnya) di tempat.
sumber
rsync --existing --inplace
dan kemudianrsync --ignore-existing --sparse
memiliki speedup sinkronisasiRsync hanya mentransfer perubahan ke setiap file dan dengan --inplace seharusnya hanya menulis ulang blok yang diubah tanpa membuat ulang file. Dari halaman fitur mereka .
Menggunakan --inplace seharusnya bekerja untuk Anda. Ini akan menunjukkan kepada Anda kemajuan, kompres transfer (pada tingkat kompresi default), transfer konten direktori penyimpanan lokal secara rekursif (yang pertama kali mengekor masalah slash), buat perubahan pada file yang ada dan gunakan ssh untuk transportasi.
Saya sering menggunakan flag-a juga yang melakukan beberapa hal lagi. Itu sama dengan -rlptgoD. Saya akan meninggalkan perilaku yang tepat bagi Anda untuk mencari di halaman manual.
sumber
Saya akhirnya menulis perangkat lunak untuk melakukan ini:
http://www.virtsync.com
Ini adalah perangkat lunak komersial dengan biaya $ 49 per server fisik.
Saya sekarang dapat mereplikasi file jarang 50GB (yang memiliki konten 3GB) dalam waktu kurang dari 3 menit di seluruh broadband perumahan.
sumber
Lihatlah Zumastor Linux Storage Project yang mengimplementasikan cadangan "snapshot" menggunakan biner "rsync" melalui
ddsnap
alat ini.Dari halaman manual:
ddsnap menyediakan replikasi perangkat blok yang diberikan fasilitas snapshot level blok yang mampu menahan beberapa snapshot simultan secara efisien. ddsnap dapat menghasilkan daftar bidikan snapshot yang berbeda antara dua snapshot, lalu kirim perbedaan itu melalui kabel. Pada server hilir, tulis data yang diperbarui ke perangkat blok snapshotted.
sumber
lvmsync melakukan ini.
Berikut transkrip penggunaan . Ini menciptakan snapshot LVM pada sumber, mentransfer partisi logis. Anda dapat mentransfer pembaruan perubahan tambahan sejak pembuatan snapshot sesering mungkin.
sumber
Bisakah mereplikasi seluruh sistem file menjadi solusi? DRBD? http://www.drbd.org/
sumber
Mungkin agak aneh di sini, tapi saya baru-baru ini tahu bahwa NFS menangani ini dengan baik.
Jadi Anda mengekspor direktori pada satu mesin kemudian me-mount-nya di mesin yang lain dan Anda cukup menyalin file-file tersebut dengan utilitas dasar seperti
cp
. (Beberapa utilitas lama / kuno dapat mengalami masalah dengan file yang jarang.)Saya menemukan
rsync
sangat tidak efisien dalam mentransfer file jarang.sumber
Untuk menyinkronkan file besar atau memblokir perangkat dengan perbedaan rendah hingga sedang, Anda dapat melakukan penyalinan biasa atau menggunakan bdsync , rsync sama sekali tidak cocok untuk kasus khusus ini *.
bdsync
bekerja untuk saya, tampaknya cukup dewasa, itu sejarah bug yang menggembirakan (masalah kecil, resolusi cepat). Dalam pengujian saya, kecepatannya mendekati maksimum teoretis yang bisa Anda peroleh ** (artinya Anda dapat menyinkronkan waktu yang Anda perlukan untuk membaca file). Akhirnya open source dan tidak ada biaya.bdsync
membaca file dari kedua host dan bertukar cek-jumlah untuk membandingkannya dan mendeteksi perbedaan. Semua ini pada saat bersamaan . Akhirnya membuat file tambalan terkompresi pada host sumber. Kemudian Anda memindahkan file itu ke host tujuan dan menjalankan bdsync untuk kedua kalinya untuk menambal file tujuan.Saat menggunakannya melalui tautan yang agak cepat (misalnya ethernet 100Mbit) dan untuk file dengan perbedaan kecil (seperti yang sering terjadi pada disk VM) itu mengurangi waktu untuk menyinkronkan ke waktu Anda perlu membaca file. Melalui tautan lambat, Anda perlu sedikit lebih banyak waktu karena Anda harus menyalin perubahan yang dikompresi dari satu host ke host lain (sepertinya Anda dapat menghemat waktu menggunakan trik yang bagus tetapi belum diuji).
*: rsync sangat tidak efisien dengan file besar. Bahkan dengan --inplace pertama kali akan membaca seluruh file pada host tujuan, SETELAH mulai membaca file pada host sumber dan akhirnya mentransfer perbedaan (jalankan saja dstat atau serupa saat menjalankan rsync dan amati). Hasilnya adalah bahwa bahkan untuk file dengan perbedaan kecil dibutuhkan sekitar dua kali lipat waktu Anda perlu membaca file untuk menyinkronkannya.
**: Dengan asumsi bahwa Anda tidak memiliki cara lain untuk mengetahui bagian file apa yang telah berubah. Snapshots LVM menggunakan bitmap untuk merekam blok yang diubah sehingga mereka bisa menjadi sangat cepat (readme lvmsync memiliki lebih banyak info).
sumber
Saya tidak mengetahui utilitas semacam itu, hanya panggilan sistem yang dapat menanganinya, jadi jika Anda menulis utilitas seperti itu, mungkin akan lebih membantu.
apa yang sebenarnya dapat Anda lakukan adalah menggunakan konversi qemu-img untuk menyalin file, tetapi itu hanya akan berfungsi jika FS tujuan mendukung file jarang
sumber