レンタルサーバの上のファイルをFTP経由で自動でバックアップを取る方法(ftpsync)

やりたいことは1つ。
夜中に自動的にレンタルサーバー上の全ファイルを、ローカルにバックアップを取りたい。
使えるのはFTPのみ。

Windows版を探すも、いちいちGUIを立ち上げなければ設定が出来なかったり、
コマンドラインで指定が出来なかったり、仕方なしにGUIで設定するも、
スケジュールを実行させるためには常時立ち上げておかなければならなかったり、結局使い物にならない。
アホかー!こんなんにいちいちGUI付けるなっての。

ならばCUIで歴史のあるFreeBSDだ。、

FreeBSDの /usr/ports/ftp の中を眺めていると、ftpsync と言ういかにもそれらしいモノを見付けた。
さっそくググってみる。・・・が、情報がいかんせん無い。

まあいいや、インストールして実行してみれば何かわかるかも知れない。
さっそくインストールしてみる。

cd /usr/ports/ftp/ftpsync
make install

で、サクっとインストール完了。
実行してみる。

botsv# ftpsync
ftpsync: Command not found.

・・・あれ?

botsv# rehash
botsv# ftpsync
ftpsync: Command not found.

あれれ?

botsv# man ftpsync
No manual entry for ftpsync

うーむ・・・。

仕方ないので、/usr/local/bin 内を見てみると、 ftpsync.pl ってのがあった。
perlスクリプトなのねん。

おもむろに実行。
botsv# ftpsync.pl

FTPSync.pl 1.3.03 (2009-07-03)

ftpsync [ options ] [ localdir remoteURL ]
ftpsync [ options ] [ remoteURL localdir ]
options = [-dfgpqv] [ cfg|ftpuser|ftppasswd|ftpserver|ftpdir=value … ]
localdir local directory, defaults to “.”.
ftpURL full FTP URL, scheme

おお・・・なんかそれらしいヘルプが出てきた。
さっそくバックアップをしてみるテスト。

mkdir /var/ftpbackup
cd /var/ftpbackup

ftpsync.pl ftpserver=FTPサーバ名 ftpuser=FTPユーザ名 ftppasswd=パスワード ftpdir=/public_html .
Determine s offset.
Building local file tree.
Building remote file tree.

と表示されてFTPサーバ上からローカルディレクトリにバックアップが始まった。
あとはこれをcronジョブに仕込めばOK

cront -e として編集
cronの書式は、分 時 日 月 曜日 コマンド なので、
* 3 * * * /usr/local/bin/ftpsync.pl ftpserver=FTPサーバ名 ftpuser=FTPユーザ名 ftppasswd=パスワード ftpdir=/public_html .

こんな感じ、毎朝3時に実行されるように設定しました。