通常你可能会把数据放在一个分区上,有时候可能需要对该设备或者上面的一个分区进行备份。树莓派用户为了可引导 SD 卡当然有这个需求。其它小体积计算机的用户也会发现这非常有用。有时候设备看起来要出现故障时最好快速做个备份。

进行本文中的实验你需要一个叫 dcfldd 的工具。

dcfldd 工具

该工具是 coreutils 软件包中 dd 工具的增强版。dcfldd 是 Nicholas Harbour 在美国国防部计算机取证实验室(DCFL)工作期间研发的。该工具的名字也基于他工作的地方 - dcfldd。

对于仍然在使用 CoreUtils 8.23 或更低版本的系统,并没有一个可以轻松查看正在创建副本的进度的选项。有时候看起来就像什么都没有发生,以至于你就想取消掉备份。

注意:如果你使用 8.24 或更新版本的 dd 工具,你就不需要使用 dcfldd,只需要用 dd 替换 dcfldd 即可。所有其它参数仍然适用。

在 Debian 系统上你只需要在 Package Manager 中搜索 dcfldd。你也可以打开一个终端然后输入下面的命令:

  1. sudo apt-get install dcfldd

对于 Red Hat 系统,可以用下面的命令:

  1. cd /tmp
  2. wget dl.fedoraproject.org/pub/epel/6/i386/dcfldd-1.3.4.1-4.el6.i686.rpm
  3. sudo yum install dcfldd-1.3.4.1-4.el6.i686.rpm
  4. dcfldd --version

注意: 上面的命令安装的是 32 位版本。对于 64 位版本,使用下面的命令:

  1. cd /tmp
  2. wget dl.fedoraproject.org/pub/epel/6/x86_64/dcfldd-1.3.4.1-4.el6.x86_64.rpm
  3. sudo yum install dcfldd-1.3.4.1-4.el6.x86_64.rpm
  4. dcfldd --version

每组命令中的最后一个语句会列出 dcfldd 的版本并显示该命令文件已经被加载。

注意:确保你以 root 用户执行 dd 或者 dcfldd 命令。

安装完该工具后你就可以继续使用它备份和恢复分区。

备份分区

备份设备的时候可以备份整个设备也可以只是其中的一个分区。如果设备有多个分区,我们可以分别备份每个分区。

在进行备份之前,先让我们来看一下设备和分区的区别。假设我们有一个已经被格式化为一个大磁盘的 SD 卡。这个 SD 卡只有一个分区。如果空间被切分使得 SD 卡看起来是两个设备,那么它就有两个分区。

假设我们有一个树莓派中的 SD 卡。SD 卡容量为 8 GB,有两个分区。第一个分区存放 BerryBoot 启动引导器。第二个分区存放 Kali(LCTT 译注:Kali Linux 是一个 Debian 派生的 Linux 发行版)。现在已经没有可用的空间用来安装第二个操作系统。我们使用大小为 16 GB 的第二个 SD 卡,但拷贝到第二个 SD 卡之前,第一个 SD 卡必须先备份。

要备份第一个 SD 卡我们需要备份设备 /dev/sdc。进行备份的命令如下所示:

  1. dcfldd if=/dev/sdc of=/tmp/SD-Card-Backup.img

备份包括输入文件(if)以及被设置为 /tmp 目录下名为 SD-Card-Backup.img 的输出文件(of)。

dd 和 dcfldd 默认都是每次读写文件中的一个块。通过上述命令,它可以一次默认读写 512 个字节。记住,该复制是一个精准的拷贝 - 逐位逐字节。

默认的 512 个字节可以通过块大小参数 - bs= 更改。例如,要每次读写 1 兆字节,参数为 bs=1M。使用以下所用的缩写可以设置不同大小:

  • b – 512 字节
  • KB – 1000 字节
  • K – 1024 字节
  • MB – 1000x1000 字节
  • M – 1024x1024 字节
  • GB – 1000x1000x1000 字节
  • G – 1024x1024x1024 字节

你也可以单独指定读和写的块大小。要指定读块的大小使用 ibs=。要指定写块的大小使用 obs=。

我使用三种不同的块大小做了一个 120 MB 分区的备份测试。第一次使用默认的 512 字节,它用了 7 秒钟。第二次块大小为 1024 K,它用时 2 秒。第三次块大小是 2048 K,它用时 3 秒。用时会随系统以及其它硬件实现的不同而变化,但通常来说更大的块大小会比默认的稍微快一点。

完成备份后,你还需要知道如何把数据恢复到设备中。

恢复分区

现在我们已经有了一个备份点,假设数据可能被损毁了或者由于某些原因需要进行恢复。

命令和备份时相同,只是源和目标相反。对于上面的例子,命令会变为:

  1. dcfldd of=/dev/sdc if=/tmp/SD-Card-Backup.img

