rsync: 대상의 최신 파일을 덮어쓸 때 표시

rsync: 대상의 최신 파일을 덮어쓸 때 표시

일부 파일을 중앙 서버로 업데이트하는 명령을 실행하고 있습니다.
이 명령은 먼저 a를 실행하여 --dry-run전송될 파일을 표시합니다. 서버에 있는 새로운 파일을 덮어써야 할 수도 있습니다. 이 경우 명령을 구체적으로 표시하고
싶습니다 .rsync --dry-run

현재 rsync 명령은 다음과 같습니다

rsync -aviO sdir/ ddir

명령이 출력을 생성한다고 가정합니다.

 >f.st...... file-newer-on-source
 >f.st...... file-newer-on-destination

명확하게 하기 위해 rsync -aviuO sdir/ ddir(--update)를 실행하면 일반적으로 다음과 같은 결과가 발생합니다.

 >f.st...... file-newer-on-source

하지만 새로운 파일을 덮어쓸 때 명령이 표시되기를 원합니다! 현재 와 file-newer-on-source​​출력에는 차이가 없습니다 ...-destination. 이런거 있으면 좋을텐데

 >f.st...... file-newer-on-source
 >f.sT...... file-newer-on-destination

그러나 그것은 진실이 아니다.

out-format구체적으로 표시되는 다른 옵션이나 설정이 있습니까?최신파일을 덮어쓰시겠습니까?

답변1

볼 위치는 -v(자세히) 옵션에 있으며 반복할 수 있습니다. 이는 요청된 정보를 정확하게 제공하지 않습니다.

그러나 다른 옵션과 함께 다른 부분을 실행하여 원하는 것을 만들 수 있습니다(참조맨페이지):

-u, --update
수신기의 최신 파일 건너뛰기

--existing은
싱크에서 새 파일 생성을 건너뜁니다.

--ignore-existing은
싱크에 있는 파일 업데이트를 건너뜁니다.

-u다음은 and를 사용한 예입니다 --existing.

#!/bin/sh
# $Id: check-rsync,v 1.3 2022/10/11 20:02:24 tom Exp $
# Make a readable report showing whether files would be added (+), deleted (-),
# updated (>) or downdated (<) using rsync between two directories.
#
# Updates to directories are ignored.
#
# author: Thomas E. Dickey (2015)

usage() {
    cat >&2 <<-EOF
    usage: check-rsync [-d] [source] [target]
EOF
    exit 1
}

