Lihat jawaban dari pertanyaan ini [ 1 ]
pv
Misalnya Anda dapat menggunakan pv
sebelum memulai
sudo apt-get install pv # if you do not have it
pv < /dev/sda > /dev/sc3 # it is reported to be faster
pv /dev/sda > /dev/sc3 # it seems to have the same speed of the previous one
#or
sudo dd if=/dev/sda | pv -s 1844G | dd of=/dev/sdc3 # Maybe slower
Output [ 2 ] :
440MB 0:00:38 [11.6MB/s] [======> ] 21% ETA 0:02:19
Catatan:
Khusus untuk file besar Anda mungkin ingin melihat man dd
dan mengatur opsi yang diperlukan untuk mempercepat semua pada perangkat keras Anda, misalnya bs=100M
untuk mengatur buffer, oflag=sync
untuk menghitung byte efektif yang ditulis, mungkin direct
...
Pilihannya -s
hanya memerlukan parameter integer jadi 1.8T-->1844G
.
Seperti yang Anda bisa perhatikan dari baris pertama Anda tidak perlu dd
sama sekali.
kill -USR1 pid
Jika Anda sudah diluncurkan pada dd
perintah, setelah Anda telah diindividuasikan nya PID ( Ctrl- Z+ bg
dan Anda membacanya, atau pgrep ^dd
...) Anda dapat mengirimkan sinyal USR1
(atau SIGUSR1
, atau SIGINFO
lihat di bawah) dan membaca output.
Jika PID dari program ini adalah 1234 dengan
kill -USR1 1234
dd
akan menjawab pada terminal STDERR dengan sesuatu yang mirip
4+1 records in
4+0 records out
41943040 bytes (42 MB) copied, 2.90588 s, 14.4 MB/s
Peringatan: Di bawah OpenBSD Anda mungkin harus memeriksa terlebih dahulu perilaku kill
[ 3 ] : gunakan saja
kill -SIGINFO 1234
.
Itu ada sigaction bernama SIGINFO
. Yang SIGUSR1
satu, dalam hal ini, harus menghentikan program ( dd
) ...
Di bawah penggunaan Ubuntu -SIGUSR1
( 10
).
dd
sudah menyelesaikan semuawrite()
panggilan sistem, danfsync
atauclose
diblokir menunggu tulisan mencapai disk. Dengan USB stick yang lambat, ambang batas buffer I / O Linux standar untuk seberapa besar buffer tulis yang kotor dapat mengarah pada perilaku yang berbeda secara kualitatif dibandingkan dengan file besar pada disk cepat, karena buffer sama besar dengan apa yang Anda salin dan masih membutuhkan waktu nyata.dd
info yang sangat bagus, terutama untuk server di mana Anda tidak dapat / tidak ingin menginstalpv
Alat bantu saya untuk hal semacam ini adalah
progress
:Saya merasa ini sangat berguna karena:
pv
di pipa ataudcfldd
, saya tidak harus ingat untuk menjalankan perintah yang berbeda ketika saya memulai operasi, saya dapat memonitor barang setelah fakta;kill -USR1
, ini bekerja pada hampir semua perintah, saya tidak harus selalu memeriksa halaman manual untuk memastikan saya tidak secara tidak sengaja membunuh salinan; juga, itu bagus bahwa, ketika dipanggil tanpa parameter, itu menunjukkan kemajuan untuk perintah "transfer data" yang umum sedang berjalan, jadi saya bahkan tidak perlu mencari PID;pv -d
, sekali lagi saya tidak perlu mencari PID.sumber
--command <command-name>
.Jalankan
dd
, kemudian, dalam shell yang terpisah, aktifkan perintah berikut:Ini akan membuat pv mendapatkan statistik pada semua deskriptor file yang dibuka dari
dd
proses. Ini akan menunjukkan Anda berdua di mana buffer membaca dan menulis duduk.sumber
/proc/$PID/fdinfo
posisi file, dan/proc/$PID/fd
untuk melihat file mana (dan dengan demikian ukurannya). Jadi ya, sangat keren, dan ide yang bagus untuk fitur, tetapi saya tidak akan menyebutnya "luar biasa" karena ada API Linux yang membiarkannya memilih posisi file dari proses lain.pv
pipa sebelumnya.) Tentu saja, saya berasumsi sebanyak saya melihat bahwa ini bekerja.Ada alternatif untuk
dd
:dcfldd
.http://dcfldd.sourceforge.net/
https://linux.die.net/man/1/dcfldd
sumber
Sebagai persentase Anda harus melakukan beberapa matematika, tetapi Anda bisa mendapatkan kemajuan dari sebuah dd dalam bentuk yang dapat dibaca manusia, bahkan setelah sudah mulai, dengan melakukan
kill -USR1 $(pidof dd)
Proses dd saat ini akan menampilkan mirip dengan:
11117279 byte (11 MB, 11 MiB) disalin, 13,715 s, 811 kB / s
sumber
status=progress
memberi