在Linux环境中,软件仓库是获取和更新软件包的关键渠道。然而,依赖于远程仓库可能会受到网络延迟、带宽限制或访问控制等问题的影响。为了解决这个问题,许多系统管理员选择在本地搭建仓库镜像,以提高软件包获取的速度和稳定性。这些脚本能够自动同步CentOS和Ubuntu的软件仓库到本地服务器,并通过精细的管理来优化存储空间的利用。
[root@localhost ~]# cat sync.sh
dnf install createrepo yum-utils -y
# 配置 CentOS 7 的仓库源地址
REPO_URL="http://mirrors.aliyun.com/centos/7/"
BASE_REPO_ID="base"
UPDATES_REPO_ID="updates"
EXTRAS_REPO_ID="extras"
CENTOSPLUS_REPO_ID="centosplus"
# 同步 CentOS 7 仓库
reposync --repoid=${BASE_REPO_ID} --destdir=/home/wwwroot/default/yum/centos7 --norepopath --download-metadata
reposync --repoid=${UPDATES_REPO_ID} --destdir=/home/wwwroot/default/yum/centos7 --norepopath --download-metadata
reposync --repoid=${EXTRAS_REPO_ID} --destdir=/home/wwwroot/default/yum/centos7 --norepopath --download-metadata
reposync --repoid=${CENTOSPLUS_REPO_ID} --destdir=/home/wwwroot/default/yum/centos7 --norepopath --download-metadata
# 生成元数据
createrepo /home/wwwroot/default/yum/centos7
[root@localhost ~]# cat ubuntu.sh
# 配置镜像源地址和本地目录
MIRRORS=(
"rsync://mirrors.aliyun.com/ubuntu/"
"rsync://mirrors.aliyun.com/ubuntu-ports/"
"rsync://mirrors.aliyun.com/oldubuntu-releases/"
)
LOCAL_DIRS=(
"/home/wwwroot/default/yum/ubuntu"
"/home/wwwroot/default/yum/ubuntu-ports"
"/home/wwwroot/default/yum/oldubuntu-releases"
)
# 删除旧的数据(可选)
for LOCAL_DIR in "${LOCAL_DIRS[@]}"; do
echo "Deleting old data in ${LOCAL_DIR}..."
rm -rf "${LOCAL_DIR}"
mkdir -p "${LOCAL_DIR}"
done
# 同步镜像
for i in "${!MIRRORS[@]}"; do
MIRROR_URL="${MIRRORS[$i]}"
LOCAL_DIR="${LOCAL_DIRS[$i]}"
echo "Syncing from ${MIRROR_URL} to ${LOCAL_DIR}..."
rsync -avz --delete "${MIRROR_URL}" "${LOCAL_DIR}"
done
echo "所有镜像同步完成!"
[root@localhost ~]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs tmpfs 1.8G 0 1.8G 0% /dev/shm
tmpfs tmpfs 732M 9.9M 723M 2% /run
/dev/mapper/rl-root xfs 70G 4.4G 66G 7% /
/dev/mapper/rl-home xfs 2.0T 86G 1.9T 5% /home
/dev/sda2 xfs 960M 263M 698M 28% /boot
tmpfs tmpfs 366M 4.0K 366M 1% /run/user/0
[root@localhost ~]# du -h /home/wwwroot/default/yum/
11G /home/wwwroot/default/yum/centos8/AppStream/Packages
11G /home/wwwroot/default/yum/centos8/AppStream
7.7G /home/wwwroot/default/yum/centos8/PowerTools/Packages
7.7G /home/wwwroot/default/yum/centos8/PowerTools
2.1G /home/wwwroot/default/yum/centos8/base/Packages
2.1G /home/wwwroot/default/yum/centos8/base
329M /home/wwwroot/default/yum/centos8/centosplus/Packages
329M /home/wwwroot/default/yum/centos8/centosplus
528K /home/wwwroot/default/yum/centos8/extras/Packages
528K /home/wwwroot/default/yum/centos8/extras
40M /home/wwwroot/default/yum/centos8/repodata
22G /home/wwwroot/default/yum/centos8
51G /home/wwwroot/default/yum/centos7/Packages
80M /home/wwwroot/default/yum/centos7/repodata
51G /home/wwwroot/default/yum/centos7
0 /home/wwwroot/default/yum/ubuntu
0 /home/wwwroot/default/yum/ubuntu-ports
0 /home/wwwroot/default/yum/oldubuntu-releases
72G /home/wwwroot/default/yum/
第一个脚本sync.sh专注于同步CentOS 7的软件包。它不仅能够下载软件包,还能下载并生成必要的元数据,使得本地仓库能够像远程仓库一样被正常访问和使用。这种本地化的管理方式极大地提升了软件包的获取速度,并降低了对外部网络的依赖。
与此同时,第二个脚本ubuntu.sh则针对Ubuntu系统进行了优化。它通过rsync工具高效地同步了Ubuntu的镜像,确保了本地仓库与远程仓库的高度一致性。这种同步方式不仅快速,而且能够智能地删除本地不再需要的文件,从而节省存储空间。
结合系统存储信息的输出,我们可以看到/home/wwwroot/default/yum/目录下已经存储了大量的CentOS 7和CentOS 8的软件包,而Ubuntu的镜像目录目前虽然为空,但随时可以根据需要进行同步。这种灵活的管理方式使得存储空间得到了高效的利用。
总的来说,通过这些脚本和系统信息的结合,我们展示了如何在本地搭建和管理Linux发行版的仓库,并通过精细的管理来优化存储空间的利用。这种管理方式不仅提高了软件包获取的速度和稳定性,还降低了对外部网络的依赖,为系统管理员提供了一个高效、可靠的软件包管理解决方案。
如果喜欢这篇文章,请点下方在看,
后续推荐更多类似文章