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 \
Code language: Bash (bash)

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

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

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

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

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