使用 tar 创建完整驱动器的存档

使用 tar 创建完整驱动器的存档

我想备份我的全新电脑的整个驱动器。

我尝试了这个命令:

sudo tar -czvf disk.tar /dev/nvme0n1

但1秒后就结束了。

存档中的 nvme0n1 文件为 0 字节。

这里有什么问题吗?

编辑:

我之前总是在分区上运行此命令,因此我没有(已删除的)文件:

dd if=/dev/zero of=moh bs=100M
rm moh

答案1

tar应该用来备份文件。要备份磁盘的确切状态,您应该使用dd.

所以如果你想要一个精确的驱动器的副本使用: dd if=/dev/nvme0n1 of=/mnt/some_other_drive/copy_of_the_first_drive

更好的是使用压缩(如果是全新电脑的磁盘,您可以对其进行强力压缩)dd if=/dev/nvme0n1 | bzip2 > /mnt/some_other_drive/copy_of_the_first_drive.bz2

还有很多其他选项也是可能的:

  • 您可以使用ncssh创建隧道并在制作备份时将备份传输到另一个系统(如果您的系统上没有第二个磁盘)。
  • tar如果您只想要文件而不是整个状态,则可以使用
  • rsync如果您只需要文件并且没有第二个可用磁盘,则可以使用。

答案2

首先,您应该将其安装到 /mnt 等目录。之后你可以使用你的命令(tar czvf somebackup.tar.gz /mnt)。无论如何,我建议你使用 rsync。如果你想将整个状态转移到另一个硬盘上,你应该使用 dd 命令,否则你不必这样做。

答案3

tar旨在在文件级别上工作

您可以使用tar它来创建目录和文件的存档,并且该存档可以压缩也可以不压缩。

这样就可以备份根分区的内容了,/以及您系统中可能有的其他分区。

示例(在运行另一个系统时运行,例如从 USB 闪存盘启动)

sudo mkdir /mnt/sd1
sudo mkdir /mnt/sd2
sudo mkdir /mnt/sd3

sudo mount /dev/nvme0n1p1 /mnt/sd1
sudo mount /dev/nvme0n1p2 /mnt/sd2
sudo mount /dev/nvme0n1p3 /mnt/sd3

sudo tar -cvzf root.tar.gz /mnt/sd1
sudo tar -cvzf home.tar.gz /mnt/sd2  # optional
sudo tar -cvzf data.tar.gz /mnt/sd3  # optional

访问单个备份文件很容易,特别是在不压缩存档的情况下。这很好。

但分区表(和 BIOS 引导加载程序(在 BIOS 模式下启动所必需的))将不是得到备份。

Clonezilla 在整个驱动器上工作

您可以使用克隆属,这是一个工具,用于克隆或创建整个驱动器内容的[压缩]映像,包括分区和引导加载程序等。

  • 下载 Clonezilla iso 文件,
  • 创建 USB 启动驱动器,
  • 从它启动并
  • 让 Clonezilla 为您做这件事。

Clonezilla 足够聪明,可以仅复制文件系统中已使用的块并跳过可用空间。它还会压缩图像,因此速度更快,并且创建的图像要小得多(与例如的纯克隆相比dd)。该映像不是一个文件,而是一个包含一组文件的目录,您可以使用 Clonezilla 从该映像进行恢复。

Clonezilla 还具有多个检查点,可帮助您识别驱动器,并确保在备份时从正确的驱动器读取数据,在恢复时向正确的驱动器写入数据。

相关内容