rsync가 예상대로 작동하지 않습니다

rsync가 예상대로 작동하지 않습니다

원격 서버의 폴더(예: /home)를 다운로드하고 압축하는 스크립트가 있습니다.

"복원" 스크립트를 만들려고 하는데 이상한 동작이 발생합니다.

복원.sh:

($1은 IP 주소, $2는 전체 경로)

if [ $# -lt 2 ]
then
    echo "Error"
    exit 1
else
    D=$(mktemp -d)
    echo "From $D/$2"
    echo "To user@$1:/$2"
    tar xfz /backup/$1.tar.gz -C $D
    rsync -ncavzPe ssh --partial --delete $D/$2 user@$1:/$2
    rm -r $D
    exit 0
fi

원격 서버가 127.0.0.12이고 /home을 복원하고 싶다고 가정해 보겠습니다.

$ssh 127.0.0.12
$password:
$ls /home/user
a b c x y z
$logout
$sh restore.sh 127.0.0.12 /home
From /tmp/tmp.R8iAewFEIR//home
To [email protected]://home
[email protected]'s password:
sending incremental file list
home/
home/user/
home/user/1
home/user/2
home/user/.cache/
home/user/.cache/motd.legal-displayed

sent 351 bytes  received 40 bytes  46.00 bytes/sec
total size is 0  speedup is 0.00 (DRY RUN)
$

a, b, c, x, y, z를 삭제해야 하는 것 아닌가요? 단지 드라이런 때문일까요? 다른 폴더로 보내는 중인가요?비슷한 일을 하다가 서버가 고장났어요어제는 -n 없이 시도하기가 너무 두렵습니다.

답변1

if [ $# -lt 2 ]
then
    echo "Error"
    exit 1
else
    D=$(mktemp -d)
    echo "From $D/$2"
    echo "To user@$1:/$2"
    tar xfz /backup/$1.tar.gz -C $D
    rsync -cavzPe ssh --partial --delete $D/$2/* user@$1:/$2/
    rm -r $D
    exit 0
fi

rsync 소스의 폴더에 입력하는 것을 잊었습니다.

관련 정보