我正在考虑如何安全地备份我的笔记本电脑硬盘,并且如果需要,仍然可以快速备份。 我的方法如下:我会买一个相同大小的2.5英寸硬盘,用USB到SATA线缆并克隆内部,当灾难发生时,我只需将笔记本电脑中的硬盘换成另一台硬盘。我很高兴再去一次。 但是,我想避免每次想要备份我的硬盘时写入500GB,特别是当我知道它的相当一部分(+/- 80GB)很少被写入时,这就是下面的md5sum / dd脚本来到救援,我希望:
#!/bin/bash
block="1M"
end=50000
count=10
input="/dev/sda"
output="/dev/sdb"
output="/path/to/imagefile"
function md5compute()
{
dd if=$1 skip=$2 bs=$block count=$count | md5sum - | awk '{ print $1 }'
}
for i in {0..$end}
do
start=$(($i*$count))
md5source=$(md5compute $input $start)
md5destination=$(md5compute $output $start)
if [ "$md5source" != "$md5destination" ]
then
dd if=$input of=$output skip=$start seek=$start count=$count conv=sync,noerror,notrunc
fi
done
现在,问题部分:
A)运行这个,我会错过磁盘的某些部分吗?你看到一些缺陷吗?
B)与500GB读/写相比,我能赢得一些时间吗?
C)显然我可能会少写一些目标磁盘。我会改善该磁盘的使用寿命吗?
D)我在考虑将计数保留为1,并增加块大小。这是个好主意/坏主意吗?
E)这个相同的脚本是否可以作为输出使用图像文件?
编程不是很流畅,应该有足够的改进空间,任何提示?
谢谢大家...
答案 0 :(得分:0)
运行此功能后,我会错过磁盘的某些部分吗?
你看到一些瑕疵吗?
与500GB读/写相比,我能赢得一些时间吗?
显然我可能会少写一些目标磁盘。我会改善该磁盘的使用寿命吗?
我在考虑将计数保留为1,并增加块大小。这是个好主意/坏主意吗?
这个相同的脚本是否可以作为输出使用图像文件?
对于此类工作,您可以使用rsync
!使用此工具,您可以
dd
和md5sum
我有时会运行一种命令:
ssh $USER@$SOURCE "dd if=$PATH/$SRCDEV |tee >(sha1sum >/dev/stderr);sleep 1" |
tee >(sha1sum >/dev/tty) | dd of=$LOCALPATH/$LOCALDEV
这将在源主机上执行完整读取,而不是 sha1sum 发送到localhost(目标)之前,而不是sha1sum以确保在写入本地设备之前转移。
这可能会产生类似:
2998920+0 records in
2998920+0 records out
1535447040 bytes (1.4gB) copied, 81.42039 s, 18.3 MB/s
d61c645ab2c561eb10eb31f12fbd6a7e6f42bf11 -
d61c645ab2c561eb10eb31f12fbd6a7e6f42bf11 -
2998920+0 records in
2998920+0 records out
1535447040 bytes (1.4gB) copied, 81.42039 s, 18.3 MB/s