搭建与管理本地Linux发行版仓库:高效利用存储空间

文摘   2024-08-28 23:08   北京  

在Linux环境中,软件仓库是获取和更新软件包的关键渠道。然而,依赖于远程仓库可能会受到网络延迟、带宽限制或访问控制等问题的影响。为了解决这个问题,许多系统管理员选择在本地搭建仓库镜像,以提高软件包获取的速度和稳定性。这些脚本能够自动同步CentOS和Ubuntu的软件仓库到本地服务器,并通过精细的管理来优化存储空间的利用。

[root@localhost ~]# cat sync.sh#!/bin/bash
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-metadatareposync --repoid=${UPDATES_REPO_ID} --destdir=/home/wwwroot/default/yum/centos7 --norepopath --download-metadatareposync --repoid=${EXTRAS_REPO_ID} --destdir=/home/wwwroot/default/yum/centos7 --norepopath --download-metadatareposync --repoid=${CENTOSPLUS_REPO_ID} --destdir=/home/wwwroot/default/yum/centos7 --norepopath --download-metadata
# 生成元数据createrepo /home/wwwroot/default/yum/centos7[root@localhost ~]# cat ubuntu.sh#!/bin/bash
# 配置镜像源地址和本地目录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% /devtmpfs tmpfs 1.8G 0 1.8G 0% /dev/shmtmpfs 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% /boottmpfs tmpfs 366M 4.0K 366M 1% /run/user/0[root@localhost ~]# du -h /home/wwwroot/default/yum/11G /home/wwwroot/default/yum/centos8/AppStream/Packages11G /home/wwwroot/default/yum/centos8/AppStream7.7G /home/wwwroot/default/yum/centos8/PowerTools/Packages7.7G /home/wwwroot/default/yum/centos8/PowerTools2.1G /home/wwwroot/default/yum/centos8/base/Packages2.1G /home/wwwroot/default/yum/centos8/base329M /home/wwwroot/default/yum/centos8/centosplus/Packages329M /home/wwwroot/default/yum/centos8/centosplus528K /home/wwwroot/default/yum/centos8/extras/Packages528K /home/wwwroot/default/yum/centos8/extras40M /home/wwwroot/default/yum/centos8/repodata22G /home/wwwroot/default/yum/centos851G /home/wwwroot/default/yum/centos7/Packages80M /home/wwwroot/default/yum/centos7/repodata51G /home/wwwroot/default/yum/centos70 /home/wwwroot/default/yum/ubuntu0 /home/wwwroot/default/yum/ubuntu-ports0 /home/wwwroot/default/yum/oldubuntu-releases72G /home/wwwroot/default/yum/

第一个脚本sync.sh专注于同步CentOS 7的软件包。它不仅能够下载软件包,还能下载并生成必要的元数据,使得本地仓库能够像远程仓库一样被正常访问和使用。这种本地化的管理方式极大地提升了软件包的获取速度,并降低了对外部网络的依赖。

与此同时,第二个脚本ubuntu.sh则针对Ubuntu系统进行了优化。它通过rsync工具高效地同步了Ubuntu的镜像,确保了本地仓库与远程仓库的高度一致性。这种同步方式不仅快速,而且能够智能地删除本地不再需要的文件,从而节省存储空间。

结合系统存储信息的输出,我们可以看到/home/wwwroot/default/yum/目录下已经存储了大量的CentOS 7和CentOS 8的软件包,而Ubuntu的镜像目录目前虽然为空,但随时可以根据需要进行同步。这种灵活的管理方式使得存储空间得到了高效的利用。

总的来说,通过这些脚本和系统信息的结合,我们展示了如何在本地搭建和管理Linux发行版的仓库,并通过精细的管理来优化存储空间的利用。这种管理方式不仅提高了软件包获取的速度和稳定性,还降低了对外部网络的依赖,为系统管理员提供了一个高效、可靠的软件包管理解决方案。

如果喜欢这篇文章,请点下方在看,

后续推荐更多类似文章

日常运维文档
多做实验,少做自己!分享一些日常运维和学习文档,欢迎大家一起交流。
 最新文章