将根“/”中的所有内容复制到外部存储卷的适当命令?

scr*_*ibe 7 backup external-hdd copy

我想/在升级我的操作系统之前将root 中的所有内容复制到我的外部硬盘上,这样我就会拥有一切,以防出现问题。以下是最合适的命令吗?

username@machine:/$ sudo cp -r . /media/username/TOSHIBA\ EXT/root_copy/
Run Code Online (Sandbox Code Playgroud)

Gor*_*ter 13

补充一下 PP 所说的,您并不是真的想复制每个目录。我tar用来备份我需要的所有内容,并“排除”我不需要的目录。该命令基本上是tar (options) BACKUP-FILENAME TARGET。如果您运行以下命令,它应该可以解决问题。

sudo tar -cvpzf /media/username/TOSHIBA\ EXT/root_copy/root-copy.tar.gz --exclude='/mnt' --exclude='/run' --exclude='/proc' --exclude='/sys' --exclude='/media' --exclude='/dev' --exclude='/lost+found' --exclude='/tmp' --exclude='/boot' --exclude=".*lost+found" / 2> /root/tar-errors.txt

我知道它看起来很多,但 tar 将在/media/username/TOSHIBA\ /EXT/root_copy/. 文件名为root-copy.tar.gz. 它将排除我提到的每个目录,--exclude最后它会转储名为/root/tar-errors.txt.

以这种方式使用 tar 的另一个好处是备份文件将是一个“压缩的 tarball”。它本质上是一个压缩档案,因此您可以节省外部驱动器上的空间。

我确信有更简单的方法可以做到这一点,但我一直使用这种方法来备份我的系统。

  • 我也排除了`/home/*/.cache`,那也是你不需要的几GB。 (5认同)

P.P*_*P.P 8

是的,如果您想复制 下的所有内容/,则可以执行以下操作:

sudo cp -r / media/username/TOSHIBA\ EXT/root_copy/
Run Code Online (Sandbox Code Playgroud)

但是,在继续之前......你需要知道,你真的不想要复制一切/:)

您通常只需要复制您的数据;不是所有的操作系​​统二进制文件、安装的应用程序、配置文件等。这就是 about 命令会做的事情。

如果操作系统升级失败,那么“复制”所有内容都不是一件容易的事。如果您有数据,您只需重新安装操作系统并从外部磁盘/介质复制回数据即可。

此外,如果您设置了安装操作系统以外的其他分区并将数据保存在那里,那么您可能根本不需要从外部复制。您可以将数据保存在单独的分区中。如果操作系统重新安装失败,您只需擦除该分区并重新安装操作系统,而无需触及保存数据的其他分区。

  • 不要复制 /proc 或 /dev。你会后悔试图恢复那些。如果你不知道你的数据在哪里......那么*找出*。这个答案与您上一个问题的答案非常相似。 (3认同)
  • 公平地说,我认为这里有很多遗漏的地方。在重新安装操作系统之前,我亲自克隆了我的硬盘。这样做意味着我可以简单地恢复克隆,并且我将“完全”回到我开始的位置,无需重新安装应用程序和配置文件等,这个答案排除了这一点。如果您只复制了数据,则需要重新安装原始操作系统,重新安装所有应用程序,重新配置所有内容,然后复制回所有数据。这需要更多的劳动力和时间。我同意像 /proc 这样的东西在这里没有用,但 OP 理解这一点。 (2认同)

gro*_*taj 8

考虑对磁盘进行映像,而不是仅制作文件副本。升级过程中可能会弄乱的不仅仅是文件:EFI 系统分区、引导扇区等。

我会推荐 Clonezilla。它是用户友好和可靠的。他们有自己的专用启动盘。一些救援磁盘也提供了它(例如 GRML),您可以将它安装在 Ubuntu Live CD 上。

Clonezilla 图像不可浏览,但可用于轻松地将整个磁盘恢复到以前的状态。

有些人可能会建议使用dd来创建原始图像。这也是一种有效的方法,生成的文件将是可浏览的,但它们将占用与整个分区大小一样多的空间。同时,Clonezillapartclone在幕后使用,它只复制实际使用的磁盘空间并忽略与dd. 默认情况下,Clonezilla 还将压缩图像。