目の前のコンピューターから宛先コンピューターにローカルネットワーク経由で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
これらのオプションを適切に保存してスクリプトとして実行するにはどうすればよいですか?
承認された回答:
"$OPTIONS"
を引用する 、シェルはそれを単一の文字列としてrsyncに渡しているため、rsyncは"--recursive --ignore-existing --progress"
という名前の単一のオプションを見つけようとしています。 、これらは3つの別個のオプションであるため、明らかに存在しません。
これで修正されるはずです:
rsync $OPTIONS "$SRC_DIR" "$DST_DIR"
より良いオプションは、bash配列を使用してオプションを格納することです。
OPTIONS=(
--recursive
--ignore-existing
--progress
)
# ...
rsync "${OPTIONS[@]}" "$SRC_DIR" "$DST_DIR"
配列を使用する利点は、必要に応じてスペースを含むアイテムを導入できることです。