ftpしか使えない共用サーバーを自前バックアップするには、wgetでミラーリングダウンロードする

多くの共用サーバーでは、有料のバックアップ機能を提供しています。有料バックアップを利用していない人は、自前でバックアップを設定する必要があります。

有料バックアップを利用している人も、念のために自前バックアップをしたほうがいいかもしれません。

2012年のファーストサーバのデータ消失事故。ファーストサーバ側の作業ミスによって、データを消失し、被害にあった顧客件数は5000件以上。そのほとんどがファーストサーバ側では復旧不可能。一部の顧客は自前でバックアップしていたので復旧できたが、復旧のメドがたたない顧客も多い。

ファーストサーバ障害、深刻化する大規模「データ消失」
深刻化する大規模「データ消失」 クラウド時代の盲点
クラウドに預けていたデータが、「雲」が消えるかのごとく消失してしまった。20日17時頃、レンタルサーバー会社のファーストサーバ(大阪市)で起きた「データ消失」事故。その深刻な状況が日を追うごとに明ら

共用サーバでFTP接続しか使えない場合は、wgetコマンドでミラーリングダウンロードします。

wgetコマンドは、webクローラで有名だね。

架空の共用サーバのディレクトリ例です。

ディレクトリ説明バックアップ対象
/logアクセスログ
/mailメールボックス
/public_htmlweb公開ディレクトリ
/public_html/_smarty/templates_csmarty一時ファイル
/mysqldumpdbバックアップファイル

アクセスログ、公開ディレクトリ、dbバックアップファイルをダウンロードします。

ここでは除外する例として、公開ディレクトリのうち、smartyの一時ファイルをダウンロードしないように除外しました。

#!/bin/bash set -u set -x set -e wget --version export FTP_HOST=sv123.example.jp export FTP_USER=admin@sv123.example.jp export FTP_PASS=password wget --mirror \ --no-check-certificate \ --ftp-user=$FTP_USER \ --ftp-password=$FTP_PASS \ ftp://$FTP_HOST/log \ wget --mirror \ --no-check-certificate \ --ftp-user=$FTP_USER \ --ftp-password=$FTP_PASS \ --exclude-directories=public_html/_smarty/templates_c \ ftp://$FTP_HOST/public_html \ wget --mirror \ --no-check-certificate \ --ftp-user=$FTP_USER \ --ftp-password=$FTP_PASS \ ftp://$FTP_HOST/mysqldump \

ターミナルで実行すると、カレントディレクトリにFTPホスト名 sv123.example.jpディレクトリが作成されて、その下に保存されます。

$ tree . └── sv123.example.jp ├── mysqldump │   └── db123.exampl.jp_mydb.sql.gz └── public_html └── index.php

初回は、全ファイルをダウンロードするので、ファイル数が多い場合は時間がかかります。

2回目からは、ローカル側とサーバー側ファイルを比較して、更新されたファイルだけをダウンロードするので、処理時間は短くなります。

タイトルとURLをコピーしました