unbuntu 安装things_创建Ubuntu安装包服务镜像的脚本

创建Ubuntu安装包服务镜像的脚本

为了创建一个可靠的镜像服务,需要包含所有的文件,以及在正确的时候。 'File not found'-错误会引起很多问题,给使用者带来烦恼。这里提供了一个脚本来同步镜像文件,并且防止出现 404 错误(http的文件找不到的错误码)。

镜像创建与使用流程

创建Ubuntu安装包服务镜像可以加速Ubuntu的安装包安装速度,避免重复下载,节约出口网络带宽。一般包括:

镜像安装包原始文件,因为一些设置,直接rsync可能无法使用,可以使用这里的脚本。

客户机设置,将apt-get的安装源指向新的服务URL。

编辑/etc/apt/sources.list文件,将其中的地址替换为新的地址。

定期更新镜像文件,可以通过设定任务来完成。

ubumirror

可以使用

Archive mirrors

为了存档mirrors, 在 Packages.gz-文件更新前不要删除 packages是非常重要的,该文件保存了packages可用的很多种重要信息。因此,需要 'Two stage sync'。意味着,首先下载新的packages, 然后再下载Packages.gz 。 下载完 Packages.gz后, 再删除 old packages就是安全的。

The script

#/bin/dash

fatal() {

echo "$1"

exit 1

}

warn() {

echo "$1"

}

# Find a source mirror near you which supports rsync on

# https://launchpad.net/ubuntu/+archivemirrors

# rsync://.rsync.archive.ubuntu.com/ubuntu should always work

#RSYNCSOURCE=rsync://archive.ubuntu.mirror.isp.com/ubuntu

# 实验发现rsync不通了,用下面这个:

RSYNCSOURCE=archive.ubuntu.com::ubuntu

# Define where you want the mirror-data to be on your mirror

#BASEDIR=/var/www/ubuntuarchive/

# 改成自己的目录:

BASEDIR=/media/smw/Appdata/ipfs-export/mirrors/ubuntu

echo "From:" $RSYNCSOURCE

echo "To:" $BASEDIR

if [ ! -d ${BASEDIR} ]; then

warn "${BASEDIR} does not exist yet, trying to create it..."

mkdir -p ${BASEDIR} || fatal "Creation of ${BASEDIR} failed."

fi

rsync --recursive --times --links --safe-links --hard-links \

--stats \

--exclude "Packages*" --exclude "Sources*" \

--exclude "Release*" --exclude "InRelease" \

${RSYNCSOURCE} ${BASEDIR} || fatal "First stage of sync failed."

rsync --recursive --times --links --safe-links --hard-links \

--stats --delete --delete-after \

${RSYNCSOURCE} ${BASEDIR} || fatal "Second stage of sync failed."

date -u > ${BASEDIR}/project/trace/$(hostname -f)

Releases mirrors

对于 Releases mirrors, 事情就没有那么复杂了。因为 files之间没有依赖, 可以直接使用rsync。

The script

#/bin/dash

fatal() {

echo "$1"

exit 1

}

warn() {

echo "$1"

}

# Find a source mirror near you which supports rsync on

# https://launchpad.net/ubuntu/+cdmirrors

# rsync://.rsync.releases.ubuntu.com/releases should always work

RSYNCSOURCE=rsync://releases.ubuntu.mirror.isp.com/releases

# Define where you want the mirror-data to be on your mirror

BASEDIR=/var/www/ubuntureleases/

if [ ! -d ${BASEDIR} ]; then

warn "${BASEDIR} does not exist yet, trying to create it..."

mkdir -p ${BASEDIR} || fatal "Creation of ${BASEDIR} failed."

fi

rsync --verbose --recursive --times --links --safe-links --hard-links \

--stats --delete-after \

${RSYNCSOURCE} ${BASEDIR} || fatal "Failed to rsync from ${RSYNCSOURCE}."

date -u > ${BASEDIR}/.trace/$(hostname -f)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值