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"
배열을 사용하면 필요한 경우 공백이 포함된 항목을 도입할 수 있다는 장점이 있습니다.