rsync 및 다른 디렉토리 삭제

rsync 및 다른 디렉토리 삭제

내 스크립트 --delete --delete-after에는 basedir과 같은 디렉터리에 rsync이름이 있는 디렉터리가 있습니다 . 스크립트를 실행할 때마다 디렉터리를 삭제 하고 싶지 않습니다 . 어떤 옵션이 나에게 도움이 될까요? releasesrsync
releasesrsync고쳐 쓰다: 내 스크립트 rsync:

#/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://<iso-country-code>.rsync.archive.ubuntu.com/ubuntu should always work
RSYNCSOURCE=rsync://archive.ubuntu.com/ubuntu

# Define where you want the mirror-data to be on your mirror
BASEDIR=/home/ubuntu/

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" --exclude "releases" \
  ${RSYNCSOURCE} ${BASEDIR} || fatal "First stage of sync failed."

rsync --recursive --times --links --safe-links --hard-links \
  --stats  --delete --delete-after --exclude "releases" \
  ${RSYNCSOURCE} ${BASEDIR} || fatal "Second stage of sync failed."

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

chown 997:997 /home/ubuntu/* -R

답변1

이러한 --delete옵션은 보내는 쪽이 아닌 받는 쪽에만 존재하는 파일과 관련이 있습니다. 귀하의 질문에서 명확하지 않지만 Mohsen송신 측에 지정된 디렉토리가 있고 해당 디렉토리가 동기화되는 것 같습니다. Mohsen동기화 작업의 루트 디렉터리인 경우 소스 /경로를 추가하여 이를 방지할 수 있습니다. rsync me@remote/path/there/ local/path/here콘텐츠는 동기화되지만 there디렉터리 는 here생성되지 않습니다 there. OTOH가 Mohsen하위 디렉터리인 경우 - 옵션을 통해 해당 디렉터리(및 하위 트리)를 제외할 수 있습니다 --exclude.

답변2

귀하의 스크립트는 귀하가 요청한 것과 정확히 일치해야 합니다. 즉, releases완전히 무시하고 대상에서 삭제하지 마십시오.

제외를 더 잘 정의하고 --exclude '/releases/'이를 전송의 최상위 수준에 연결하고 디렉터리로 정의할 수 있지만 여기서는 그럴 필요가 없습니다.

관련 정보