amd64 없이 모든 아치를 제외하는 방법 Rsync

amd64 없이 모든 아치를 제외하는 방법 Rsync

amd64가 없는 모든 아치를 제외하는 Linux에서 rsync용 작은 스크립트를 만들었지만 모든 아치를 다운로드합니다.

스크립트에 어떤 문제가 있나요?

#!/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정확히 호출되는 항목은 없지만 and 가 armhf많이 표시되므로 제외하려는 항목이 있다고 가정합니까?Contents-armhf.gzbinary-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}"

관련 정보