你可以使用一個循環使用dd
#gen a test file
dd if=/dev/urandom bs=1K count=1024 of=test.bin
sourcefile="test.bin"
這應該很容易scriptified(bash的假設):
bsize=$((128*1024))
flength=$(stat --printf=%s "$sourcefile")
for i in $(seq 0 $((($flength-1)/$bsize))); do dd if="$sourcefile" bs=$bsize skip=$i count=1 2>/dev/null; done | md5sum
# verify
md5sum "$sourcefile"
for i in $(seq $RANDOM); do echo hello >> "$sourcefile"; done
flength=$(stat --printf=%s "$sourcefile")
for i in $(seq 0 $((($flength-1)/$bsize))); do dd if="$sourcefile" bs=$bsize skip=$i count=1 2>/dev/null; done | md5sum
# verify
md5sum "$sourcefile"
在我的系統中,這工作就像一個魅力,產生以下輸出
1024+0 records in
1024+0 records out
1048576 bytes (1.0 MB) copied, 0.27551 s, 3.8 MB/s
d73c5a920dae16861983c95d8fb1e94b -
d73c5a920dae16861983c95d8fb1e94b test.bin
d14ae9ae62652bc7768b076226a6320a -
d14ae9ae62652bc7768b076226a6320a test.bin
我現在將留給您將信息傳遞給您的網絡工作的挑戰。 查看mkfifo,將每個子作業重定向到一個單獨的fifo,並且如果該作業具有任何值(通常bandwith是限制因素),那麼可以使用xargs -PN拆分並行作業。
屬於http://unix.stackexchange.com – 2011-03-28 21:12:53