如何获取并安装相同RPM包以复制Rocky9服务器?
Rocky9 服务器RPM包备份与批量同步实操方法
一、导出已安装RPM包列表
导出全部已安装包
用rpm命令直接导出,两种格式可选:
- 仅包名(适合同版本系统批量安装):
rpm -qa --qf "%{NAME}\n" > installed_pkgs.txt - 带完整版本+架构(避免版本不一致问题):
rpm -qa --qf "%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n" > installed_pkgs_full.txt
仅导出手动安装的包(排除系统默认预装)
如果只想同步自己后来加装的包,用dnf命令更精准:
dnf history userinstalled > manual_pkgs.txt
二、在备份服务器批量安装
- 先把导出的列表文件传到备份服务器(比如用
scp installed_pkgs.txt user@backup-server:/tmp/) - 执行安装命令:
- 用纯包名列表安装:
dnf install -y $(cat /tmp/installed_pkgs.txt) - 用完整版本列表安装:
dnf install -y $(cat /tmp/installed_pkgs_full.txt)
- 用纯包名列表安装:
三、用Kickstart实现自动化部署(含完整包配置)
如果需要批量搭建完全一致的服务器,可以用Kickstart文件:
- 原服务器生成Kickstart文件:
先安装图形化配置工具:
运行工具后,在「软件包选择」里可以选择同步所有已安装包,或者导入之前导出的包列表,最后保存为kickstart文件(比如dnf install -y system-config-kickstartserver-template.ks)。
也可以直接编辑系统默认的/root/anaconda-ks.cfg,在%packages段添加所有需要的包名。 - 用这个Kickstart文件引导备份服务器安装,整个过程会自动配置系统和安装所有指定包。
四、一键同步脚本
写个简单的bash脚本,直接跨服务器同步安装:
#!/bin/bash # 替换成你的原服务器用户名和地址 ORIG_SERVER="user@your-original-server-ip" # 从原服务器拉取包列表并安装 ssh $ORIG_SERVER 'rpm -qa --qf "%{NAME}\n"' | dnf install -y -
提示:提前配置原服务器和备份服务器的免密SSH登录,这样脚本可以一键执行,不用输入密码。
内容的提问来源于stack exchange,提问作者Alain Lecompte
相关产品推荐
相关产品推荐

