使用 shell 脚本同步 yum 源建立本地私有仓库
文章目录
事出有因
脚本内容
#!/usr/bin/env bash
base_dir="$(cd `dirname $0`;pwd)"
repofile_dir="${base_dir}/repofiles"
log_dir="${base_dir}/logs"
now_time="$(date +%F)"
now_time_hms="%FT%H_%M_%S"
log_file="${log_dir}/${now_time}.log"
repo_data_dir='/data/nginx'
repo_src_dir='/etc/yum.repos.d'
function error_log () {
local log_time_style="$(date +${now_time_hms})"
echo "[ERR] [${log_time_style}] [$@]" >> ${log_file}
}
function info_log () {
local log_time_style="$(date +${now_time_hms})"
echo "[INF] [${log_time_style}] [$@]" >> ${log_file}
}
function check_status () {
if [ $? -eq 0 ];then
info_log "createrepo ${@} success"
else
error_log "createrepo ${@} fail"
fi
}
[ -d "${log_dir}" ] || mkdir -p "${log_dir}"
for reponame in centos docker-ce epel kubernetes
do
rm -f ${repo_src_dir}/*.repo
cp ${repofile_dir}/${reponame}.repo ${repo_src_dir}/
if [ ! -d "${repo_data_dir}/${reponame}" ];then
mkdir ${repo_data_dir}/${reponame}
reposync_cmd="reposync -p"
else
reposync_cmd="reposync -np"
fi
${reposync_cmd} ${repo_data_dir}/${reponame}
if [ $? -eq 0 ];then
info_log "sync ${reponame} success"
if [[ "${reponame}"x == "centos"x ]];then
for repotype in base extras updates
do
createrepo -p ${repo_data_dir}/${reponame}/${repotype}/Packages/
check_status "${reponame}/${repotype}"
done
fi
if [[ "${reponame}"x != "centos"x ]];then
createrepo -p ${repo_data_dir}/${reponame}/${reponame}/Packages/
check_status "${reponame}"
fi
else
error_log "sync ${reponame} fail"
fi
done
find ${log_dir} -type f -name "*.log" -mtime +3 | xargs -i rm -f {}
前端展示
