# 假设A服务器为源文件,B服务器为接收A推送文件的目标服务器。
# A服务器创建无密码的公钥
#ssh-keygen -f ~/.ssh/id_rsa -q -P “”
# A的公钥拷贝到B服务器,实现登录免密
#scp ~/.ssh/id_rsa.pub user@10.1.1.1/home/user/.ssh/authorized_keys
if [ -f /var/tmp/rsync_updates ]; then
echo “Updates via rsync already running.”
exit 0
fi
if [ -d /home/update/centos7 ] ; then
touch /var/tmp/rsync_updates
# 同步tsinghua的centos7最新包
rsync -aqzSHP –delete –exclude “local*” –exclude “isos” –exclude “atomic” –exclude “cloud” –exclude “dotnet” –exclude “configmanagement” –exclude “cr” –exclude “fasttrack” –exclude “infra” –exclude “messaging” –exclude “nfv” –exclude “opstools” –exclude “paas” –exclude “rt” –exclude “sclo” –exclude “storage” –exclude “virt” mirrors.tuna.tsinghua.edu.cn::centos/7/ /home/update/centos7/
# 同步tsinghua的epel7最新包
rsync -aqzSHP –delete –exclude “local*” –exclude “SRPMS” –exclude “aarch64” –exclude “ppc64” –exclude “ppc64le” –exclude “source” mirrors.tuna.tsinghua.edu.cn::epel/7/ /home/update/epel7/
# 推送centos7的最新包到下游更新服务器
rsync -aqzSHP –delete -e ‘ssh -p 22 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null’ /home/update/centos7/ user@10.1.1.1:/home/user/www/centos7/
# 推送epel7的最新包到下游更新服务器
rsync -aqzSHP –delete -e ‘ssh -p 22 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null’ /home/update/epel7/ user@10.1.1.1:/home/user/www/epel7/
/bin/rm -f /var/tmp/rsync_updates
else
echo “Target directory /home/update/centos7 not present.”
fi
============BTW:rsync参数说明
-a, –archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
-v, –verbose 详细模式输出
-q, –quiet 精简输出模式
-S, –sparse 对稀疏文件进行特殊处理以节省DST的空间
-H, –hard-links 保留硬链结
-P, -partial 保留那些因故没有完全传输的文件,以是加快随后的再次传输
-z, –compress 对备份的文件在传输时进行压缩处理
用LFTP同步更新源的最新文件
# lftp 的弊病就是在保存现有文件方面不够可靠:它经常会因为不健全的时戳而重新下载完整的文件;然而忽略时戳却又会导致那些如 repodata 等拥有相同名称但新内容及时戳的文件不能被下载。
lftp -e ‘open http:///centos/ && mirror -c –delete 6.8 && exit’
讚讚
server {
listen 80 default_server;
server_name _;
location / {
# 仓库文件路径
root /share/;
# 开启目录显示功能
autoindex on;
# 关闭详细文件大小统计,默认为b,以kb、mb、gb为单位显示
autoindex_exact_size off;
# 开启以服务器时区显示文件修改日期
autoindex_localtime on;
# 以html风格将目录展示在浏览器中
autoindex_format html;
charset utf-8,gbk;
}
}
==============
yum -y install createrepo yum-utils
# 使用阿里云镜像站配置文件
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 创建存储仓库路径
mkdir -p /share/centos7/os/{base,extras,updates}
# 使用reposync同步镜像到本地
reposync -r base -p /share/centos7/os/
reposync -r extras -p /share/centos7/os/
reposync -r updates -p /share/centos7/os/
# 创建yum仓库
createrepo /share/centos7/os/base/
createrepo /share/centos7/os/extras/
createrepo /share/centos7/os/updates/
=============
#!/bin/bash
kill -9 $(ps -aux | grep rsync | grep -v grep | awk ‘{print $2}’)
# 待同步仓库
repos=(“centos” “epel”)
# repo存储路径
mirrorsdir=”/share/”
# 中科大镜像站rsync地址
# URL=”rsync://rsync.mirrors.ustc.edu.cn/repo/”
# 清华大学镜像站rsync地址
URL=”rsync://mirrors.tuna.tsinghua.edu.cn/”
if [ ! -d “${mirrorsdir}” ]; then
echo “创建镜像仓库路径:${mirrorsdir}”
mkdir -p ${mirrorsdir}
fi
# 同步仓库
for repo in ${repos[@]}; do
if [ ! -d “${mirrorsdir}/${repo}” ]; then
echo “创建${repo}镜像仓库路径”
mkdir -p ${mirrorsdir}/${repo}
fi
echo “开始同步${repo}相关镜像文件”
rsync -avzSPH –delete ${URL}${repo}/ ${mirrorsdir}${repo}/
done
================
vi update.sh
#!/bin/bash
datetime=`date +”%Y-%m-%d”`
exec > /var/log/repoupdate.log
# 同步镜像源
reposync -d -r base -p /share/centos7/os/
# 每次添加新的rpm时,必须更新索引信息
if [ $? -eq 0 ];then
createrepo –update /share/centos7/os/x86_64
echo “SUCESS: $datetime epel update successful”
else
echo “ERROR: $datetime epel update failed”
fi
讚讚
wget -O /etc/yum.repos.d/CentOS-Base.repo ftp://1.1.1.1/CentOS-Base7.repo
curl -o /etc/yum.repos.d/epel.repo ftp://1.1.1.1/epel7.repo
============
[base]
name=CentOS-$releasever – Base
baseurl=ftp://1.1.1.1/centos7/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
protect=1
priority=1
enabled=1
[updates]
name=CentOS-$releasever – Updates
baseurl=ftp://1.1.1.1/centos7/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
protect=1
priority=1
enabled=1
[extras]
name=CentOS-$releasever – Extras
baseurl=ftp://1.1.1.1/centos7/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
protect=1
priority=1
enabled=1
[centosplus]
name=CentOS-$releasever – Plus
baseurl=ftp://1.1.1.1/centos7/centosplus/$basearch/
exclude=kernel*
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
protect=0
priority=1
[contrib]
name=CentOS-$releasever – Contrib
baseurl=ftp://1.1.1.1/centos7/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
protect=0
priority=3
=================
[epel]
name=Extra Packages for Enterprise Linux 7 – $basearch
baseurl=ftp://1.1.1.1/epel7/$basearch
#metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
[epel-debuginfo]
name=Extra Packages for Enterprise Linux 7 – $basearch – Debug
baseurl=ftp://1.1.1.1/epel7/$basearch/debug
#metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-7&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
gpgcheck=1
[epel-source]
name=Extra Packages for Enterprise Linux 7 – $basearch – Source
baseurl=ftp://1.1.1.1/epel7/SRPMS
#metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-source-7&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
gpgcheck=1
讚讚