目前有好几种办法可以用来同步yum仓库,但是都有其弊端,下面是我整理的几种yum仓库创建办法

1.使用rsync从清华源同步(缺点:平台有限制,想同步很难)

#同步c6和c7
rsync -zaP --exclude-from /usr/share/nginx/html/rsync_exclude2.txt rsync://rsync.mirrors.ustc.edu.cn/centos/7.4.1708 /usr/share/nginx/html/centos

rsync -zaP --exclude-from /usr/share/nginx/html/rsync_exclude.txt rsync://rsync.mirrors.ustc.edu.cn/centos/6.9 /usr/share/nginx/html/centos

rsync -zaP --exclude-from /usr/share/nginx/html/rsync_exclude.txt rsync://rsync.mirrors.ustc.edu.cn/epel/7/x86_64 /usr/share/nginx/html/epel/7/

rsync -zaP --exclude-from /usr/share/nginx/html/rsync_exclude.txt rsync://rsync.mirrors.ustc.edu.cn/epel/6/x86_64 /usr/share/nginx/html/epel/6/
#eclude内容
cat /usr/share/nginx/html/rsync_exclude.txt

centosplus/

cloud/

contrib/

cr/

fasttrack/

isos/

sclo/

storage/

virt/

i386/

debug/

drpms/

centos7

[root@oldboyedu ~]# cat /usr/share/nginx/html/rsync_exclude2.txt

atomic/

centosplus/

cloud/

configmanagement/

cr/

dotnet/

fasttrack/

isos/

nfv/

opstools/

paas/

rt/

sclo/

storage/

virt/

debug/

drpms/

2.使用reposync来同步仓库(操作简单,对网络要求高)

优点非常明显,但是也是有弊端的,一些rpm因为网络延迟或者过大,同步不下来

yum install yum-utils createrepo yum-plugin-priorities -y #安装包 

yum repolist #查看repoid

reposync -r base -p /data/yum #直接同步你仓库里面有的(比如阿里云的base仓库)
#-r --repoid=repoid
事例:需要同步zabbix/x86_64 reposync -r zabbix -p /data/
#注意:/后面的repoid可以省略


3.自写脚本来实现wget 拉取网上的rpm包

优点:不会遗漏包,更全,可以下载任何网上的任何包

缺点:需要写脚本,一些包下不下来,需要多次运行脚本

简单的脚本

#base源
~ ]# cat base.sh
#!/bin/bash
curl https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/ >os.bak
curl https://mirrors.aliyun.com/centos/7/extras/x86_64/Packages/ >extras.bak
curl https://mirrors.aliyun.com/centos/7/updates/x86_64/Packages/ >updates.bak
awk -F'"' /rpm/'{print $2}' os.bak >os
awk -F'"' /rpm/'{print $2}' extras.bak >extras
awk -F'"' /rpm/'{print $2}' updates.bak >updates
for i in `cat os`;
do
timeout 100 wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/$i
if [ $? -ne 0 ];then
echo "error https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/$i" >>/mnt/yum.log
rm -rf /data/yum/base/packages/$i
fi
done

for i in `cat extras`;
do
timeout 100 wget https://mirrors.aliyun.com/centos/7/extras/x86_64/Packages/$i
if [ $? -ne 0 ];then
echo "error https://mirrors.aliyun.com/centos/7/extras/x86_64/Packages/$i" >>/mnt/yum.log
rm -rf /data/yum/base/packages/$i
fi
done



for i in `cat updates`;
do
timeout 100 wget https://mirrors.aliyun.com/centos/7/updates/x86_64/Packages/$i
if [ $? -ne 0 ];then
echo "error https://mirrors.aliyun.com/centos/7/updates/x86_64/Packages/$i" >>/mnt/yum.log
rm -rf /data/yum/base/packages/$i
fi
done

#epel源
~]# cat epel.sh
#!/bin/bash

for i in {a..z};
do
curl https://mirrors.aliyun.com/epel/7/x86_64/Packages/$i/ > ${i}.txt
awk -F'"' /rpm/'{print $2}' ${i}.txt >>${i}_rpm
for y in `cat ${i}_rpm` ;
do
timeout 60 wget -O /data/yum/epel/packages/$i https://mirrors.aliyun.com/epel/7/x86_64/Packages/$i/$y
if [ $? -ne 0 ];then
echo "error https://mirrors.aliyun.com/epel/7/x86_64/Packages/$i/$y" >> /var/yum.log
rm -rf /data/yum/epel/packages/$y
fi
sleep 0.1
done

sleep 2
done
for i in {0,2,3,4,9};
do
curl https://mirrors.aliyun.com/epel/7/x86_64/Packages/$i/ > ${i}.txt
awk -F'"' /rpm/'{print $2}' ${i}.txt >>${i}_rpm
for y in `cat ${i}_rpm` ;
do
timeout 60 wget -O /data/yum/epel/packages/$i https://mirrors.aliyun.com/epel/7/x86_64/Packages/$i/$y
if [ $? -ne 0 ];then
echo "error https://mirrors.aliyun.com/epel/7/x86_64/Packages/$i/$y" >> /var/yum.log
rm -rf /data/yum/epel/packages/$y
fi
sleep 0.1
done

sleep 2
done
#其他的源只要更换地址即可



创建repodir

createrepo /var/ftp/location/ 


配置nginx,生成本地远程yum源

yum install nginx -y



~]# cat /etc/nginx/conf.d/yum.conf
server {
listen 80;
server_name 10.100.15.30;
location / {
root /data/yum;
autoindex on;
}
}

systemctl start nginx


生成yum.repo

~]# cat local.repo 
[BASE]
name = Local Base Repository
baseurl = http://10.100.15.30/base/
enable = 1
gpgcheck = 0

[epel]
name = Local epel Repository
baseurl = http://10.100.15.30/epel/
enable = 1
gpgcheck = 0

[extends]
name = Local extends Repository
baseurl = http://10.100.15.30/extends/
enable = 1
gpgcheck = 0



下面我们就可以执行下面的命令来安装yun源啦(只要是可以访问yum服务器地址的即可)

gzip /etc/yum.repos.d/*.repo && curl -o /etc/yum.repos.d/local.repo http://10.100.15.30/local.repo && yum makecache