Saya menjalankan rsync untuk menyinkronkan direktori ke HDD USB eksternal saya. Ini sekitar 150 pertunjukan data. 50000+ file saya kira.
Ini sedang berjalan, ini sinkronisasi pertama saat ini, tetapi menyalin file dengan kecepatan hanya 1-5 MB / s. Tampaknya sangat lambat untuk penutup USB 2.0. Tidak ada transfer lain yang terjadi di drive juga.
Berikut adalah opsi yang saya gunakan:
rsync -avz --progress /mysourcefolder /mytargetfolder
Saya menjalankan Ubuntu Server 9.10.
usb
ubuntu-9.10
usb-flash-drive
rsync
Jake Wilson
sumber
sumber
tar
perintah pipa ataucpio
.Jawaban:
Untuk sinkronisasi pertama gunakan saja
rsync hanya menambahkan overhead ketika tujuan kosong.
juga .. opsi -z mungkin membunuh kinerja Anda, Anda tidak boleh menggunakannya jika Anda tidak mentransfer data melalui tautan lambat.
sumber
rsync -avz --progress /mysourcefolder/ /mytargetfolder
atau Anda akan mendapatkan salinan bagianmysourcefolder
dalammytargetfolder
daripada mencerminkan isinyaJika Anda menggunakan rsync dengan jaringan cepat atau disk ke disk di mesin yang sama,
tidak menggunakan kompresi -z
dan menggunakan --inplace
mempercepatnya hingga kinerja perangkat keras atau jaringan
kompresi menggunakan banyak CPU
tidak menggunakan inplace membuat hard drive thrash banyak (menggunakan file temp sebelum membuat final)
kompresi & tidak menggunakan inplace lebih baik untuk melakukannya melalui internet (jaringan lambat)
BARU: Hati-hati dengan tujuan ... jika ada "kompresi" NTFS diaktifkan ... ini sangat memperlambat file besar (saya akan mengatakan 200MB +) rsync hampir tampak terhenti, itu disebabkan oleh ini.
sumber
Gunakan
-W
opsi. Ini menonaktifkan perbandingan delta / diff. Ketika waktu / ukuran file berbeda, rsync menyalin seluruh file.Hapus juga
-z
opsi. Ini hanya berguna untuk mengompresi lalu lintas jaringan.Sekarang
rsync
harus secepatcp
.sumber
-z
hanya berguna untuk lalu lintas jaringan kecepatan rendah . Jika jaringan Anda cukup cepat, itu akan memperlambat segalanya, karena Anda akan dibatasi oleh CPU.-W
: "Ini adalah default ketika sumber dan tujuan ditetapkan sebagai jalur lokal, tetapi hanya jika tidak ada opsi penulisan batch yang berlaku."Pertama - jumlah file dalam hal ini akan menjadi faktor utama. Ini ukuran rata-rata masing-masing 3MB. Mungkin ada hambatan io yang mempengaruhi kecepatan dalam kasus OP. Lebih lanjut di sini - itu bacaan yang cukup kering, tetapi gambar sampulnya sepadan.
Jadi, menggunakan rsync untuk menyalin ke direktori kosong? Berikut beberapa cara untuk mempercepatnya:
rsync -a /source /destination >/somewhere/rsync.out 2>/somewhere/rsync.err
- yang pertama> pada dasarnya mencetak file dengan semua hal yang biasanya Anda lihat, dan 2> mengacu pada pesan kesalahan.Perintah saya adalah:
rsync -avAXEWSlHh /source /destination --no-compress --info=progress2 --dry-run
Jika semua terlihat baik, saya akan menghapus "--dry-run" dan biarkan saja. A, X, dan E mencakup atribut yang diperluas dan izin yang tidak tercakup oleh -a, l adalah untuk tautan lunak, H adalah untuk tautan keras, dan h adalah untuk dibaca manusia.
Memperbarui direktori yang sudah disinkronkan pada drive USB, atau drive yang sama, atau melalui jaringan, semua akan memerlukan perintah rsync yang berbeda untuk memaksimalkan kecepatan transfer.
Bonus - inilah halaman manual rsync , dan jika Anda ingin menguji kecepatan hard drive Anda, Bonnie ++ adalah pilihan yang baik, dan untuk kecepatan jaringan Anda, coba iperf .
* Posting sudah hampir sepuluh tahun, tetapi mesin pencari pasti menyukainya, dan saya terus melihatnya. Ini pertanyaan yang bagus, dan saya tidak berpikir jawaban teratas untuk "bagaimana mempercepat rsync" seharusnya "menggunakan cp sebagai gantinya."
sumber
Anda tidak mengatakan ukuran distribusi file Anda. Jika ada banyak file kecil maka ini akan mengurangi kecepatan transfer keseluruhan dengan meningkatkan latensi pergerakan head di drive sumber dan tujuan saat alat membuka file baru dan OS menyimpan entri direktori dan metadata lainnya (seperti jurnal sistem file jika Anda menggunakan penjurnalan meta-data seperti ext3 / ext4 dan NTFS secara default) diperbarui selama transfer. Proses menyalin file hanya akan "masuk ke langkahnya" untuk objek yang lebih besar, ketika transfer massal sederhana terjadi.
sumber
Anda pasti ingin mencoba rclone . Hal ini gila cepat:
$ tree / usr [...] 26105 direktori, 293208 file
$ sudo rclone sync / usr / home / fred / temp -P -L --transfers 64
Ditransfer: 17.929G / 17.929 GBytes, 100%, 165.692 MByts / s, ETA 0s Kesalahan: 75 (coba lagi dapat membantu) Cek: 691078/691078, 100% Ditransfer: 345539/345539, 100% Waktu berlalu: 1m50.8s
Ini adalah salinan lokal dari dan ke SSD LITEONIT LCS-256 (256GB).
Anda dapat menambahkan --ignore-checksum pada proses pertama untuk membuatnya lebih cepat.
sumber
Menghindari
-z
/--compress
: kompresi hanya akan memuat CPU karena transfer tidak melalui jaringan tetapi lebih dari RAM.--append-verify
: melanjutkan transfer yang terputus. Ini kedengarannya seperti ide yang bagus, tetapi memiliki kasus kegagalan berbahaya: file tujuan apa pun dengan ukuran yang sama (atau lebih besar) dari sumber akan di-IGNORED. Selain itu, checksum seluruh file di akhir, yang berarti tidak ada mempercepat secara signifikan--no-whole-file
sambil menambahkan kasus kegagalan berbahaya.Menggunakan
-S
/--sparse
: mengubah urutan null menjadi blok jarang--partial
atau-P
yang--partial --progress
: menyimpan file yang ditransfer sebagian untuk melanjutkan kembali di masa depan. Catatan: file tidak akan memiliki nama sementara, jadi pastikan tidak ada lagi yang mengharapkan untuk menggunakan tujuan sampai seluruh salinan selesai.--no-whole-file
sehingga segala sesuatu yang perlu dikirim ulang menggunakan transfer delta. Membaca setengah dari file yang ditransfer sebagian seringkali jauh lebih cepat daripada menulisnya lagi.--inplace
untuk menghindari penyalinan file (tetapi hanya jika tidak ada yang membaca tujuan sampai seluruh transfer selesai)sumber