all-backup.pl とは、指定したデータベースのdumpを取り、指定したディレクトリ以下のすべてのファイルを.tar.gzに圧縮し、FTPで別サーバーへ転送するPerlスクリプトです。 ファイル名は曜日の英語表記の頭3文字(月曜日なら mon.tar.gz)になり、過去1週間分のバックアップファイルをとり続けることができます。
このPerlスクリプトは、データベースを操作したり、サーバー上のファイルを大量に扱ったりするものです。
このスクリプトをご使用になって生じたいかなる不利益も、作者は一切責任を負いません。それをご了承の上でお使いください。
all-backup.pl を、以下の「設定」を参考に編集し、サーバー上の任意のディレクトリに設置し、755などの実行権限を与えればOKです。
all-backup.pl の前半部分に次のような設定項目があります。これをご自身の環境に合わせて適宜変更してください。
########## 設定 [START] ##########
# バックアップ対象ディレクトリ
my $target_dir = 'MTAppjQuery';
my $target_path = '/Applications/MAMP/htdocs/MTOS-5.13/MTAppjQuery';
# データベースの情報
my $dbi = 'mysql';
my $db_host = 'localhost';
my $db_port = '8889';
my $db_socket = '/Applications/MAMP/tmp/mysql/mysql.sock';
my $db_user = 'root';
my $db_passwd = 'root';
my $mysqldump_path = '/Applications/MAMP/Library/bin/mysqldump';
my @db_names = qw(mt_513 mtos_513);
# 転送先のFTP情報
my $ftp_host = '';
my $ftp_user = '';
my $ftp_passwd = '';
my $ftp_backup_path = './backup';
########## 設定 [ END ] ##########
以下で簡単に設定項目について説明します。
バックアップの対象とするディレクトリ名です。
上記$target_dir
までの絶対パスです。
データベースの種類をしていします。今のところmysql
しか想定していません。
データベースのホスト名です。
データベースのポートです。例えば、MAMPの場合はデフォルトだと8889
だと思います。
データベースのソケットです、例えば、MAMPの場合はデフォルトだと/Applications/MAMP/tmp/mysql/mysql.sock
だと思います。
データベースのユーザー名です。
データベースの上記ユーザー名に対するパスワードです。
mysqldump
コマンドのフルパスです。which mysqldump
コマンドで調べましょう。
データベース名です。一つの場合はqw(foo)
、複数の場合はqw(foo bar)
のように半角スペース区切りで指定します。
転送先のFTPのホスト名です。
FTPのユーザー名です。
FTPの上記ユーザー名に対するパスワードです。
FTP側のバックアップファイルを保存するディレクトリまでのパスです。FTPユーザーのホームディレクトリ(ログインして最初に表示されるディレクトリ)からの相対パスで指定します。
コマンドラインで実行するか、crontabに登録して定期的に実行するのが良いと思います。
perl all-backup.pl
0 4 * * * /usr/bin/perl /Path/all-backup.pl
上記Pathの部分は all-backup.pl までの絶対パスを書いてください。