cron
バックアップが完了した後、電子メールの本文に簡単なメッセージを提供する次の1行のコマンドを設定しました(@steeldriverに感謝します)。
tar -cpzf /home/user/backups/backup_files.tar.gz /home/user/public_html;
case $? in 0) echo "Files successfully backed up at $(date)" ;; *) echo "Backup failed" ;; esac
問題は、コマンドライン全体が私の電子メールの件名に出力されることです。これは、電子メールのバックアップ全体にフルパスを提供するため、理想的ではありません。トピックが「バックアップユーザー」のように簡単に言及されていることを願っています。
既存のコマンドを中断することなくこれを行う方法はありますか?ありがとうございます。
答え1
デフォルトのメールサブシステムを使用する必要はなく、cron
直接宣言できます。この内容で1行のエントリを作成しますcron
(読みやすくするために3行に分割しました)。
if tar czf /home/user/backups/backup_files.tar.gz -C / home/user/public_html;
then echo "Files successfully backed up at $(date)";
else echo 'Backup failed'; fi | mail -s 'Backup user' root
いくつかのメモ
- アーカイブの作成時にフラグが無視されるため、
-p
フラグを削除しました。tar
- バックアップソースが相対ファイルになるようにディレクトリを変更するフラグを追加しました
-C
。これによりtar: Removing leading `/' from member names
警告メッセージが停止します。 - ユーザーアカウントのローカルメールを受信する機能を提供しましたが、
root
システムがWebメールを処理するように設定されている場合は、アクセス可能な任意のアドレスに置き換えることができます。 - 個人的に私はそれをスクリプトに入れ、そこからそのスクリプトを呼び出します
cron
。これにより、スクリプトレイアウトを読みやすくし、行の制限やcron
その他の問題を引き起こすことなく、必要に応じて複雑さ(複雑さ!)を追加できます。