Rsync如何排除所有没有amd64的arch

Rsync如何排除所有没有amd64的arch

在 Linux 上制作了一些用于 rsync 的小脚本,排除了所有没有 amd64 的 arch,但它正在下载所有 arch。

脚本有什么问题?

#!/bin/sh
# This is a sample mirroring script.
HOME="/tmp/http"
TARGET="${HOME}/debian"
TMP="${HOME}/.tmp/debian"
LOCK="/tmp/rsync-debian.lock"
ARCH_EXCLUDE="alpha arm armel armhf hppa hurd-i386 i386 ia64 kfreebsd-amd64 kfreebsd-i386 m68k mipsel mips powerpc s390 s390x sh sparc source"
rsync_exclude=""
for item in $ARCH_EXCLUDE; do
    rsync_exclude="$rsync_exclude --exclude $item"
done

# NOTE: You'll probably want to change this or remove the --bwlimit setting in
# the rsync call below
BWLIMIT=10000

SOURCE="rsync://ftp.fr.debian.org/debian/"

[ ! -d "${TARGET}" ] && mkdir -p "${TARGET}"
[ ! -d "${TMP}" ] && mkdir -p "${TMP}"

exec 9>"${LOCK}"
flock -n 9 || exit

if ! stty &>/dev/null; then
    QUIET="-q"
fi

rsync $rsync_exclude \
    -rtlvH \
    --safe-links \
    --bwlimit=${BWLIMIT} \
    --delete-after --progress \
    -h ${QUIET} \
    --timeout=600 \
    --contimeout=120 -p \
    --delay-updates \
    --no-motd \
    --temp-dir="${TMP}" \
    ${SOURCE} \
    "${TARGET}"

答案1

您的脚本对我来说看起来不错(尽管我没有尝试运行它),所以您可能存在模式不匹配。例如,查看时ftp.fr.debian.org我没有看到任何被精确调用的内容armhf,但我看到很多Contents-armhf.gzand binary-armhf,所以我认为这些是您想要排除的内容?

尝试这个:

rsync_exclude="$rsync_exclude --exclude *$item*"

这样选项就变成了--exclude *armhf*(星号在本例中不应扩展,但您需要添加引号才能在提示符下直接键入)。

如果您尝试更新已包含其他体系结构的本地副本,那么您应该添加--delete-excluded.

答案2

是的,已经解决了我的 bash 脚本问题,分享了这个:https://github.com/liberodark/linux-mirroring

转载于此:

#!/bin/sh
# This is a sample mirroring script.
HOME="/tmp/http"
TARGET="${HOME}/debian"
TMP="${HOME}/.tmp/debian"
LOCK="/tmp/rsync-debian.lock"
#EXCLUDE="${alpha arm armel armhf hppa hurd-i386 i386 ia64 kfreebsd-amd64 kfreebsd-i386 m68k mipsel mips powerpc s390 s390x sh sparc source}"

# NOTE: You'll probably want to change this or remove the --bwlimit setting in
# the rsync call below
BWLIMIT=10000

SOURCE="rsync://ftp.fr.debian.org/debian/"

[ ! -d "${TARGET}" ] && mkdir -p "${TARGET}"
[ ! -d "${TMP}" ] && mkdir -p "${TMP}"

exec 9>"${LOCK}"
flock -n 9 || exit

if ! stty &>/dev/null; then
    QUIET="-q"
fi

rsync --exclude 'source*' \
    --exclude '*.debian.tar.xz' \
    --exclude '*.orig.tar.xz' \
    --exclude '*.orig.tar.bz2' \
    --exclude '*.dsc' \
    --exclude '*_arm64.deb' \
    --exclude '*_armel.deb' \
    --exclude '*_armhf.deb' \
    --exclude '*_i386.deb' \
    --exclude '*_mips.deb' \
    --exclude '*_mips64el.deb' \
    --exclude '*_mipsel.deb' \
    --exclude '*_ppc64el.deb' \
    --exclude '*_s390x.deb' \
    --exclude 'binary-arm64*' \
    --exclude 'binary-armel*' \
    --exclude 'binary-armhf*' \
    --exclude 'binary-i386*' \
    --exclude 'binary-mips*' \
    --exclude 'binary-mips64el*' \
    --exclude 'binary-mipsel*' \
    --exclude 'binary-ppc64el*' \
    --exclude 'binary-s390x*' \
    --exclude 'installer-arm64*' \
    --exclude 'installer-armel*' \
    --exclude 'installer-armhf*' \
    --exclude 'installer-i386*' \
    --exclude 'installer-mips*' \
    --exclude 'installer-mips64el*' \
    --exclude 'installer-mipsel*' \
    --exclude 'installer-ppc64el*' \
    --exclude 'installer-s390x*' \
    --exclude 'Contents-arm64*' \
    --exclude 'Contents-armel*' \
    --exclude 'Contents-armhf*' \
    --exclude 'Contents-i386*' \
    --exclude 'Contents-mips*' \
    --exclude 'Contents-mips64el*' \
    --exclude 'Contents-mipsel*' \
    --exclude 'Contents-ppc64el*' \
    --exclude 'Contents-s390x*' \
    --exclude 'Contents-udeb-arm64*' \
    --exclude 'Contents-udeb-armel*' \
    --exclude 'Contents-udeb-armhf*' \
    --exclude 'Contents-udeb-i386*' \
    --exclude 'Contents-udeb-mips*' \
    --exclude 'Contents-udeb-mips64el*' \
    --exclude 'Contents-udeb-mipsel*' \
    --exclude 'Contents-udeb-ppc64el*' \
    --exclude 'Contents-udeb-s390x*' \
    -rtlvH \
    --safe-links \
    --bwlimit=${BWLIMIT} \
    --delete-after --progress \
    -h ${QUIET} \
    --timeout=600 \
    --contimeout=120 -p \
    --delay-updates \
    --no-motd \
    --temp-dir="${TMP}" \
    ${SOURCE} \
    "${TARGET}"

相关内容