我想备份我的全新电脑的整个驱动器。
我尝试了这个命令:
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
还有很多其他选项也是可能的:
- 您可以使用
nc
或ssh
创建隧道并在制作备份时将备份传输到另一个系统(如果您的系统上没有第二个磁盘)。 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 还具有多个检查点,可帮助您识别驱动器,并确保在备份时从正确的驱动器读取数据,在恢复时向正确的驱动器写入数据。