![Bash 스크립트 실행의 rsync 알 수 없는 옵션](https://linux55.com/image/130045/Bash%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%20%EC%8B%A4%ED%96%89%EC%9D%98%20rsync%20%EC%95%8C%20%EC%88%98%20%EC%97%86%EB%8A%94%20%EC%98%B5%EC%85%98.png)
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"
배열을 사용하면 필요한 경우 공백이 포함된 항목을 도입할 수 있다는 장점이 있습니다.