CentOS Python环境如何进行备份和恢复
小樊
45
2025-12-17 18:47:10
CentOS Python环境备份与恢复
一 备份与恢复策略总览
- 优先使用虚拟环境隔离项目依赖,避免改动系统 Python;系统级组件(如 yum/dnf)依赖特定 Python,勿随意替换或删除。
- 备份粒度建议分层:
- 依赖清单(requirements.txt);2) 虚拟环境目录(venv/conda);3) 解释器与关键二进制/软链;4) 系统配置与软链接。
- 恢复时遵循“先恢复包管理器→再恢复 Python→最后恢复项目依赖”的顺序,降低系统风险。
二 备份步骤
- 记录与导出关键信息
- 查看并记录 Python 可执行文件与版本:
which python python3; python3 --version
- 导出依赖清单(推荐):
pip freeze > requirements.txt
或使用可离线复用的格式:
pip list --format=freeze > requirements.txt
- 备份虚拟环境
- venv 方式:直接打包整个虚拟环境目录(同一平台/架构迁移时简单可靠)
tar czf venv_backup_$(date +%F).tar.gz /path/to/venv
- conda 方式:使用 conda-pack 打包(跨机器、跨路径迁移更稳)
conda pack -n <env_name> -o <env_name>.tar.gz
- 备份解释器与关键文件(可选,谨慎操作)
- 备份自定义编译安装的 Python 目录(如 /usr/local/python3.x)与相关可执行文件/软链:
sudo cp -a /usr/local/python3.x /backup/python3.x
sudo cp -a /usr/bin/python* /usr/bin/pip* /backup/bin/
- 备份软链接与配置(变更前先备份):
ls -l /usr/bin/python > /backup/python_symlink.txt
sudo cp /usr/bin/python /usr/bin/python.bak
- 打包归档
- 将备份目录统一打包:
tar czf python_backup_$(date +%F).tar.gz /backup/python3.x /backup/bin /backup/python_symlink.txt requirements.txt
三 恢复步骤
- 恢复依赖清单(通用)
- 在线安装:
pip install -r requirements.txt
- 离线安装(无网环境):
pip download -r requirements.txt -d packs/
pip install --no-index --find-links=./packs/ -r requirements.txt
- 恢复虚拟环境
- venv 方式:
tar xzf venv_backup_YYYY-MM-DD.tar.gz -C /path/to/venv_parent
如路径变化,激活后修正 shebang(见下方“常见问题”)
source /path/to/venv/bin/activate
- conda 方式:
mkdir -p <env_name>
tar -xzf <env_name>.tar.gz -C <env_name>
source <env_name>/bin/activate
conda-unpack # 清理前缀,确保可移植性
- 恢复解释器与软链接(如曾备份)
- 拷贝解释器目录:
sudo cp -a /backup/python3.x /usr/local/python3.x
- 恢复可执行文件与软链:
sudo cp -a /backup/bin/* /usr/bin/
或恢复软链
sudo mv /usr/bin/python.bak /usr/bin/python
- 验证
- python3 --version; pip3 --version; pip list | head
- 任选项目脚本进行导入与运行测试
四 离线迁移与应急恢复
- 离线迁移最佳实践
- 源机:生成 requirements.txt,用 pip download 将依赖下载到本地目录(packs/)。
- 目标机:先创建空虚拟环境,再用 pip install --no-index --find-links 离线安装;conda 环境优先用 conda-pack 打包后在目标机解压激活。
- 注意:conda-pack 要求目标机与源机平台/操作系统一致(如均为 x86_64 Linux)。
- 误删系统 Python 或 yum/dnf 的应急
- 先修复包管理器:从 CentOS Vault 下载匹配版本的 dnf/yum RPM,用 rpm -ivh 安装;若命令缺失,检查软链与 PATH;清理缓存后重建。
- 再用 dnf/yum 重装系统 Python(如 python3、python3-pip);验证 dnf/yum 与 python3 可用性。
- 切勿用 --nodeps 随意绕过依赖,避免系统不稳定。
五 常见问题与最佳实践
- 不要替换或删除系统自带的 /usr/bin/python;系统工具(如 yum/dnf)依赖它。若需切换版本,优先使用 alternatives 管理:
alternatives --config python 或 alternatives --set python /usr/bin/python3.x
- venv 迁移后路径变化导致 shebang 错误:
激活环境后修正:sed -i "1s|^#!./usr/bin/python3|#!$(which python3)|" /path/to/venv/bin/
- 软链接变更前务必先备份:
ls -l /usr/bin/python; sudo cp /usr/bin/python /usr/bin/python.bak
- 验证清单:版本号、pip 可用、关键包可导入、服务/脚本可运行;定期演练恢复流程,确保 RTO/RPO 达标。