次のbashスクリプトは、フォルダーのrsyncを1時間ごとに実行しています。
#!/bin/bash
rsync -r -z -c /home/pi/queue [email protected]:/home/foobar
rm -rf rm /home/pi/queue/*
echo "Done"
しかし、Piがインターネットから切断されていることがわかり、rsyncが失敗しました。そのため、次のコマンドを実行して、フォルダーを削除しました。 rsync-commandが成功したかどうかを判断する方法、成功した場合は、フォルダーが削除されることがあります。
通常、Unixコマンドは、正常に実行された場合は0を返し、その他の場合は0以外を返します。
状況に関連する可能性のある終了コードについては、man rsyncを参照してください。ただし、次のようにします。
#!/bin/bash
rsync -r -z -c /home/pi/queue [email protected]:/home/foobar && rm -rf rm /home/pi/queue/* && echo "Done"
すべてがうまくいった場合にのみ、rmとechoが実行されます。
それを行う他の方法は$を使用することでしょうか?常に前のコマンドの戻りコードである変数:
#!/bin/bash
rsync -r -z -c /home/pi/queue [email protected]:/home/foobar
if [ "$?" -eq "0" ]
then
rm -rf rm /home/pi/queue/*
echo "Done"
else
echo "Error while running rsync"
fi
man rsyncのセクションEXIT VALUESを参照してください
rsyncの終了値を確認する必要があります
#!/bin/bash
rsync -r -z -c /home/pi/queue [email protected]:/home/foobar
if [[ $? -gt 0 ]]
then
# take failure action here
else
rm -rf rm /home/pi/queue/*
echo "Done"
fi
ここに結果コードのセット: http://linux.die.net/man/1/rsync
古い質問ですが、誰も簡単な答えを出していないことに驚いています。
-remove-source-filesrsyncオプションを使用します。
それはまさにあなたが必要としていることだと思います。
Manページから:
--remove-source-files sender removes synchronized files (non-dir)
Rsyncが完全に正常に転送したファイルのみが削除されます。
Rsyncに慣れていないと、-deleteオプションと--remove-source-filesオプションについて混乱しやすくなります。 --deleteオプションは、宛先側のファイルを削除します。詳細はこちら: https://superuser.com/questions/156664/what-are-the-differences-between-the-rsync-delete-options