我在服务器A(源)上运行:
dd bs=16M if=/dev/sda|bzip2 -c|nc serverB.example.net 19000
在服务器B(目标)上:
nc -l -p 19000|bzip2 -d|dd bs=16M of=/dev/sdb
我需要在某个地方看到进展吗? (服务器的A / dev / sda是50GB)
我已经等了20分钟,还在运行,我怎么知道它真正的传输数据/等?
向dd进程发送一个USR1信号:
$ dd if=/dev/urandom of=/dev/null & [1] 977 $ $ kill -USR1 977 274647+0 records in 274646+0 records out 140618752 bytes (141 MB) copied, 17.3286 s, 8.1 MB/s $
你试过电视吗? http://www.ivarch.com/programs/pv.shtml
dd bs=16M if=/dev/sda|bzip2 -c| pv | nc serverB.example.net 19000 nc -l -p 19000| pv | bzip2 -d| dd bs=16M of=/dev/sdb
祝你好运!
在你的操作系统上检查dd的手册页,但应该支持一个USR1信号,它会给你一个进度检查。 如果你知道你的进程的PID,只要发送一个“kill -USR1 $ pid”,它会告诉你它有多远。
find你想要检查I / O的进程的PID在你的情况下,服务器B上的dd将是一个好地方,然后看看
cat /proc/<PID>/io
看看应该是字节写入值的wchar值。
为了将来的参考,你可以插入一个(或两个)的pipe道,它会告诉你有多less数据已经通过它。
dd bs=16M if=/dev/sda|bzip2 -c|pv|nc serverB.example.net 19000 225MB 0:04:48 [ 799kB/s] [ <=> ]
您可以使用iftop查看networkingstream量或iotop查看IO使用情况。
在服务器B上watch -d -n 1 ifconfig 。它将突出显示所有收到的stream量(RX包/字节)。 如果您使用的是32位版本,请不要指望这些值的准确性(您仍然可以看到它是否仍在运行)。