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.gz
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}"