Sandro さん、スクリプト内で間隔を空けて、個々のエラーを生成することを検討してください。物事を読みやすくします。
#!/bin/bash
mybackupname="backup-fullsys-$(date +%Y-%m-%d).tar.gz"
# Record start time by epoch second
start=$(date '+%s')
# List of excludes in a bash array, for easier reading.
excludes=(--exclude=/$mybackupname)
excludes+=(--exclude=/proc)
excludes+=(--exclude=/lost+found)
excludes+=(--exclude=/sys)
excludes+=(--exclude=/mnt)
excludes+=(--exclude=/media)
excludes+=(--exclude=/dev)
if ! tar -czf "$mybackupname" "${excludes[@]}" /; then
status="tar failed"
elif ! mv "$mybackupname" backups/filesystem/ ; then
status="mv failed"
else
status="success: size=$(stat -c%s backups/filesystem/$mybackupname) duration=$((`date '+%s'` - $start))"
fi
# Log to system log; handle this using syslog(8).
logger -t backup "$status"
tar
デバッグ情報 ( または の stderrなど)を保持したい場合はmv
、tmpfile またはデバッグ ファイルへのリダイレクトで処理できます。ただし、コマンドが cron を介して実行され、出力がある場合、cron はそれを電子メールで送信する必要があります。サイレント cron ジョブは、成功した cron ジョブです。
一連if
の により、前のプログラムが成功している限り、各プログラムが実行されます。でコマンドをチェーンするようなもの&&
ですが、失敗した場合に他のコードを実行できます。
のオプションの順序を変更したことに注意してください。tar
その後-f
に続くのは、保存先のファイルであるためです。また、このオプションは、tar からファイルを抽出-p
する場合にのみ役立ちます。tarを作成 ( ) すると、許可は常に保存されます。-c
stat
このコマンドの使用法は GNU/Linux では機能しますが、FreeBSD や Mac OSX などの他の unice では機能しないことに注意してください。BSD では、stat -f%z $mybackupname
.