Saya memiliki file 500 GB yang saya rencanakan untuk mencadangkan dari jarak jauh. File sering berubah. Saya akan rsyncing dari desktop ke server. Keduanya dapat menjalankan rsync client atau server.
Apa perintah yang tepat untuk ini? Yang saya coba sofar telah mengambil selamanya atau hanya bertindak aneh.
Contoh dan hasil:
rsync -cv --partial --inplace --no-whole-file /desktop/file1 myserver.com::module/file1
Tampaknya bekerja, tetapi hanya jika saya melakukannya dua kali (?!). Juga lambat.
Apakah perintah di atas melakukan checksumming pada kedua komputer, atau hanya pada komputer pengirim? Apakah itu benar?
Jawaban:
Tidak akan pernah cepat, karena rsync harus membaca / memeriksa seluruh file, dan membaca 500GB akan memakan waktu lama, kecuali Anda menyimpannya di SSD atau apalah.
Coba
rsync -vhz --partial --inplace <file/server stuff>
.-c
berarti bahwa checksum seluruh file SEBELUM melakukan transfer, daripada menggunakan timestamp untuk melihat apakah itu berubah, yang berarti membaca seluruh file dua kali. Jika timestamp tidak diubah (seharusnya), maka Anda dapattouch
menjalankan file tersebut sebelum menjalankan rsync.Jika ini bukan skrip, Anda dapat menambahkan
--progress
sehingga Anda dapat melihat bagaimana kinerjanya saat berjalan.sumber
--inplace
menyiratkan--partial
Meskipun ini bukan rsync, tergantung pada apa yang Anda coba lakukan ini mungkin bekerja lebih baik. Saya melakukan tugas cadangan serupa dan itu pasti lebih cepat.
Gunakan netcat untuk membuat pipa tar dari satu mesin ke mesin lainnya.
Di mesin sumber Anda:
tar -cpv --atime-preserve=system . | nc -q 10 -l -p 45454
Anda sedang membuat tarball mempertahankan izin dan waktu, lalu memasukkannya ke netcat pada port 45454
Di mesin cadangan Anda
nc -w 10 X.X.X.X 45454 | tar -xpv
X.X.X.X
= alamat ip lokal mesin sumber Anda.Bagi saya, ini bekerja dengan baik. Itu berjalan pada 25-30 MB / s melalui LAN kabel dibandingkan dengan 2-3 MB / s dengan rsync. Kerugiannya adalah: tidak disinkronkan, hanya membuat salinan dari apa yang ada di sumber Anda. Untuk cadangan seperti yang Anda gambarkan - satu file 500GB - ini bisa bekerja dengan sangat baik.
Anda mungkin harus melakukan ini sebagai root untuk menghindari masalah izin, atau Anda mungkin beruntung.
FWIW, saya awalnya belajar tentang ini di sini: http://www.screenage.de/blog/2007/12/30/using-netcat-and-tar-for-network-file-transfer/
sumber
tar
lebih baik daripadarsync
ketika Anda memiliki banyak file kecil untuk ditransfer. Menggunakannc
juga meningkatkan kecepatan transfer ketika pada koneksi cepat, karena Anda tidak memiliki overhead SSH-enkripsi (yang saya tidak perlu pada koneksi peer-to-peer)Untuk menghindari overhead jaringan cukup gunakan protokol rsync dan bukan SSH. Secara default, rsync menggunakan SSH ketika menentukan URL seperti nama host: / path. Gunakan rsync: // hostname / path sebagai gantinya untuk menggunakan protokol rsync yang lebih cepat. Tidak ada trik dengan tar / netcat yang diperlukan dengan cara ini. Algoritma delta rsync harus jauh lebih cepat.
Lihat juga https://gergap.wordpress.com/tag/rsync/ untuk informasi lebih lanjut.
sumber