用rsync同步yum源到本地服务器

大家都知道,使用yum来安装或者更新现有的包是最方便不过的了,但是有的时候服务器出于安全方面考虑,一般只许进不许出,那怎么办?那有同学就说了,这个简单啊,搞个本地源不就好了,其实这个方法不是不行,只不过ISO自带的包一般都比较旧,那我想更新咋办?所以还是不能满足需求。

既然服务器不让我通过互联网下载需要的包,那我直接把网上的源搬到我本地服务器不就好了,我局域网安装或者更新也快,前提是,你得准备一台放置yum源的服务器,磁盘空间要够大,500G以上,最最重要的是,能访问互联网!

yum install -y httpd rsync

vi /etc/httpd/conf/httpd.conf

把 #ServerName www.example.com:80
改成 ServerName localhost:80

把欢迎页删掉
rm -f /etc/httpd/conf.d/welcome.conf

新建一个centos目录放置从互联网上同步下来的rpm包
mkdir /var/www/html/centos

把以下同步脚本放置到合适的目录下即可,别忘了添加执行权限

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~开始~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

#!/bin/bash
YUM_SITE="rsync://mirrors.kernel.org/centos/"
#存放路径,我这里直接用的是httpd默认根目录
LOCAL_PATH="/var/www/html/centos/"
#需要同步哪些目录
LOCAL_VER=‘./‘
BW_limit=2048
LOCK_FILE="/var/log/yum_server.pid"
RSYNC_PATH=""

# check update yum server pid
MY_PID=$$
if [ -f $LOCK_FILE ]; then
get_pid=`/bin/cat $LOCK_FILE`
get_system_pid=`/bin/ps -ef|grep -v grep|grep $get_pid|wc -l`
if [ $get_system_pid -eq 0 ] ; then
echo $MY_PID>$LOCK_FILE
else
echo "Have update yum server now!"
exit 1
fi
else
echo $MY_PID>$LOCK_FILE
fi

# check rsync tool
if [ -z $RSYNC_PATH ]; then
RSYNC_PATH=`/usr/bin/whereis rsync|awk ‘ ‘‘{print $2}‘`
if [ -z $RSYNC_PATH ]; then
echo ‘Not find rsync tool.‘
echo ‘use comm: yum install -y rsync‘
fi
fi

# sync yum source
for VER in $LOCAL_VER;
do
# Check whether there are local directory
if [ ! -d "$LOCAL_PATH$VER" ] ; then
echo "Create dir $LOCAL_PATH$VER"
`/bin/mkdir -p $LOCAL_PATH$VER`
fi
# sync yum source
echo "Start sync $LOCAL_PATH$VER"
$RSYNC_PATH -avrtH --delete --bwlimit=$BW_limit --exclude "isos" $YUM_SITE$VER $LOCAL_PATH
done

# clean lock file
`/bin/rm -f $LOCK_FILE`

echo "rsync end $(date +%Y-%m-%d_%k:%M:%S)" >> /var/www/html/centos/centos_rsync_is_end.txt
exit 1

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~结束~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

同步的过程可能会很久,整个yum源有400多G,所以脚本会在全部同步完以后,生成一个时间文件在/var/www/html/centos_rsync_is_end.txt
假设你已经全部同步完,就启动httpd服务

service httpd start

然后把以下repo文件放置到你的yum源客户端的/etc/yum.repo.d/下,后缀名必须是repo,我这边yum源服务端IP是192.168.1.69

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~开始~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

[base]
name=CentOS - base
baseurl=http://192.168.1.69/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://192.168.1.69/centos/RPM-GPG-KEY-CentOS-6

[updates]
name=CentOS - updates
baseurl=http://192.168.1.69/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://192.168.1.69/centos/RPM-GPG-KEY-CentOS-6

[extras]
name=CentOS - extras
baseurl=http://192.168.1.69/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://192.168.1.69/centos/RPM-GPG-KEY-CentOS-6

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~结束~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
到这里你就基本上完成了一个本地yum源服务器的搭建,现在还少一个定时任务,让rsync每天凌晨3点去同步一次互联网上的yum源

crontab -e
添加一条定时任务
* 3 * * * /bin/bash /etc/yum.repos.d/centos.yum.sh > /dev/null &

时间: 2024-09-30 20:54:16

用rsync同步yum源到本地服务器的相关文章

用reposync 同步YUM源到本地,搭建本地YUM源服务器

