我有一个 1.4TiB 的驱动器,上面有 Nextcloud 和普通的 Mint 18.2 发行版。现在使用了 25% 的容量……我想备份一下。我正在使用 dd 进行复制(非常慢),但我的问题是它会尝试复制整个 1.4TiB 还是会在没有数据的地方停止……它能分辨出区别吗?
它非常慢...我正在使用 pv 来监控进度,它显示 15 个小时。
嗯
戴夫
答案1
dd
不关注“文件”,只关注磁盘块(如果您指定if=/dev/sda
),因此它将尝试将所有 1.4TiB 复制到 750GB 分区。这将失败。
使用面向文件的备份工具(如rsync
、burp
或)duplicity
仅备份文件,而不备份可用空间。
答案2
面向设备或分区的克隆或备份工具
还有其他面向设备或面向分区的克隆或备份工具。
速度
您使用的dd
是一个非常基本的工具,可以克隆、复制每个字节。
克隆兹拉是另一种面向设备或分区的克隆或备份工具。它可以区分包含文件数据的块和空闲块,并且它只克隆/复制包含文件数据的块以及包含有关分区表和每个分区中的文件系统元数据的信息的数据。这使得 Clonezilla 比 更快dd
,特别是当设备上有大量空闲空间时。
安全
dd
众所周知,它非常危险,因此被戏称为“数据破坏者”,因为它会毫无顾忌地执行你的指令。如果你让它删除家庭照片……,它只需要一个小小的打字错误就能搞定。
Clonezilla 有检查点,您可以在其中仔细检查是否将数据写入正确的目标设备(而不是存储有价值数据的设备(主驱动器或外部驱动器))。
操作模式
Clonezilla 可以直接克隆,也可以创建整个设备的压缩映像。此映像是一个包含多个文件的目录,其中的大文件被压缩。Clonezilla 可以从映像还原到大小相同或更大的新设备(驱动器),这样您就可以获得与原始系统具有相同属性的工作系统,即克隆。
Clonezilla 还可以单独对一个或多个分区进行{克隆/制作压缩映像},但在这种情况下将没有完整的映像来恢复原始系统的完整克隆。
你的具体情况
我认为 Clonezilla 映像文件足够小,至少在原始源驱动器还未装满已压缩的数据的情况下,可以放入目标驱动器。因此,您可以尝试通过创建整个源驱动器的映像文件来备份数据。
为了依赖备份,您应该获取第三个驱动器,其大小至少与原始源驱动器相同,并尝试从映像恢复到第三个驱动器。它应该可以替代原始驱动器。
如果这对您来说“太多了”,如果足以备份您的个人数据以及计算机中的某些设置,那么根据@waltinator 的回答进行面向文件的备份会更好。
答案3
dd 的问题在于它会复制所有内容,即使是只包含二进制零且未分配给任何文件的扇区。而且很容易输入错误参数,因此它获得了“磁盘破坏者”的绰号。
我建议你使用 CloneZilla —— 它是一个可启动的前端,可以设置你的备份/恢复请求并协调它们的执行。它特别适合备份/恢复物理磁盘上的一个分区。
CloneZilla 有三个选项可供选择用于进行实际备份的实用程序 - 其中一个是 dd,但它也有更快更好的选项。
詹妮弗
答案4
制作文件系统数据的映像(而不是对底层块设备进行愚蠢的逐块复制)称为“转储”。
- http://man7.org/linux/man-pages/man8/dumpe2fs.8.html 适用于 ext2/3/4
- http://man7.org/linux/man-pages/man8/xfsdump.8.html
- https://btrfs.wiki.kernel.org/index.php/Manpage/btrfs-send
- 等等,大多数文件系统都有转储实用程序。
逆向操作称为“恢复”。转储实用程序的手册页提到了恢复程序。
对于增量备份,文件级别的操作通常要好得多,但 dumpfs 工具的读取速度通常更快。而且由于它们的输出是单个流,您可以轻松地将其通过轻量级压缩器(如lz4
或lzop
,或 )进行管道传输gzip
。由于它是单个流,因此写入速度也很快,因此不需要在目标上进行任何查找或元数据操作。
读取源的速度也可能更快,因为它知道文件系统布局,并且会按照文件/目录数据在磁盘上的显示顺序读取它们,只会跳过空洞。如果目录中的文件在磁盘上彼此不相邻,则向下遍历目录可能会导致访问模式慢得多,并会到处寻找。
TL:DR:在使用多个磁盘时,dump/restore 是复制整个文件系统的好方法。它通常很快。