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"
。これは3つの個別のオプションであるため、明らかに存在しません。
これにより問題が解決します。
rsync $OPTIONS "$SRC_DIR" "$DST_DIR"
より良いオプションは、bash配列を使用してオプションを保存することです。
OPTIONS=(
--recursive
--ignore-existing
--progress
)
# ...
rsync "${OPTIONS[@]}" "$SRC_DIR" "$DST_DIR"
配列を使用すると、必要に応じてスペースを含む項目を導入できるという利点があります。