之前总结的搭建本地yum源是通过rsync直接同步其他在线的yum源,例如清华大学大YUM源,但是类似的阿里云的yum源,因为其不支持rsync所以不能进行同步, 同样的,想要同步其他一些官方的YUM源,也要对方支持rsync才能支持同步,而有很希望安装的YUM源并不支持rsync,这样怎么办呢? 因上述原因我想到了另一种思路去同步"所有"我想同步的YUM源,并且搭建成本地可用的YUM源,下面记录下我的思路. 1.首先预备好一台nginx或者apache的server来做本地的YUM源

用rsync同步公网centos yum源做本地yum源服务器

1,安装httpd,rsync,vsftpd yum -y install httpd rsync vsftpd mkdir /var/www/html/centos #由于vsftpd不支持软连接改变目录,所以下面操作效果一样 mount --bind /var/www/html/centos /var/ftp/pub chkconfig httpd on chkconfig vsftpd on service httpd start service vsftpd start 2,rsync同

CentOS7同步远程yum源到本地

应用场景: 今天有朋友问我,说他搭建cloudstack测试环境,但是安装包不太好下,要一个个手动去wget,我就问他,几个包可以这么做,要很多包咋办,其实我们在同步远程一些安装包的时候,通常会用到reposync这个命令,本篇文章也是通过这条命令来下载cloudstack安装包: 1.配置selinux为disabled [[email protected] ~]# cat /etc/selinux/config  # This file controls the state of SELin

centos 创建本地yum源搭建本地yum仓库 亲测可用

现在如果我们需要大规模部署洗个系统,或者系统需要安装一个什么软件如nginx之类的软件.有的时候你的环境限制你上外网,或者是外网很慢的时候.我们考虑搭建本地yum仓库,内网机器可以直接快速安装所需的软件,解决linux下面的包的依赖,方便,快捷. 下面我们来搭建一下根底yum仓库: 系统:centos6.5 搭建yum仓库有很多种方法,我们这里使用yum插件yum-downloadonly插件来下载我们所需的rpm包.使用createrepo来创建仓库文件. 开始: 我们需要安装zabbix监控

在Centos6.5中配置国内网络yum源以及本地yum源

一.本地yum     1.       创建目录.挂载光盘以及安装createrepo [[email protected] ~]# mkdir/mnt/cdrom                  ←用于挂载光盘 [[email protected] ~]# mkdir-vp /yum/localrepo    ←用于存放光盘中的rpm包 mkdir: 已创建目录 "/yum" mkdir: 已创建目录 "/yum/localrepo" [[email prot

yum源配置(本地镜像)

yum info xxx, yum list,yum list xxx.yum list updatesyum search xxx, yum search all xxx,yum search all yum installyum remove yum clean allyum makecacheyum repolist all yum 的软件群组功能 yum grouplist|groupinstall|groupremove 常用命令[[email protected] ~]# yum s

本地yum源搭建及failed to retrieve解决

第1章 yum是什么 YUM(Yellow dog Updater Modified)为多个Linux发行版的软件包管理器,例如Redhat RHEL,CentOS&Fedoro. YUM主要用于自动安装.升级rpm软件包,它能自动查找并解决rpm包之间的依赖关系. YUM自动下载rpm包并安装.类似某软件的一键安装. 1.1 yum源是什么? 要成功的使用YUM工具安装更新软件或系统,就需要有一个包含各种rpm软件包的repository(软件仓库),这个软件仓库我们习惯称为yum源. 网络上

rsync+nginx实现公网yum源

整个过程分3步: 1:nginx提供目录浏览功能 nginx直接yum安装,不废话,直接贴配置文件 [[email protected] ~]# cat /etc/nginx/nginx.conf worker_processes auto; events { worker_connections 1024; } http { include mime.types; charset utf-8; default_type application/octet-stream; sendfile on

CentOS 6.* 配置本地网络 yum源

CentOS 6.* 配置本地网络yum源 一台服务时只需要配一个本地的yum源即可:当需要配置多台服务器时,只需要配置1到2台vsftpd的yum源,其它服务器通过ftp连接yum源: 1 基于本地文件的yum源 1.1 下载镜像源 wget -b https://mirrors.aliyun.com/centos/6.10/isos/x86_64/CentOS-6.10-x86_64-bin-DVD1.iso tail -100f wget-log 1.2 挂载iso镜像文件 ll /mnt