假设我想备份系统的“应用程序”(软件,但我想一切都是软件)。其中一些在 中/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/nvme0n1
dd
另一个示例是从挂起状态恢复时重置网络适配器的脚本。新笔记本电脑可能会有不同的网络驱动程序。恢复后,我将注释掉加载旧驱动程序名称,让机器挂起/恢复而不进行修改。
DKMS 编译自定义驱动程序所需的 Linux 标头未包含在备份中。如果需要自定义驱动程序,我可能会从新笔记本电脑中删除所有 DKMS,然后稍后再安装。
/etc/fstab
最后,恢复之前需要保存驱动器表,然后在恢复后将其复制回来。
压缩备份文件大小为 6 GB,其中包括所有/home
文件,不仅包括脚本、数据和文档,还包括所有应用程序的配置文件。