7

任务:为远程升级系统或添加新功能提供便利。

我应该做什么创建目标机器当前环境的备份,如果升级在任何阶段失败,然后恢复到原始环境。

假设我的目录结构是这样的:

/home/user/project1/..bla bla

项目 1 包含符号链接、硬链接、软件和固件的可执行文件等。

我的困境

我应该使用策略 1 还是 2?

  1. 如果升级失败,我是否应该复制整个当前环境并恢复。

    示例-> cp -p -r /home/user/project1/* /home/user/project1_backup/

    如果升级失败 -->

    mv /home/user/project1_backup/ /home/user/project1

  2. 如果升级失败,我应该压缩整个环境并解压缩它。要创建 tar 球,我对保留符号链接和硬链接 .. 以及解压缩它时相同。

有人可以提供具体的答案,我应该遵循哪种方法,如果我使用 tar 球方法,bash 命令将是什么。

据我所知 tar -cvfz,创建 tar gunzip不会保留链接和权限,并且在解压缩 tar 球时同样如此。请放点光好吗?

4

1 回答 1

10

我会使用第二个选项:创建一个 tarball;因为 tarball 有一些积极的方面:

  • 您可以跨文件系统保留权限/特殊文件(当您将 ext* 文件夹备份到 NTFS 文件系统时很有用)
  • 一个大文件的副本将比一千个小文件快
  • 你可以压缩它。

这是命令:

tar --preserve-permissions --preserve-order -jc /path/to/your/folder > /path/to/your/backup_file.tar.bz2

这将保留您的许可,您的符号链接。对于硬链接,我给你这个链接(http://www.gnu.org/software/tar/manual/html_node/hard-links.html

(但默认情况下,tar 保留硬链接)

不要忘记在升级系统之前测试你的 tarball !!

(在未正确创建存档的情况下,您将避免几乎所有数据丢失)

于 2012-06-15T16:52:11.177 回答