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

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

1,安装httpd,rsync,vsftpd

yum -y install httpd rsync vsftpd

mkdir /var/www/html/centos

#由于vsftpd不支持软链接改变目录,所以下面操作效果一样,使内部网络通过http和ftp都可以访问

mount --bind /var/www/html/centos /var/ftp/pub

chkconfig httpd on

chkconfig vsftpd on

service httpd start

service vsftpd start

2,rsync同步脚本如下

#!/bin/bash # base value # 要同步的源 YUM_SITE="rsync://mirrors.kernel.org/centos/" # 本地存放目录 LOCAL_PATH="/var/www/html/centos/" # 需要同步的版本,我只需要5和6版本还有7的,总共在120G左右,不包括iso会少点 LOCAL_VER="5 5* 6 6* 7 7*" # 同步时要限制的带宽 BW_limit=2048 # 记录本脚本进程号 LOCK_FILE="/var/log/yum_server.pid" # 同步日志文件 LogFile=/root/rsyumlog/`date +"%Y-%m-%d"`.log # 如用系统默认rsync工具为空即可。 # 如用自己安装的rsync工具直接填写完整路径 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 echo "rsync start at $(date +"%Y-%m-%d %H:%M:%S")" >$LogFile echo "--------------------------------------------------" >>$LogFile 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"  >>$LogFile      echo "--------------------------------------------------" >>$LogFile     $RSYNC_PATH -avrtH --delete --bwlimit=$BW_limit  $YUM_SITE$VER $LOCAL_PATH  >>$LogFile done echo "rsync end at $(date +"%Y-%m-%d %H:%M:%S")" >>$LogFile echo "--------------------------------------------------" >>$LogFile done # clean lock file `/bin/rm -rf $LOCK_FILE` echo 'sync end.' exit 1

3,计划任务

每天凌晨更新

23 59 * * *  /root/yumrsync

4,客户端配置

编辑/etc/yum.repos.d/CentOS-Base.repo

find /etc/yum.repos.d/  -type f  -name "*.repo"  -exec cp {} {}.bak \;

find /etc/yum.repos.d/  -name "*.repo" | xargs sed -i 's/#baseurl=http:\/\/mirror.centos.org/baseurl=http:\/\/192.168.0.100/g'

可用上面命令修改,得到结果如下:

#base

[base]

name=CentOS-$releasever – Base

baseurl=http://192.168.0.100/centos/$releasever/os/$basearch/

enabled=1

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

#released updates

[updates]

name=CentOS-$releasever – Updates

baseurl=http://192.168.0.100/centos/$releasever/updates/$basearch/

enabled=1

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

#additional packages that may be useful

[extras]

name=CentOS-$releasever – Extras

baseurl=http://192.168.0.100/centos/$releasever/extras/$basearch/

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

#additional packages that extend functionality of existing packages

[centosplus]

name=CentOS-$releasever – Plus

baseurl=http://192.168.0.100/centos/$releasever/centosplus/$basearch/

gpgcheck=1

enabled=0

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

#contrib – packages by Centos Users

[contrib]

name=CentOS-$releasever – Contrib

baseurl=http://192.168.0.100/centos/$releasever/contrib/$basearch/

gpgcheck=1

enabled=0

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏乐沙弥的世界

基于Innobackupex的完全恢复

    对于MySQL的完全恢复,我们可以借助于Innobackupex的多重备份加上binlog来将数据库恢复到故障点。这里的完全恢复是相对于时点恢复(也叫...

1232
来自专栏Golang语言社区

Go语言使用protobuf数据通信--师出同门,懂的人理解吧

protobuf作为通信方式,之前在做APP的时候实际用过,5月份服务器架构我准备使用protobuf作为前端和服务器的通信方式 给大家免费讲解下通...

3354
来自专栏杨建荣的学习笔记

Oracle 12c DG新特性Far Sync(r10笔记第67天)

Oracle的Data Guard技术再11g中有了Active Data Guard,就产生了很多的技术解决方案,比如读写分离,多活的技术支撑等。 12c 中...

5027
来自专栏IT笔记

SpringBoot开发案例之整合定时任务(Scheduled)

来来来小伙伴们,基于上篇的邮件服务,定时任务就不单独分项目了,天然整合进了邮件服务中。

4117
来自专栏difcareer的技术笔记

Android编译后运行emulator注意事项

在编译完了,同一个shell执行emulator没有问题,但如果新开shell,会发现emualtor报错:

652
来自专栏SpringBoot 核心技术

第二十八章:SpringBoot使用AutoConfiguration自定义Starter

2207
来自专栏专注研发

IDEA环境下SSM整合------环境配置

一、做不出详细的概念叙述和文本设计,本文主要以实战步骤为主,少量解释为辅助,下面请大家牢记两幅图:

1371
来自专栏杨建荣的学习笔记

Greenplum集群部署小记

Greenplum的分布式架构方案MPP对于海量数据处理还是很给力的,今天专门抽时间搭建了一下测试环境。

2832
来自专栏快乐八哥

Angular企业级开发(4)-ngResource和REST介绍

一、RESTful介绍 ? RESTful维基百科 REST(表征性状态传输,Representational State Transfer)是Roy Fie...

1937
来自专栏IT笔记

SpringBoot开发案例之整合定时任务(Scheduled)

来来来小伙伴们,基于上篇的邮件服务,定时任务就不单独分项目了,天然整合进了邮件服务中。 不知道,大家在工作之中,经常会用到那些定时任务去执行特定的业务,这里列举...

3623

扫码关注云+社区

领取腾讯云代金券