[Linux]Linux关于磁盘备份dd命令以及fstab文件简介

原文约3100字,阅读约需8分钟。发表于:

1. dd命令的使用 工作中遇到的需求就是将一台已经配置好了的环境的服务器备份系统到新的磁盘,然后将新的磁盘安装在新的服务器上可以直接启动系统,同时不需要重新配置新的运行环境了。领导说要我直接使用dd命令去做,因为之前没有用过dd命令,这里记录一下。(ps:后来也是通过dd命令完成了这项任务) Linux dd 命令用于读取、转换并输出数据,dd 可从标准输入或文件中读取数据,根据指定的格式来转换数据,再输出到文件、设备或标准输出,其可以携带的参数(只说明一些常用参数,详细参数可参考dd命令参数)如下所示 if 输入设备,输入文件名,默认为标准输入。即指定源文件 of 输出设备,输出文件名,默认为标准输出。即指定目的文件 bs 输入、输出块的大小 备份一个磁盘分区到U盘 sudo dd if=/dev/sda5 of=/dev/sdc 默认情况下,bs的大小为512,可以通过bs参数指定其大小,指定bs大小为5M sudo dd if=/dev/sda5 of=/dev/sdc bs=5M 可以到拷贝的速度要比默认bs大小要快,至于bs的大小多少合理,应该要看磁盘的IO速度。 如果说备份的内容比较大,我们要等待很久,这时我们可以打开一个新的终端,然后通过watch命令去查看dd命令的执行速度,执行完下面的命令后,回到dd命令执行的终端就可以看到执行进度了,如下图,如果不想查看,在执行watch命令的终端按Ctrl+c即可关闭。 sudo watch -n 5 pkill -USR1 -x dd dd与cp的区别 dd命令是通过数据流进行复制的,而cp命令是通过文件为单位进行拷贝的; dd命令的of输出的大小必须大于或者等于if输入磁盘的总大小(不是使用大小),而cp命令只需要目标盘空间大于输入盘已使用空间大小即可; dd命令执行完毕后of目标盘的分区、每个扇区的数据都与if盘一样,而cp命令只是将数据拷贝到目标盘空闲空间,扇区数据不一定与输入盘一致; 如果我们需要备份系统,通过dd命令备份后,of输出盘可以直接插在其他机器上使用并顺利启动系统。 使用dd命令时会清空目标盘的所有数据,请确保使用前已经备份目标盘的所有数据!!! 2. fstab文件 很多服务器都是一个系统盘,然后若干个数据盘,我们通过dd命令备份系统盘之后,放在其他机器上启动时,有时候会发现进入rescue mode,查看启动信息如果发现是Timed out waiting for device xxxx这种错误的话一般是找不到fstab中指定的设备所导致的,接下来就说道说道fstab这个文件的作用。 fstab文件存在在/etc目录下,默认内容如下所示。 # /etc/fstab: static file system information. # # Use 'blkid' to print the universally unique identifier for a # device; this may be used with UUID= as a more robust way to name devices # that works even if disks are added and removed. See fstab(5). # # <file system> <mount point> <type> <options> <dump> <pass> # /dev/sdb3 LABEL=SYSROOT UUID=ab6a416a-8664-4704-b86d-7260625f68c9 / ext4 rw,relatime 0 1 # /dev/sdb2 LABEL=SYSBOOT UUID=446bc5e4-8100-4c9a-9dbf-1a8aeb5e94fc /boot ext4 rw,relatime 0 0 # /dev/sdb1 LABEL=ESP UUID=DE13-1B25 /boot/efi vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro 0 0 可以看到第一行 /etc/fstab: static file system information. 意思就是静态文件系统信息。接下来可以看到提示信息通过blkid来获取设备的通用唯一标识符UUID,fstab配置文件所提供的参数有6种,如下所示 file system: 文件系统,可以通过/dev/xxx来表示或者通过UUID=xxx或者label来表示,这里推荐使用UUID的表示来配置,因为设备ID是唯一的,即使你重新插拔磁盘,其UUID是不会改变的,但是重新插拔后其/dev/xxx可能会改变,比如一开始设备编号是/dev/sdc,你插拔之后变为了/dev/sdd了,这时候如果你没改变fstab里面的内容,开机就会进入rescue mode; mount point: 挂载点,就是设备挂载在哪个路径下,跟我们执行mount命令时一样,这个目录必须是存在的; type: 文件系统类型,指定挂载设备的文件系统类型,可以通过blkid查看到设备对应的文件系统类型,如下图,常见的有ext4等 option: 可以选参数,一般就是mount命令可以跟的参数,但是要注意有些参数只对应特定的文件系统才有效,一般填写defaults就可以了,既通过读写模式挂载,其他参数可以网上冲浪搜索; dump: 是否使用dump工具进行备份,0表示忽略,1表示备份,填写1时你必须确保已经安装了dump工具; pass: 是否使用fsck命令检查,可以设置为0, 1, 2,根文件系统必须设置为1,以保证其最高优先级,2则表示检查文件系统,0表示不检查文件系统; # /dev/sda8 LABEL=WORK-DATA UUID=39fd4aa5-e4ba-4618-8ce2-4ebe9e0325d5 /home/ubuntu/data ext4 defaults 0 0 添加上面的配置信息,开机就会自动将/dev/sda8自动挂载到/home/ubuntu/data目录下;

本文介绍了使用dd命令备份系统和fstab文件的作用,dd命令通过数据流复制,而cp命令通过文件拷贝。备份系统后,可直接插入其他机器并启动系统。fstab文件是静态文件系统信息,用于指定设备的挂载点、文件系统类型和参数等。

[Linux]Linux关于磁盘备份dd命令以及fstab文件简介
相关推荐 去reddit讨论