Ubuntu で cron を使って定期的にバックアップを取る方法


 Ubuntu で cron を使って定期的にバックアップを取る方法について説明します。つまり、自動バックアップシステムを作ってしまおう、という記事です。

 

ステップ1: cron とは何かを理解する

 はじめに、cron とは何かを理解することから行きましょう。Cron は、Linux システムで定期的に特定のタスク(ジョブ)を自動的に実行するためのツールです。
 例えば、ログのローテーションやバックアップなど、定期的に実行したいジョブがある場合、これらは cron によって自動的に実行することができます。毎日おはようメールを出すといったようなことにも使えます。

 

ステップ2: バックアップ用のスクリプトを作成する

 次に、バックアップ用のスクリプトを作成します。このスクリプトは週1回の頻度で、12世代(12週間分)のバックアップを取得します。以下にスクリプトの例を示します。もちろんこのスクリプトではない実行スクリプトを用いれば、定期的にその内容を実行できます。

  
#!/bin/bash

# パスの設定
PATH=/usr/local/sbin:/usr/bin:/bin

# バックアップ先
BACKUP_DIR=/var/sites/bacchi.me/backup/

# バックアップ対象
TARGET_DIR=/var/sites/bacchi.me/html

# バックアップ後のファイル名
BACKUP_FILE_NAME=bacchi.me-`/bin/date +%Y%m%d`.tar.gz

# 今日の日付
DATE=`/bin/date \'+%Y%m%d\'`

# 削除する日付
touch -m -d \'(`/bin/date -d \'-12 week\' +%Y%m%d`)\' /tmp/wpbk

# バックアップ処理
cd $TARGET_DIR
tar czfp $BACKUP_FILE_NAME ./
mv $BACKUP_FILE_NAME $BACKUP_DIR

# 古いバックアップを削除
find $BACKUP_DIR -not -newer /tmp/wpbk -name "*tar.gz" | rm -f
  

 このスクリプトは、バックアップ対象のディレクトリからファイルを取得し、それを指定したバックアップ先に保存します。また、12週間以上前のバックアップは自動的に削除されるようにしています。

 

ステップ3: cron の設定を行う

 作成したスクリプトを cron で自動実行する設定を行います。設定方法は2つあります。一つは crontab コマンドを使う方法、もう一つは直接 cron の設定ファイルを編集する方法です。

 

方法1: crontab コマンドで設定を行う


 まず、ターミナルを開き、以下のコマンドを実行します。

  
$ crontab -e
  

 これにより、現在ログインしているユーザーの cron 設定を編集することができます。

 

方法2: cron の設定ファイルを直接編集する

 もう一つの方法は、直接 cron の設定ファイルを編集する方法です。以下のコマンドを実行します。

  
sudo nano /etc/crontab
  

 どちらの方法を選んでも、設定内容は同じです。

 次の例では、毎週月曜日の朝5時30分にバックアップスクリプトを実行します。設定内容は以下の通りです。

  
30 5 * * 1 root /path/to/your/script/file_backup.sh  2>&1 >/dev/null
  

 ここで、/path/to/your/script/file_backup.sh は作成したスクリプトのパスに置き換えてください。そして、nano でファイルを保存して終了します。

 

 これだけでは設定法がわからないと思われますので、cron の日時設定の仕方について詳しくステップをわけて説明します。

 

ステップ1: cron の日時設定の理解

 まず初めに、cron の日時設定の基本的な形式を理解しましょう。

 Cron の設定は以下の形式で行います。

  
* * * * * command to be executed
- - - - -
| | | | |
| | | | ----- Day of week (0 - 7) (Sunday=0 or 7)
| | | ------- Month (1 - 12)
| | --------- Day of month (1 - 31)
| ----------- Hour (0 - 23)
------------- Minute (0 - 59)
  


 これを見ていただくとわかる通り、cron の設定は5つのフィールドで構成されています。それぞれのフィールドは、分、時間、日、月、週の順に設定します。

 

ステップ2: 具体例

 それでは、具体的な例を挙げて、どのように設定を行うのかを見てみましょう。

 

例1: 毎日午前5時30分にジョブを実行する
  
30 5 * * * /path/to/your/script.sh
  
例2: 毎週月曜日の午前5時30分にジョブを実行する
  
30 5 * * 1 /path/to/your/script.sh
  
例3: 毎月1日の午前5時30分にジョブを実行する
  
30 5 1 * * /path/to/your/script.sh
  
例4: 毎時0分にジョブを実行する
  
0 * * * * /path/to/your/script.sh
  


 これらの例を見ていただくとわかる通り、cron の設定は非常に柔軟で、様々なパターンの定期実行を設定することが可能です。
 以上が、cron の日時設定の理解と具体例です。

 これで、cron を使って様々なタスクを自動的に実行することができるようになったはずです。