TARで固めてFTPで転送するスクリプト

用途としては、定期的にサーバ上の特定のファイルやディレクトリをFTPでバックアップしたり収集したい場合。自分でいちいちFTPで転送するのは大変だし面倒。

良くあるのが、

・仕事で複数台のサーバーで動いているアプリケーションのログを一つのサーバーに集約したり、クライアントにダウンロードして解析する必要がある場合。

・特定のフォルダやファイルを自動的に他のサーバーにFTPでバックアップしたい場合。

具体的な例を挙げると

例えば、某レンタルサーバXでブログを運営している場合、Xさんはデータのバックアップを行なっていないのでサーバのハードディスクが壊れた場合データは復旧してもらえないわけです。

でもって、他にもサーバを借りていたり、またはプロバイダの契約自体にFTPアカウントが付いていてFTPが使える場合、そこにTARで固めてFTPで転送する事でバックアップを別サーバーに置けるので安心便利なわけです。

さらに例えると僕の場合SさんにもアカウントがあるのでXさんからSさんにTARで固めたブログをFTP転送してバックアップする事も可能なわけです。でもってそのスクリプトをcron(クーロン)に設定してあげれば、毎日1回とか週に1回とか自動的にネットワーク経由のオンラインバックアップが可能になるというわけです。

自分のパソコンでnekosogiFTPDなどでFTPサーバを立ち上げれば、自分のパソコンにだって転送可能です。(固定IPじゃないとDDNS使うなどの工夫は必要ですが)。既に自宅サーバをやってる人であればもっと簡単に実現可能です。

そういうわけでスクリプト

#!/usr/bin/perl
#
# TARでバックアップしてFTPするスクリプト
#
#    2008/10/20
#

#□バックアップ元
my $sdir    = ‘/home/自分のID’;            #バックアップ保存フォルダ
my $sfile    = ‘backup.tar.gz’;            #バックアップファイル名
my $buppath    = "/home/自分のID/test";    #バックアップされるディレクトリまたはファイルのパス

#□バックアップ先
#FTPサーバアドレス
my $FTP_SERVER    = ‘excample.com’;
#FTPアカウント
my $FTP_USER    = ‘hogehoge’;
#FTPアカウントのパスワード
my $FTP_PASSWD    = ‘01234’;
#転送先フォルダ
my $ddir    = "/home/自分のID";

#バックアップ実行
system("tar -zcf $sdir/$sfile $buppath");

#FTP転送
open(FTP,"| ftp -n $FTP_SERVER");
print FTP <<"EOF";
user $FTP_USER $FTP_PASSWD
prompt
cd $ddir
lcd $sdir
pwd
binary
put $sfile
ls -al
quit
EOF

close(FTP);

perlでかいてありますが、シェルスクリプトや他の言語にも簡単に移植できると思います。

実際に動かしてXREAさんからサクラさんにバックアップファイルを転送できる事を確認済みです。

スクリプト実行時のログです。最後には

kumacchi@sxxx:~/tmp> perl ftp.pl
tar: Removing leading `/’ from member names
Connected to kumacchi.com.
220 wwwxxx.sakura.ne.jp FTP server (Version 6.00LS) ready.
331 Password required for kumacchi.
230 User kumacchi logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
Interactive mode off.
250 CWD command successful.
Local directory now /virtual/kumacchi
257 "/home/kumacchi" is current directory.
200 Type set to I.
local: backup.tar.gz remote: backup.tar.gz
229 Entering Extended Passive Mode (|||57810|)
150 Opening BINARY mode data connection for ‘backup.tar.gz’.
100% |*************************************|   674       6.17 MB/s    00:00 ETA
226 Transfer complete.
674 bytes sent in 00:00 (42.97 KB/s)
221 Goodbye.
kumacchi@sxxx:~/tmp>

色々活用してみてください。

(Visited 214 times, 1 visits today)

タグ :