節電時代の自宅サーバー運用 2

cronに登録する

cronに登録する

次は作成したスクリプトを周期的に実行するための設定を行います。

例えば/home/bin/backup.sh というスクリプトを毎日3:30に実行するためには以下のように設定します。

  # crontab -e
30 3 * * * /home/bin/backup.sh > /dev/null 2>&1

crontabの書式は、設定項目の左から「分(0-59)」「時(0-23)」「日(1-31)」「月(1-12)」「曜日(0-7。0または7は日曜日)」となります。全ての時間で実行する場合は「*」と記載します。上記例の場合、「30 3 * * * 」ですので、毎日3:30に起動するという設定になります。

図1:crontabの書式

その右の「/home/bin/backup.sh」は、実際に実行するコマンドになります。ここで注意すべきは、相対パスではなくて絶対パスでコマンドを指定することと、実行するコマンドには実行権限を付けておくことです(例: chmod u+x /home/bin/backup.sh)。

そして一番右には「> /dev/null 2>&1」という不思議な記載が付いています。通常crontab により実行されたコマンドから出力が行われると、cron デーモンはその出力結果をユーザーにメールで配送しますが、このメールが特に必要ないという場合に、この不思議な記載を付けます。もしくは現在広く使われているVixie cronでは、crontabファイルの冒頭に「MAILTO=""」の記述を加えるだけで、全てのメール通知を止めることができます。

古いバックアップを自動削除する

バックアップを取り続けるだけだとUSBメモリの容量がすぐに満杯になってしまいます。そこで古いバックアップを自動削除するようにしたいです。この場合は以下のようなスクリプトを作成し、やはりcron登録します。

  #!/bin/sh
find /mnt/extdisk -maxdepth 1 -regex '.*\.tar.gz' -ctime +6 -exec rm -f {} \;

最後に

今回ご紹介したバックアップ方法を他の人に共有する時にいつも指摘されるのは、USBメモリを持ち去られたらどうするのか、というものです。その場合いつも冗談でUSBメモリが刺さった自宅サーバーごと金庫に入れておけば大丈夫だと言うようにしてます。

そもそも自宅サーバーで物理セキュリティのことを考え出すといろいろな方向に話が飛びますので、こういった話題はむしろ技術者が集まる飲み会の場に取っておいています。この手の話題は結構盛り上がるんですよ。

この記事をシェアしてください

人気記事トップ10

人気記事ランキングをもっと見る