NcFTPでWebサイトやログファイルを自動定期バックアップ

Webコンテンツやログファイル等の定期的なバックアップに。

  • MacにNcFTPをあらかじめインストールしておく。
  • NcFTPのncftpget -Rコマンドで複数のファイルをダウンロードできる機能を利用する。
  • バックアップスクリプトを作る。
  • Mac上で、cronを利用して毎日あるいは、毎週バックアップする。

 

■手動でバックアップできることを確認しておく

適当なディレクトリで、FTPを実行してバックアップしたいファイルをダウンロードできることを確認する。

$ /usr/local/bin/ncftpget -u ユーザ名 -p 'パスワード' -R ftp://サーバ名/public_html/ 

public_html以下に大量にファイルがある場合、ダウンロードが始まるまで時間がかかる。

 

 

 ■バックアップスクリプトを作成する

バックアップ先は、外付けハードディスクの場合 ls -l /Volumes/ でマウント名を確認しておく。

バックアップ先:  /Volumes/Backup/www/20080413/ (日付ディレクトリを毎回作る)

スクリプト保存場所: /Users/MyName/Scripts/backup.sh 

FTPのログ:     /Users/MyName/Scripts/backup.log

バックアップ元:  ftp://サーバ名/ログイン時に指定したいディレクトリ/ 

 

backup.sh

#!/bin/sh

# バックアップ先、ログファイルを指定する
BACKUP_DIR=/Volumes/Backup/www
FTP_LOG=/Users/MyName/Scripts/get_backup.log


# 今日の日付でディレクトリを作る
DATE=`date +%Y%m%d`
mkdir $BACKUP_DIR/$DATE
cd $BACKUP_DIR/$DATE


# FTP開始時刻をログに記入する
echo "###########################" >> $FTP_LOG
echo BACKUP START: `date` >> $FTP_LOG
# FTPでデータをダウンロードする
/usr/local/bin/ncftpget -u MyName -p 'Password' -R ftp://192.168.1.123/public_html/


# ログに終了時刻をログ記入する
echo BACKUP END: `date` >> $FTP_LOG
echo "" >> $FTP_LOG
echo "" >> $FTP_LOG

FTP先のホームディレクトリのpublic_htmlディレクトリを指定する場合、

ftp://サーバ名/public_html/

FTP先のホームディレクリではなく、上位のディレクトリ(ルートディレクトリや/etcなど)を指定する場合、

ftp://サーバ名/../../etc/

というように../で指定する。

 

chmod 700 backup.shで実行権を与えておくのを忘れずに。 

 

 

■CRONで定期的に実行する

◎ crontab -e で毎朝7時に実行する。

0 7 * * * nice -n 10 $HOME/Scripts/backup.sh > /dev/null
  • nice -n 10 を指定してCPUの使用優先順位を下げておくことで、ブラウザやメールの同時利用が快適になる。
  • Mac OS X のシステム環境設定 > 省エネルギー > スケジュール を利用すれば、定期的にMacの電源を入れたり、シャットダウンできる。

 

◎ 毎週日曜日の朝7時に実行する場合。(0〜6で、日〜土を表す)

0 7 * * 0 nice -n 10 $HOME/Scripts/backup.sh > /dev/null

 

◎ 毎月1日の朝7時に実行する場合。

0 7 1 * * nice -n 10 $HOME/Scripts/backup.sh > /dev/null