蓝易云

Linux 使用 dd 命令备份和还原

870次阅读
没有评论

共计 1858 个字符,预计需要花费 5 分钟才能阅读完成。

linux 系统环境很容易搞乱,由于不想每次手动重装系统,并且重写设置很多东西,所以之前一直想物理机 dd 系统来着。但是尝试了几次,不清楚是机器原因还是其他原因没有 dd 成功。

然后想着能不能用 dd 命令将当前系统备份,等需要的时候再恢复。经过多次请教大佬,发现目前这套方案是可行的,就是花费的时间比较久,内容越多和硬盘越大都会让备份和恢复的时间增加。

dd 命令可以通过 bs 参数设置缓存大小,可以一定程度上提高效率,测试命令如下:

dd if=/dev/zero bs=512 count=2000000 of=1Gb.file status=progress
dd if=/dev/zero bs=1K count=1000000 of=1Gb.file status=progress
dd if=/dev/zero bs=2K count=500000 of=1Gb.file status=progress
dd if=/dev/zero bs=4K count=250000 of=1Gb.file status=progress
dd if=/dev/zero bs=8K count=125000 of=1Gb.file status=progress
dd if=/dev/zero bs=16K count=62500 of=1Gb.file status=progress
dd if=/dev/zero bs=32K count=31250 of=1Gb.file status=progress

1. 备份

重新挂载所有文件系统为只读,目的是防止备份的时候还有东西继续写入。

echo u >/proc/sysrq-trigger 

挂载另一个硬盘,这里根据自己实际情况进行挂载。(如果使用 ssh 拷贝到其他机器无需进行此操作)

mount /dev/sdb1 /mnt

备份系统盘,设备一般为 /dev/sda,当然这个也是看自己的实际情况。

# 1. 备份到硬盘
dd if=/dev/sda bs=4K status=progress | gzip > /mnt/os-backup.gz

# 2. 备份到其他机器
# 备份并压缩,并且备份到其他机器上
# dd if=/dev/sda bs=4K status=progress | gzip -c | ssh root@172.20.3.3 'dd of=/home/docker/nginx/html/file/os-backup.gz'

然后只需要静静地等待备份完即可。

Linux 使用 dd 命令备份和还原

这里备份的大小,取决于当前系统里面的东西有多少。当然,经过压缩也会小很多。

为什么要进行压缩,因为 dd 命令默认就是全部拷贝,如果不使用压缩,那么必须准备一块比当前系统盘容量还要大的硬盘。

重启系统,因为文件系统都变为了只读,所以需要重启下。

echo b >/proc/sysrq-trigger

2. 还原

重新挂载所有文件系统为只读。

echo u >/proc/sysrq-trigger 

挂载带有备份的硬盘。

mount /dev/sdb1 /mnt

使用 dd 命令还原,推荐安装 tmux 后运行,否则 ssh 窗口异常关闭可能导致系统出现问题。

# 安装
sudo apt update && sudo apt install -y tmux
# 创建一个新的会话
tmux
# 1. 从本地硬盘还原
gzip -dc /mnt/os-backup.gz | dd of=/dev/sda bs=4K status=progress

# 2. 网络还原
# 对应上面的备份命令,请确保该文件能够网络访问到。如果运行出现 gzip: stdin: unexpected end of file,可以试试挂载一块硬盘并在其目录下执行该命令
# curl https://172.20.3.3/file/os-backup.gz | gzip -dc | dd of=/dev/sda bs=4K status=progress

最好不要退出,否则执行 tmux a 会提示 Segmentation fault 错误,这样就不能看见什么时候结束。虽然如此,等待上面的命令执行完毕,还是能够还原成功的,只不过要等一个足够久的时间再重启就是了,否则命令还在执行系统就会崩掉。

这里是将之前的 dd 拷贝的内容还原到系统盘 /dev/sda,所以系统就相当于是复原了。还原真的很慢,如果可以的话,还是选择半夜还原好了。

Linux 使用 dd 命令备份和还原

请确定还原时一定挂载所有文件为只读,否则可能导致还原失败!!!

执行重启操作,重启后才能看见还原后的文件。

echo b >/proc/sysrq-trigger

目前这套方案最大的问题就是还原慢,但是睡觉之前执行一下,好像也不影响。主要是不需要像手动安装系统,需要显示器还有 U 盘才能进行。

提醒:本文发布于126天前,文中所关联的信息可能已发生改变,请知悉!

AD:【腾讯云服务器大降价】2核4G 222元/3年 1核2G 38元/年
正文完
 0
阿蛮君
版权声明:本站原创文章,由 阿蛮君 于2024-07-18发表,共计1858字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
Copyright © 2022-2024 阿蛮君博客 湘ICP备2023001393号
本网站由 亿信互联 提供云计算服务 | 蓝易云CDN 提供安全防护和加速服务
Powered by Wordpress  Theme by Puock