Làm thế nào bạn có theo dõi sự tiến bộ của dd?

dd là một ngạc nhiên. Nó cho phép bạn lặp lại một ổ cứng khác, hoàn toàn không một ổ đĩa cứng etc. Nhưng một khi bạn chạy một dd command, không có gì để nói với bạn của tiến trình của nó. Nó chỉ ngồi đó ở trỏ cho đến khi lệnh cuối cùng cũng kết thúc. Vậy làm thế nào một giám sát dd tiến bộ của?

Cập nhật 2016> Nếu bạn sử dụng GNU coreutils = 8.24 (định trong windows Xenial 16.04 lên), xem phương pháp 2 bên dưới cho một cách khác để bày sự tiến bộ.


Phương pháp 1: Bằng cách sử dụng pv

Cài đặt pv và đưa nó vào / ra chỉ dd lệnh.

Chú ý bạn không thể sử dụng nó khi bạn đã bắt đầu dd.

Từ các gói mô tả:

pv - Ống Xem - là một thiết bị đầu cuối dựa trên công cụ để giám sát các sự tiến bộ của dữ liệu qua một đường ống. Nó có thể được đưa vào bất kỳ bình thường đường ống giữa hai quá trình để cung cấp một chỉ thị giác như thế nào một cách nhanh chóng dữ liệu được đi qua bao lâu nó đã được thực hiện, làm thế nào gần để hoàn thành nó, và một ước tính trong bao lâu nó sẽ được cho đến khi hoàn thành.

Cài đặt

sudo apt-get install pv

Ví dụ

dd if=/dev/urandom | pv | dd of=/dev/null

Ra

1,74MB 0:00:09 [ 198kB/s] [      <=>                               ]

Anh có thể xác định kích thước gần đúng với những --size nếu bạn muốn một thời gian ước tính.


Ví dụ, Giả sử một 2 GB đĩa được sao chép từ /dev/đình

Lệnh mà pv sẽ là:

sudo dd if=/dev/sdb of=DriveCopy1.dd bs=4096

Với lệnh pv:

sudo dd if=/dev/sdb | pv -s 2G | dd of=DriveCopy1.dd bs=4096

Ra:

440MB 0:00:38 [11.6MB/s] [======>                             ] 21% ETA 0:02:19

Sử dụng khác

Bạn có thể sử dụng tất nhiên pv trực tiếp vào đường ống ra để thiết bị xuất chuẩn:

pv /home/user/bigfile.iso | md5sum

Ra

50,2MB 0:00:06 [8,66MB/s] [=======>         ] 49% ETA 0:00:06

Lưu ý rằng trong trường hợp này, pv nhận ra những thước tự động.


Phương Pháp 2: Mới status thêm lựa chọn dd (GNU Coreutils 8.24+)

dd trong GNU Coreutils 8.24+ (Ubuntu 16.04 và mới) có một người mới status lựa chọn hiển thị các tiến bộ:

Ví dụ

dd if=/dev/urandom of=/dev/null status=progress

Ra

462858752 bytes (463 MB, 441 MiB) copied, 38 s, 12,2 MB/s

Từ Thế nào: theo Dõi sự tiến bộ của dd

Bạn có thể giám sát sự tiến bộ của dd một khi nó chạy mà không ngăn chặn nó bằng cách sử dụng những kill lệnh để gửi một tín hiệu quá trình.

Sau khi bạn bắt đầu dd mở một thiết bị đầu cuối và nhập hoặc là:

sudo kill -USR1 $(pgrep ^dd$)

Hay nếu bạn đang ở trên DOC hoặc HỆ điều hành X:

sudo kill -INFO $(pgrep ^dd$)

Điều này sẽ hiển thị các tiến bộ trong những dd thiết bị đầu cuối cửa sổ mà không ngăn chặn quá trình (in để nó thiết bị lỗi chuẩn dòng). Ví dụ::

# dd if=/dev/urandom of=rando bs=1024 count=1048576335822+0 records in335821+0 records out343880704 bytes (344 MB, 328 MiB) copied, 6.85661 s, 50.2 MB/s

Nếu bạn muốn nhận được cập nhật thường xuyên của những dd tiến bộ, sau đó enter:

watch -n5 'sudo kill -USR1 $(pgrep ^dd$)'

watch sẽ thăm dò dd quá trình mỗi -n giây (-n5 = 5 giây) và báo cáo mà không ngăn chặn nó.

Chú ý thích hợp duy nhất trích dẫn trong những lệnh ở trên.

Một vài tiện mẫu với tập quán pv và ít gõ hoặc tiến bộ hơn sau đó câu trả lời khác:

Đầu tiên, bạn sẽ cần đến cài đặt pv với lệnh:

sudo apt-get install pv

Sau đó, một số ví dụ được:

pv -n /dev/urandom | dd of=/dev/nullpv -tpreb source.iso | dd of=/dev/BLABLA bs=4096 conv=notrunc,noerror

Chú ý: mẫu đầu tiên là 5 nhân vật ít đánh máy rồi dd if=/dev/urandom | pv | dd of=/dev/null.

