NASバックアップを実行するための簡単なスクリプトを作成しました。私はこうする:
date="$(date +%Y-%m-%d)"
base="/backup"
newest="$(ls -1td "$base"/*-*-*/ | head -n 1)"
today="$base/$date"
dirs="pub,data,software"
if [ -d "$today" ]; then
echo "Backup already exists"
exit 1
fi
echo $newest
echo $dirs
mkdir "$today"
rsync -a --delete --info=progress2 "/myzpool/{$dirs}" "$today" --link-dest="$newest"
そのために必要なのは、現在の日付というフォルダを作成し、/myzpool/pub
新しく作成されたバックアップフォルダにフォルダをコピーすることです。しかし、驚くべきことに、これはうまくいきません!エラーにより中断されました。/myzpool/data
/myzpool/software
rsync
rsync: link_stat "/myzpool/{pub,data,software}" failed: No such file or directory
SSHを介して仮想サーバーをバックアップするために非常に似たスクリプトを使用しているため、これが起こる理由を理解できません。
dirs="srv,opt,home,root,etc"
mkdir "$today"
rsync -caz --compress-level=9 -e "ssh -i ~/.ssh/myserver.conf" --delete --info=progress2 "[email protected]:/{$dirs}" "$today" --link-dest="$newest"
そして、仮想サーバーを使用するとうまく動作します。それでは、これら2つのコマンドラインの違いは何ですか?スクリプトがローカルで実行されるようにどのように変更しますか?
答え1
同様の問題が発生し、サポートの拡張を確認しました。するコマンド置換で動作します。
問題は、支柱の拡張が他のものよりも先に起こるため、2番目に支柱の拡張が行われるようにこのようにrsync
実行する必要があることです。eval rsync ...