原文 https://blog.csdn.net/Wang20122013/article/details/123008277
相关 https://bittherapy.net/post/drive-backup-over-ssh-with-gzip-compression/
https://linuxtoy.org/archives/make_disk_image.html
1.使用 dd 和 gzip 命令来代替 Ghost 做磁盘镜像
在 Linux 下,其实可以使用 dd 和 gzip 命令来代替 Ghost 做磁盘镜像。
要使用 dd 和 gzip 备份,可以执行命令:
1 | dd if=/dev/sda status=progress| gzip -c > sda.dd.gz |
在还原时,可以执行下列命令:
1 | gzip -dc sda.dd.gz | dd status=progress of=/dev/sda bs=1M |
值得注意的是,还原时需要使用如 Live CD 之类的 Linux 引导系统。
生成gzip文件可以节省空间和时间,需要可以给gzip 加-9参数。使用bs=1M参数是否会影响数据,这个有待评估。
先将第二块硬盘挂载,然后cd 到其挂载点的备份目录,开始备份硬盘到某个文件。
2. linux/unix dd命令是一个非常好的管理磁盘命令
dd命令作用:指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换,起到一个初始化磁盘的作用
备份:
[root@server ~]# dd if=/dev/sda of=/dev/sdb => 备份整个磁盘到另外一个磁盘
[root@server ~]# dd if=/dev/sdb of=sda.bak =>备份整个磁盘为某个文件
[root@server ~]# dd if=/dev/sda | gzip > sda.bak.gz => 备份并且压缩
[root@server ~]#dd if=/dev/sda1 bs=1M | gzip > sda1.dd.gz
[root@server ~]# dd if=/dev/sdaof=dbt.bak count=1 bs=512 skip=446
=>跳过前446字节备份磁盘第一扇区的后66字节DPT信息到指定文件
重要参数:
- bs=32M
- status=progress
3.Linux中的虚拟设备/dev/null、/dev/zero、/dev/random和/dev/urandom
Unix/Linux将每一个设备都当成一个文件,放在/dev目录下。这些文件有的对应着一个真实存在的物理设备;有的则代表一个虚拟设备,提供一些特定的功能。
下面介绍三个常用的虚拟设备:
/dev/null
“空”设备,也有人称它为黑洞。任何输入到这个“设备”的数据都将被直接丢弃。最常用的用法是把不需要的输出重定向到这个文件。例如:
1 | $ run.sh 1>/dev/null 2>&1 #将标准输出和错误输出重定向到/dev/null,运行这个脚本不会输出任何信息到终端 |
/dev/zero
“零”设备,可以无限的提供空字符(0x00,ASCII代码NUL)。常用来生成一个特定大小的文件。例如:
1 | $ dd if=/dev/zero of=./output.txt bs=1024 count=1 #产生一个1k大小的文件output.txt |
/dev/random和/dev/urandom
随机数设备,提供不间断的随机字节流。二者的区别是/dev/random产生随机数据依赖系统中断,当系统中断不足时,/dev/random设备会“挂起”,因而产生数据速度较慢,但随机性好;/dev/urandom不依赖系统中断,数据产生速度快,但随机性较低。
读取这两个文件的输出如下:
1 | $ cat /dev/random | od -x |
在上面的例子中,读取/dev/random文件在输出了两行之后就停住了(系统中断不足),而/dev/urandom产生数据速度很快,没有任何停顿。
下面这个例子,利用/dev/urandom设备产生一个128位的随机字符串:
1 | $ str=$(cat /dev/urandom | od -x | tr -d ' ' | head -n 1) |