OPTS=
while [ $# != 0 ]
do
    case .$1 in
    (.-*)
        OPTS="$OPTS $1"
        shift 1
        ;;
    (*)
        break
        ;;
    esac
done

[ $# = 2 ] || usage
[ -d "$1" ] || usage
[ -d "$2" ] || usage

LANG=C
export LANG

SOURCE=$1
TARGET=$2

MYTEMP=$(mktemp -d)
trap "cd; rm -rf $MYTEMP" EXIT

syncit() {
    rsync "$@" -n -vaz --delete $OPTS "$SOURCE"/ "$TARGET" | \
        sed -e '/^\(sending\|sent\|total\) /d' \
            -e '/^$/d' \
            -e '/^\.\//d' \
            -e '/\/$/d' | \
        sort
}

cd "$MYTEMP" || exit

syncit              >all-updates
syncit -u           >was-newer
syncit --existing       >was-existing

comm -23 all-updates was-existing | \
    sed -e '/^deleting /d' \
        -e 's/^/+ /' >>report
comm -23 all-updates was-newer | \
    sed -e '/^deleting /d' \
        -e 's/^/< /' >>report
sed -e 's/^deleting /- /' -e t -e d all-updates >>report

comm -12 all-updates was-newer | \
    sed -e 's/^[[:space:]]\+//' \
        -e '/^deleting /d' -e 's/^/> /' >>report

sort -k2 report

나는 이를 사용하여 두 개의 로컬 디렉터리 트리(약 100개의 변경 사항이 있는 약 10,000개의 파일)를 비교했습니다. 스크립트는 해당 인수가 디렉터리인지 명시적으로 확인합니다. 검사는 원격 시스템에서 사용하기 위해 수정되지만 질문에는 rsync기본 쉘 스크립팅이 아닌 옵션 사용이 포함되므로 해당 변경 사항은 이 예제의 일부가 아닙니다.

세 번째 옵션은 show =로 스크립트를 확장하여 변경되지 않은 파일을 표시하는 경우 유용합니다. 그러나 나는 이것을 실제로 사용할 수 없습니다. 나는 그것을 독자의 연습으로 남겨 둡니다.

예제 출력:

+ anon_ftp/pub/xterm/current/xterm-374.tgz
> anon_ftp/pub/xterm/current/xterm-374.tgz
+ anon_ftp/pub/xterm/current/xterm-374.tgz.asc
> anon_ftp/pub/xterm/current/xterm-374.tgz.asc
> anon_ftp/pub/xterm/current/xterm.tar.gz -> xterm-374.tgz
+ anon_ftp/pub/xterm/patches/xterm-374.patch.gz
> anon_ftp/pub/xterm/patches/xterm-374.patch.gz
+ anon_ftp/pub/xterm/patches/xterm-374.patch.gz.asc
> anon_ftp/pub/xterm/patches/xterm-374.patch.gz.asc
+ anon_ftp/pub/xterm/xterm-374.tgz
> anon_ftp/pub/xterm/xterm-374.tgz
+ anon_ftp/pub/xterm/xterm-374.tgz.asc
> anon_ftp/pub/xterm/xterm-374.tgz.asc
> anon_ftp/pub/xterm/xterm.tar.gz -> xterm-374.tgz
+ httpdocs/archives/xterm/current/xterm-374.tgz
> httpdocs/archives/xterm/current/xterm-374.tgz
+ httpdocs/archives/xterm/current/xterm-374.tgz.asc
> httpdocs/archives/xterm/current/xterm-374.tgz.asc
> httpdocs/archives/xterm/current/xterm.tar.gz -> xterm-374.tgz
+ httpdocs/archives/xterm/patches/xterm-374.patch.gz
> httpdocs/archives/xterm/patches/xterm-374.patch.gz
+ httpdocs/archives/xterm/patches/xterm-374.patch.gz.asc
> httpdocs/archives/xterm/patches/xterm-374.patch.gz.asc
+ httpdocs/archives/xterm/xterm-374.tgz
> httpdocs/archives/xterm/xterm-374.tgz
+ httpdocs/archives/xterm/xterm-374.tgz.asc
> httpdocs/archives/xterm/xterm-374.tgz.asc
> httpdocs/archives/xterm/xterm.tar.gz -> xterm-374.tgz
> httpdocs/datafiles/current/xterm.tar.gz
> httpdocs/datafiles/release/xterm.tar.gz
> httpdocs/xterm/ctlseqs/ctlseqs-contents.html
> httpdocs/xterm/ctlseqs/ctlseqs.html
> httpdocs/xterm/ctlseqs/ctlseqs.pdf
> httpdocs/xterm/ctlseqs/ctlseqs.ps
> httpdocs/xterm/ctlseqs/ctlseqs.txt
> httpdocs/xterm/manpage/koi8rxterm.html
> httpdocs/xterm/manpage/koi8rxterm.pdf
> httpdocs/xterm/manpage/koi8rxterm.ps
> httpdocs/xterm/manpage/koi8rxterm.txt
> httpdocs/xterm/manpage/resize.html
> httpdocs/xterm/manpage/resize.pdf
> httpdocs/xterm/manpage/resize.ps
> httpdocs/xterm/manpage/resize.txt
> httpdocs/xterm/manpage/uxterm.html
> httpdocs/xterm/manpage/uxterm.pdf
> httpdocs/xterm/manpage/uxterm.ps
> httpdocs/xterm/manpage/uxterm.txt
> httpdocs/xterm/manpage/xterm-contents.html
> httpdocs/xterm/manpage/xterm.html
> httpdocs/xterm/manpage/xterm.pdf
> httpdocs/xterm/manpage/xterm.ps
> httpdocs/xterm/manpage/xterm.txt
> httpdocs/xterm/terminfo-contents.html
> httpdocs/xterm/terminfo-entries.html
> httpdocs/xterm/terminfo-header.html
> httpdocs/xterm/terminfo.html
> httpdocs/xterm/xterm.log.html
> logs/access_log
> logs/access_log.processed
> logs/access_log.webstat
> logs/access_ssl_log
> logs/access_ssl_log.processed
> logs/access_ssl_log.webstat
> logs/error_log
> logs/lynx.invisible-island.net/access_log
> logs/lynx.invisible-island.net/access_log.processed
> logs/lynx.invisible-island.net/access_log.webstat
> logs/lynx.invisible-island.net/access_ssl_log
> logs/lynx.invisible-island.net/access_ssl_log.processed
> logs/lynx.invisible-island.net/access_ssl_log.processed.1.gz
> logs/lynx.invisible-island.net/access_ssl_log.processed.2.gz
> logs/lynx.invisible-island.net/access_ssl_log.processed.3.gz
> logs/lynx.invisible-island.net/access_ssl_log.processed.4.gz
> logs/lynx.invisible-island.net/access_ssl_log.processed.5.gz
> logs/lynx.invisible-island.net/access_ssl_log.webstat
> logs/lynx.invisible-island.net/error_log
> logs/lynx.invisible-island.net/proxy_access_ssl_log
> logs/proxy_access_log
> logs/proxy_access_ssl_log
> logs/proxy_error_log
> logs/xferlog
> logs/xferlog.processed
> logs/xferlog.webstat

관련 정보