备份 /usr 文件夹会备份我的所有程序吗?

备份 /usr 文件夹会备份我的所有程序吗?

假设我想备份系统的“应用程序”(软件,但我想一切都是软件)。其中一些在 中/opt,一些在我的主文件夹中,但大多数都放在哪里?对于那些通过存储库安装的应用程序,二进制文件在 中/usr/bin,我希望所有其他必要的文件都在/usr文件夹中(例如库和其他文件)

所以,我的问题是:

如果我备份/usr文件夹,重新安装系统并恢复该文件夹,我的所有旧应用程序都能正常工作吗?还是我必须做其他事情?

答案1

并不真地。

正如您所说,您将获得所有可执行文件和大多数库,但您将错过所有配置文件等等,因此大多数应用程序都将无法运行。

如果我有这样的想法,我宁愿备份配置并重新安装应用程序。大多数配置系统文件位于目录下(用户配置文件可以在、隐藏文件和目录中/etc找到( )。$HOME.file

答案2

如果您想要备份以便在重新安装后恢复系统配置,
最好的方法是创建已安装程序的列表。

apt-clone提供此功能。它创建当前已安装软件包的列表,可用于在另一台机器上创建完全相同的安装或全新安装。

sudo apt-get install apt-clone
sudo apt-clone clone foo  #This creates a file foo.apt-clone.tar.gz.

将其复制到目标机器并运行

sudo apt-clone restore foo.apt-clone.tar.gz #this tells apt to install the packages n the list.

答案3

我现在正准备将我的 Ubuntu 16.04 安装移到新笔记本电脑上。这是我将用于备份的脚本:

#!/bin/bash

# NAME: full-backup
# PATH: /usr/local/bin
# DESC: Full system backup - must call with SUDO

# DATE: July 16, 2017. Modified Oct 17, 2017.

apt autoclean   # reduces size of /var/cache/apt/archives

cd /tmp     # tar must be created in directory not backed up.

time tar -cvpzf backup.tar.gz \
--exclude=/backup.tar.gz \
--exclude=/proc \
--exclude=/tmp \
--exclude=/mnt \
--exclude=/dev \
--exclude=/sys \
--exclude=/media \
--exclude=/usr/src/linux-headers* \
--exclude=/home/rick/.cache \
--exclude=/var/log \
--exclude=/var/run/ \
--exclude=/run

恢复后,我的一些脚本必须更改。例如,我有一个包装器脚本,dd可确保数据不会写入/dev/sda或。新笔记本电脑有 PCIe NVMe SSD,其中 linux 命名约定是。恢复后,我将使此包装器脚本不可执行,因此它不会运行,而是运行原始/dev/sdb脚本。/dev/sdc/dev/nvme0n1dd

另一个示例是从挂起状态恢复时重置网络适配器的脚本。新笔记本电脑可能会有不同的网络驱动程序。恢复后,我将注释掉加载旧驱动程序名称,让机器挂起/恢复而不进行修改。

DKMS 编译自定义驱动程序所需的 Linux 标头未包含在备份中。如果需要自定义驱动程序,我可能会从新笔记本电脑中删除所有 DKMS,然后稍后再安装。

/etc/fstab最后,恢复之前需要保存驱动器表,然后在恢复后将其复制回来。

压缩备份文件大小为 6 GB,其中包括所有/home文件,不仅包括脚本、数据和文档,还包括所有应用程序的配置文件。

相关内容