Saya mencoba menyalin isi dari thumb drive USB yang gagal. Jika saya membaca data terlalu cepat, chip pengontrol drive terlalu panas dan drive hilang dari sistem. Ketika itu terjadi, saya perlu mencabut drive, tunggu sebentar atau lebih agar drive menjadi dingin, pasang kembali, dan mulai lagi menyalin.
Saya sudah punya cadangan lama dari isi drive, jadi cara yang jelas untuk mendapatkan sisa data adalah dengan menggunakan rsync
untuk membuat cadangan up to date, tetapi ini berjalan ke keseluruhan "baca terlalu cepat, drive hilang" , dan saya harus memulai dari awal "masalah. Apakah ada cara untuk mengatakan rsync
hanya membaca X megabita data per menit? Atau, apakah mungkin untuk mengatakannya untuk menunda pengoperasian ketika drive hilang, dan melanjutkan ketika dicolokkan kembali?
Jawaban:
Tidak seperti pengalaman DopeGhoti,
--bwlimit
flag tidak membatasi transfer data, dengan rsync saya (v3.1.2).uji:
(catatan:
time
output saya terlihat berbeda dengan sebagian besartime
permintaan (zsh
fitur), waktu itu tidak diedit oleh saya)Lain, mungkin sesuatu di sepanjang baris dari ganda
-exec
difind
. Saya percaya itursync -R
harus membuat & menyalin folder induk, tetapi jika tidak, makacp --parents
seharusnya.Catatan : lihat juga ddrescue , mungkin benar apa yang Anda cari :)
sumber
--bwlimit=KBPS limit I/O bandwidth; KBytes per second
:, tidak menyebutkan jaringan. Dengan santai menelusuri kode, ini membatasi kecepatan baca , terlepas dari tujuan. Plus, anekdot: Saya telah menggunakan opsi ini selama bertahun - tahun sekarang untuk membatasi kecepatan tulis lokal-ke-lokal. linux.die.net/man/1/rsyncio.c
, baris 832-3:if (bwlimit_writemax) sleep_for_bwlimit(n);
Bagaimanapun, ini mungkin akan berfungsi seperti yang dimaksudkan, membaca dalam ledakan singkat dan tidur di antara keduanya. Saya akan merekomendasikan memulai dengan nilai rendah dan hati-hati meningkat, atau biarkan transfer lambat berjalan semalam.Sedikit solusi MacGyver di masa lalu tapi saya telah sukses dengan itu:
Pasang hub USB 1 lama antara stik dan komputer. Tidak mungkin sih itu akan menyalin cepat seperti itu :-)
Kemungkinan lain: Jika Anda memiliki stick lain yang tersedia, letakkan di port USB lain yang terhubung ke root-hub yang sama (sehingga berbagi bandwidth dengan stick masalah Anda).
Sekarang mulailah operasi tulis besar ke stick tambahan sehingga kedua stick bersaing untuk bandwidth. Untuk kontrol lebih lanjut, Anda dapat menggunakan ionice untuk menurunkan prioritas pada tongkat masalah lebih jauh.
sumber
Anda dapat menggunakan
rsync --bwlimit=RATE
untuk membatasi kecepatan transfer file yang, berdasarkan komentar di bawah ini, sebenarnya secara khusus tampaknya berfungsi dengan membatasi kecepatan baca data, yang persis seperti yang Anda cari.sumber
ionice
? linux.die.net/man/1/ionice--bwlimit
menetapkan batas I / O, belum tentu batas jaringan . Diuji berkali-kali dalam berbagai skenario: opsi ini membuat rsync membatasi sendiri saat dibaca , terlepas dari tujuannya. (Menemukan ini dalam skenario yang sama, di mana cepat menulis ke perangkat lokal yang lambat membuat mereka gagal)Lebih banyak solusi, selain untuk
rsync --bwlimit=100
, untuk 100KiB / s.Gunakan
ddrescue
dengan--max-read-rate
opsi untuk salinan disk lengkap. Ini juga akan memungkinkan Anda untuk memulai kembali salinan disk lengkap yang tersisa setelah kesalahan.ddrescue
juga memiliki banyak opsi lain yang relevan dengan pemulihan data, lihat manual di sini .Gunakan
pv
("penampil pipa") dengan--rate-limit
opsi, atauthrottle
alat untuk menilai pipa batas.pv
juga bisa menunjukkan kemajuan. Anda dapat membuat ini berfungsi untuk alat apa pun yang menggunakan pipa atau dapat menggunakan pipa:atau
Lihatlah halaman manual untuk lebih banyak pengaturan dan contoh. Untuk
throttle
, Anda mungkin ingin juga mencoba-w
opsi, yang menentukan bagaimana kecepatan dihitung, lihat halaman throttle .sumber
pv
halaman manual bahkan memiliki lebih banyak contoh dari berbagai penggunaan.pv
berkali-kali sejak menemukan kembali di hari-hari saya yang bercanda. Kembali ketika tar menulis ke drive tape. :)