基本的にリモート サーバー間でファイルの rsync を実行する小さなスクリプトがあります。認証用に ssh キーが生成されています。
スクリプトにはこれだけが存在します
rsync /root/Desktop/cpfies/files/*.xls user@host:root/Desktop/cpfies/moved
基本的に私が作成したいのは、このスクリプトのログ メソッドです。特別なものではなく、ただこれだけです。接続が失われ、ファイルが送信されない場合、ログに「ファイルが送信されず、接続が確立されていません」と表示されます。
また、ファイルが送信された場合は、ログに正常に送信されたことが表示されます。
または、ホストまたはユーザーが間違っている場合は、ログに表示されます。
ありがとう、敬具、サガール・マンダル
答え1
$?
失敗した試行のみをログに記録したい場合は、最後のスクリプトの戻り値であるを調べることで rsync の戻り値を取得できます。rsync
成功した場合は 0 を返し、さまざまなエラーの場合は 0 以外を返します (https://lxadm.com/Rsync_exit_codes)。私は次のようにします。
#!/bin/bash
ret_text=$({rsync /root/Desktop/cpfies/files/*.xls user@host:root/Desktop/cpfies/moved} 2>&1)
if [ $? -ne 0 ]; then
echo rsync error code $? on $(date)
echo rsync output follows
echo $ret_text
fi
これを に入れてscript
実行するときに、その出力を のようにログ ファイルにリダイレクトするscript >> log_file
か、 スクリプトを呼び出して、>> log_file
スクリプト内の各 echo コマンドの後に追加することもできます。
成功した試行も記録したい場合は、
rsync /root/Desktop/cpfies/files/*.xls user@host:root/Desktop/cpfies/moved &>> log_file
または
rsync --log-file=log_file /root/Desktop/cpfies/files/*.xls user@host:root/Desktop/cpfies/moved
-v
また、 またはを追加して、rsync が生成する情報量を増やすことをお勧めします。または をさらに-vv
使用することも可能ですが、マニュアルにはデバッグ目的であると記載されています。-vvv