Bash 스크립트 실행의 rsync 알 수 없는 옵션

Bash 스크립트 실행의 rsync 알 수 없는 옵션

rsync를 사용하여 내 앞에 있는 컴퓨터의 폴더를 로컬 네트워크를 통해 대상 컴퓨터로 간단히 동기화하려고 합니다.

#!/bin/bash

echo "This script will sync from my Macbook Dropbox/scripts/ folder to [email protected] @ Norms house"

OPTIONS="--recursive --ignore-existing --progress"
SRC_DIR="~/Dropbox/scripts/"
DST_DIR="[email protected]:~/scripts/"
rsync "$OPTIONS" "$SRC_DIR" "$DST_DIR"

자신에게 쓰기 권한 부여

chmod +x nameofscript.sh

실행하면 다음과 같이 출력됩니다.

rsync: --recursive --ignore-existing --progress: unknown option

이러한 옵션을 올바르게 저장하고 스크립트로 실행하려면 어떻게 해야 합니까?

답변1

참고로 "$OPTIONS"쉘은 이를 단일 문자열로 rsync에 전달하므로 rsync는 이라는 단일 옵션을 찾으려고 시도합니다 "--recursive --ignore-existing --progress". 이는 세 가지 개별 옵션이기 때문에 분명히 존재하지 않습니다.

이렇게 하면 문제가 해결됩니다.

rsync $OPTIONS "$SRC_DIR" "$DST_DIR"

더 나은 옵션은 bash 배열을 사용하여 옵션을 저장하는 것입니다.

OPTIONS=(
    --recursive
    --ignore-existing
    --progress
)
# ...
rsync "${OPTIONS[@]}" "$SRC_DIR" "$DST_DIR"

배열을 사용하면 필요한 경우 공백이 포함된 항목을 도입할 수 있다는 장점이 있습니다.

관련 정보