ウェブサイトをバックアップするために簡単なスクリプトを呼び出すcrontab操作があります。
15 0 1,10,20 * * /home/username/bin/backup_whatever
スクリプトは次のとおりです。
#!/bin/bash
TODAY=$(date +"%Y%m%d")
FILE_TO_PUT="filename.$TODAY.tar.gz"
rm -rf /home/username/filename.tar.gz
tar -zcvf /home/username/filename.tar.gz -C / var/www/website/
s3cmd put /home/username/filename.tar.gz s3://s3bucket/backups/$FILE_TO_PUT
tarコマンドは大量のファイルを圧縮するため、このコマンドを実行したときに受信される電子メールは非常に大きいです。メッセージを1つだけ表示するにはどうすればよいですか?圧縮成功しかし、tarコマンドの完全な出力は何ですか?
こんなことをしても大丈夫だろうか? tar 戻りコードが見つかりません。
EXITCODE=$(tar -zcvf /home/username/filename.tar.gz -C / var/www/website/)
if [ $EXITCODE -eq 0]
then
echo "compression successfully"
else
echo "compression unsuccessfully"
fi
ベストアンサー1
info tar
tar終了コードは、tarに関するすべての内容を読むことができる「情報」マニュアルに文書化されています。 (次をinfo info
使用して「情報」について読むことができます。3つの(デフォルト)終了コードがあるようです。info tar
ドキュメントから:
Possible exit codes of GNU 'tar' are summarized in the following
table:
0
'Successful termination'.
1
'Some files differ'. If tar was invoked with '--compare'
('--diff', '-d') command line option, this means that some files in
the archive differ from their disk counterparts (*note compare::).
If tar was given '--create', '--append' or '--update' option, this
exit code means that some files were changed while being archived
and so the resulting archive does not contain the exact copy of the
file set.
2
'Fatal error'. This means that some fatal, unrecoverable error
occurred.
If 'tar' has invoked a subprocess and that subprocess exited with a
nonzero exit code, 'tar' exits with that code as well. This can happen,
for example, if 'tar' was given some compression option (*note gzip::)
and the external compressor program failed. Another example is 'rmt'
failure during backup to the remote device (*note Remote Tape Server::).
必要な成功メッセージまたは失敗メッセージのみを受信したい場合は、次のことをお勧めします。
tar zcf /home/username/filename.tar.gz -C / var/www/website/ >/dev/null 2>&1
case $? in
0)
printf "Complete Success\n"
;;
1)
printf "Partial Success - some files changed\n"
;;
*)
printf "Disaster - tar exit code $?\n"
;;
esac
/dev/null(ビットバケットとも呼ばれます)のtarパイプ標準出力とエラー呼び出し。その後、ステートメントは、$?
最後に実行された前景パイプの終了状態を保持する特別なパラメータを解析してcase
関連メッセージを出力します。