Và yêu thích của tôi cho nhân bản một ổ đĩa (thay thế X với ổ đĩa chữ):

(pv -n /dev/sdX | dd of=/dev/sdX bs=128M conv=notrunc,noerror) 2>&1 | dialog --gauge "Running dd command (cloning), please wait..." 10 70 0

screenshot

nguồn: http://www.cyberciti.biz/faq/linux-unix-dd-command-show-progress-while-coping/

Cũng để lưu trữ bản thân mình.

Vì lợi ích của sự hoàn chỉnh:

Phiên bản 8.24 của những GNU coreutils bao gồm một miếng vá cho dd giới thiệu một số để in sự tiến bộ.

Cam kết giới thiệu sự thay đổi này có bình luận:

dd: mới tình trạng=tiến bộ mức độ để in số liệu thống kê định kỳ,

Rất tiếc, bao gồm Ubuntu 16.04.2 Ứ sử dụng phiên bản này.

Sử dụng Ctrl+Shift+T trong khi dd đang chạy, và nó sẽ ra sự tiến bộ (trong nội):

load: 1.51  cmd: dd 31215 uninterruptible 0.28u 3.67s321121+0 records in321120+0 records out164413440 bytes transferred in 112.708791 secs (1458745 bytes/sec)

Tốt nhất là sử dụng http://dcfldd.sourceforge.net/ nó rất dễ dàng để cài đặt qua yum

Bản địa tiến bộ tình trạng đã được thêm vào dd!!!

Phiên bản mới của Coreutils (8.24) thêm một tiến bộ tình trạng dd công cụ:

Sử dụng trên Xubuntu 15.10:

Mở một loại thiết bị đầu cuối và những lệnh:

wget ftp://ftp.gnu.org/pub/gnu/coreutils/coreutils-8.24.tar.xztar -xf coreutils-8.24.tar.xzcd coreutils-8.24./configure && make -j $(nproc)

Chạy dd như là gốc:

sudo sucd src./dd if=/dev/sdc of=/dev/sda conv=noerror status=progress

Bạn sẽ thấy: Titan giây và tốc độ (Nội/giây).

Để kiểm tra một phiên bản của dd:

Bản xứ:

dd --version

Mới:

cd coreutils-8.24/src./dd --version

Nếu bạn đã bắt đầu dd, và nếu bạn đang viết một tập tin như khi tạo ra một bản sao của một ổ đĩa, bạn có thể sử dụng đồng hồ lệnh để liên tục quan sát các kích thước của các tập tin kết quả cho thấy các thay đổi và ước tính hoàn thành.

watch ls -l /pathtofile/filename

Để xem, chỉ có kích thước (h-con người, xem):

watch ls -sh /pathtofile/filename

Những dd | pv | dd triad tôi 50 GB ảo sao chép mất 800 giây, như trái ngược với 260 giây chỉ sử dụng dd. Với đường ống này, ít nhất, pv không có ý tưởng nào các đầu vào tập tin là như vậy, nó sẽ không thể để cho bạn biết cách xa cùng, bạn là như vậy không có bất lợi cho nó làm như sau, và anh có một lợi thế tốc độ:

Tôi sẽ tránh pv trên bất cứ điều gì lớn, và (nếu sử dụng Bash):

Kiểm soát-Z dd quá trình

bg để đặt nó trong nền. Quan sát đó bg sẽ cung cấp cho bạn ra như thế [1] 6011 nơi mà sau này số là một quá trình thẻ id. Vì vậy, làm:

while true; do kill -USR1 process_id ; sleep 5; done

nơi process_id là quá trình id bạn quan sát. Nhấn kiểm Soát-C khi bạn nhìn thấy một cái gì đó như thế:

[1]+  Done dd if=/path/file.qcow2 of=/dev/kvm/pxetest bs=4194304 conv=sparse-bash: kill: (60111) - No such process

Bạn đã làm xong.

Edit: Ngớ Ngẩn Hệ Thống Trị! Tự động hoá cuộc sống của bạn, đừng làm việc! Nếu tôi có một lâu dd quá trình mà tôi muốn giám sát, đây là một lót rằng sẽ chăm sóc cả brownie cho các bạn, đưa tất cả vào một dòng:

 dd if=/path/to/bigimage of=/path/to/newimage conv=sparse bs=262144 & bgid=$!; while true; do sleep 1; kill -USR1 $bgid || break; sleep 4; done

Bạn có thể, tất nhiên, lệnh đó, có lẽ làm cho $1 đầu vào của bạn tập tin và $2 đầu ra của bạn tập tin. Điều này là trái như một bài tập cho các bạn đọc. Lưu ý rằng bạn cần có ít ngủ trước khi giết hoặc có thể giết chết cố gắng để gửi một tín hiệu đến dd khi nó chưa sẵn sàng. Điều chỉnh hình như mong muốn (thậm chí có thể loại bỏ những thứ hai ngủ hoàn toàn).

Bash - được dịch từ tiếng indonesia! :-)

http://linuxcommando.blogspot.com/2008/06/show-progress-during-dd-copy.html

Về cơ bản,:

kill -USR1 < dd pid >