这里,镜像文件被用作输入文件(if)而设备(sdc)被用作输出文件(of)。

注意: 要记住输出设备会被重写,它上面的所有数据都会丢失。通常来说在恢复数据之前最好用 GParted 删除 SD 卡上的所有分区。

假如你在使用多个 SD 卡,例如多个树莓派主板,你可以一次性写多块 SD 卡。为了做到这点,你需要知道系统中卡的 ID。例如,假设我们想把镜像 BerryBoot.img 拷贝到两个 SD 卡。SD 卡分别是 /dev/sdc 和 /dev/sdd。下面的命令在显示进度时每次读写 1 MB 的块。命令如下:

  1. dcfldd if=BerryBoot.img bs=1M status=progress | tee >(dcfldd of=/dev/sdc) | dcfldd of=/dev/sdd

在这个命令中,第一个 dcfldd 指定输入文件并把块大小设置为 1 MB。status 参数被设置为显示进度。然后输入通过管道 |传输给命令 tee。tee 用于将输入分发到多个地方。第一个输出是到命令 dcfldd of=/dev/sdc。命令被放到小括号内被作为一个命令执行。我们还需要最后一个管道 |,否则命令 tee 会把信息发送到 stdout (屏幕)。因此,最后的输出是被发送到命令 dcfldd of=/dev/sdd。如果你有第三个 SD 卡,甚至更多,只需要添加另外的重定向和命令,类似 >(dcfldd of=/dev/sde。

注意:记住最后一个命令必须在管道 | 后面。

必须验证写的数据确保数据是正确的。

验证数据

一旦创建了一个镜像或者恢复了一个备份,你可以验证这些写入的数据。要验证数据,你会使用名为 diff 的另一个不同程序。

使用 diff ,你需要指定镜像文件的位置以及系统中拷贝自或写入的物理媒介。你可以在创建备份或者恢复了一个镜像之后使用 diff 命令。

该命令有两个参数。第一个是物理媒介,第二个是镜像文件名称。

对于例子 dcfldd of=/dev/sdc if=/tmp/SD-Card-Backup.img,对应的 diff 命令是:

  1. diff /dev/sdc /tmp/SD-Card-Backup.img

如果镜像和物理设备有任何的不同,你会被告知。如果没有显示任何信息,那么数据就验证为完全相同。

确保数据完全一致是验证备份和恢复完整性的关键。进行备份时需要注意的一个主要问题是镜像大小。

分割镜像

假设你想要备份一个 16GB 的 SD 卡。镜像文件大小会大概相同。如果你只能把它备份到 FAT32 分区会怎样呢?FAT32 最大文件大小限制是 4 GB。

必须做的是文件必须被切分为 4 GB 的分片。通过管道 | 将数据传输给 split 命令可以切分正在被写的镜像文件。

创建备份的方法相同,但命令会包括管道和切分命令。示例备份命令为 dcfldd if=/dev/sdc of=/tmp/SD-Card-Backup.img ,其切分文件的新命令如下:

  1. dcfldd if=/dev/sdc | split -b 4000MB - /tmp/SD-Card-Backup.img

注意: 大小后缀和对 dd 及 dcfldd 命令的意义相同。 split 命令中的破折号用于将通过管道从 dcfldd 命令传输过来的数据填充到输入文件。

文件会被保存为 SD-Card-Backup.imgaa 和 SD-Card-Backup.imgab,如此类推。如果你担心文件大小太接近 4 GB 的限制,可以试着用 3500MB。

将文件恢复到设备也很简单。你使用 cat 命令将它们连接起来然后像下面这样用 dcfldd 写输出:

  1. cat /tmp/SD-Card-Backup.img* | dcfldd of=/dev/sdc

你可以在命令中 dcfldd 部分包含任何需要的参数。

我希望你了解并能执行任何需要的数据备份和恢复,正如 SD 卡和类似设备所需的那样。

作者:Jarret
来源:51CTO

如何备份一个磁盘分区相关推荐

  1. 如何在计算机上增加一个磁盘分区,win10系统额外新增加一个硬盘分区的详细办法...

    win10系统使用久了,好多网友反馈说关于对win10系统额外新增加一个硬盘分区设置的方法,在使用win10系统的过程中经常不知道如何去对win10系统额外新增加一个硬盘分区进行设置,有什么好的办法去 ...

  2. win7计算机如何添加新磁盘分区,如何为自己的番茄花园win7旗舰版电脑增加一个磁盘分区...

    购买win7 64位旗舰版电脑的用户都知道,咱们购买电脑的时候,系统是已经安装好的,也就是说,咱们win7旗舰版电脑中已经默认设置好了磁盘的分区,而且这个分区有可能会因为品牌的不同.型号的不同而有所差 ...

  3. linux格式化ext4分区工具,linux学习笔记-磁盘分区、格式化与挂载

    磁盘分区.格式化与挂载 磁盘分区.格式化与挂载 一.给磁盘分区 分区工具介绍 fdisk:分区时只修改分区表信息:操作简单:不支持大于2T的分区:只能使用交互式来分区. parted:直接将分区信息写 ...

  4. 如何重新安装win2008服务器系统分区,怎么解决安装server2008后磁盘分区消失的方法步骤...

    如果想对磁盘分区进行无损调整的话,往往需要下载使用专业的磁盘管理工具来完成,例如常用的工具有PartitionMagic. PowerQuest等,如此说来,难道没有专业的磁盘管理工具帮忙,我们就没有 ...

  5. 磁盘分区以及文件系统管理练习题

    1.描述GPT是什么,应该怎么使用. 在说GPT分区之前,先说一下MBR分区. MBR分区是一种传统的分区机制,它适用于X86架构的32位和64位操作系统,位于磁盘的0号扇区(1扇区等于512字节). ...

  6. linux中的如何进行磁盘分区

    本文主要内容 前言 一.linux中的各硬件设备的文件名 0.预备知识 1. 磁盘分区 2. linux支持的文件系统 1.磁盘分区 1.对硬盘进行分区 1. 分区 1. 使用fdisk进行分区 2. ...

  7. Linux 第七章-磁盘分区和格式化

    Linux 第七章 磁盘与文件系统管理 1.磁盘分区与格式化 ​ 在Linux中,当现有的硬盘分区不能满足要求时,就需要对硬盘中的分区进行重新的规划与调整,有时候还需要添加新的硬盘来扩展存储空间. 1 ...

  8. 磁盘分区时扩展卷选项为灰色,分区失败

    原因:磁盘扩展卷只能选择右侧相邻未分区进行. (相隔D盘,扩展失败) (与D盘相邻,扩展卷可用) (点击,按照操作,扩展成功) 解决办法:方法一,保存磁盘资料,格式化磁盘,从C盘开始从新分配 方法二, ...

  9. 如何在Win7电脑上增加新磁盘分区?

    我们在重装好系统Win7系统后有时会碰到需要新建磁盘分区的情况,这时我们再重装系统进行磁盘分区就有些过于麻烦了,其实我们可以利用Win7系统自身的磁盘管理功能来新建一个磁盘分区.下面好系统重装助手就来 ...

最新文章

  1. gtk移植到嵌入式_物联网时代的盛行,应届毕业生是学嵌入式好呢,还是安卓或ios呢?...
  2. java越权发送邮件_已登录用户 越权 访问action方法怎么解决?
  3. 左耳朵耗子:程序员如何把控自己的职业?
  4. TCP协议——粘包与拆包
  5. python数值计算guess_【python】猜数字game,旨在提高初学者对Python循环结构的使用...
  6. 【读书笔记】【独立思考】2018-04-03(1)
  7. iOS 11.3 显示:Apple ID 或将实现微信式扫码登陆
  8. 您操作系统的msxml组件版本过低_Fuchsia OS –未来的Google操作系统?
  9. Web前端培训分享:Web前端三大主流框架对比
  10. 长微博生成器html,微信文章怎么搬到微博中?微信内容一键生成长微博的技巧
  11. ubuntu虚拟机全屏显示问题
  12. 机器人 铁血兵团 魂斗罗_【魂斗罗铁血兵团中文版】魂斗罗铁血兵团中文版下载-街机中国...
  13. Windows桌面美化(壁纸网站,任务栏透明、颜色设置)
  14. During sturtup program exited with code 0xc0000139的解决办法!
  15. Unity协程的返回值
  16. OpenCV之视频截取
  17. 7-1 统计正数和负数的个数然后计算这些数的平均值 (15 分)-java
  18. 一个女程序员的奋斗经历
  19. 三极管-三极管仿真与参数设置:与bipolar管
  20. android seekto实现_Android开发之音乐播放器的实现

热门文章

  1. superagent post php,Node爬虫——利用superagent模拟登陆
  2. json jsono wsdl_javascript中JSON是干嘛的?谁能形象通俗的说一下,本人小白 O.O!
  3. Matlab 沿X运动触发事件,Matlab RoboticToolBox(一)Link参数、三自由度/四自由度逆运动学...
  4. 《自动化测试最佳实践》讲座总结
  5. 浏览器UA检测和解析
  6. Part I 空气曲棍球 Chapter4 Adding Color and Shade)
  7. HDU 3047 Zjnu Stadium (带权并查集)
  8. power law幂次法则
  9. logback打印日志不显示具体的信息,显示问号
  10. 江苏五年制专转本哪些人可以报考,有名额限制吗?