Joomla!サイトをまるごとバックアップできるAkeebaBackup。まず最初にこれをインストールするという方も多いはず。
AkeebaBackupには「Akeeba Remote Control」というデスクトップからバックアップできるアプリケーションが公開されていたのですが、いつの間にか開発中止になったようです。その代わりに公開されているのが今回紹介する「Remote CLI」。Akeeba Backupでのバックアップをコマンドラインで実行するアプリケーションです。Remote Controlと比べて難易度はあがりますが、ものにすれば非常に強力です。
サイトの1.5→1.7移行に伴いバックアップ方法も見直し、初めてRemote CLIを使ってみましたので、備忘録として手順を記録しておきます。
今回はRemote CLIを使用して、Joomla!サイトをバックアップ→バックアップファイルをダウンロード→サーバから削除を実現します。サーバ上にバックアップファイルが残らないのでリソースの節約にもなりますし、セキュリティ的にもいいかも。
なお今回はWindows7での設定方法ですが、MacやLinuxでも応用できるはずです。
Akeeba Backupの設定
Remote CLIを使うには、Akeeba Backup側であらかじめ設定が必要です。Akeeba Backup→設定→オプションを開き、「フロントエンドバックアップ」タブにある次の項目を設定します。
- フロントエンドとリモート バックアップを有効:Yes
- 秘密の言葉:適当なパスワード
「秘密の言葉」はバックアップするためのパスワードです。これがばれてしまうとサイト全体をバックアップされダウンロードまでされてしまうので、より複雑なパスワードにしておきます。
Windows用PHPのインストール
Remote CLI自体はPHPアーカイブという形式のファイルです。実行するにはWindows用のPHPバイナリが必要になります。
Windows用のPHPは以下からダウンロードできます。
PHP For Windows: Binaries and sources Releases
今回はPHP5.3の「VC9 x86 Non Thread Safe」のInstallerをダウンロードして実行しました。インストール中、インストール先のフォルダ(Destination Folder)を聞かれます。問題なく動作させるためには、Cドライブ直下に「PHP」というフォルダを作ってインストールするのがよさそうです。またWebサーバを選択する画面では、「Do not setup a web server」を選択しました。
これ以外はすべてデフォルトのままインストールを進めて大丈夫だと思います。
Akeeba Remote CLIのダウンロード
次のページからRemote CLI(remote.phar)の最新版をダウンロードし、C:\PHPに保存します。
これで準備が整いました。
Remote CLIの実行
コマンドプロンプトを起動してC:\PHPに移動します。
cd c:\php
次にサイトへ接続できるかテストします。次のコマンドを実行してください。
php remote.phar --action=test --host=サイトのURL --secret=秘密の言葉
なお「サイトのURL」には末尾にスラッシュを入力しないこと。実行した結果、「Successful connection to site」と表示されれば成功です。
上記のコマンドの「test」の部分を様々なアクションに変えてコマンドを実行します。また様々なオプションも利用できます。これらは以下にまとまっています。
また以下のページでは、アクションとオプションを組み合わせた例が載っています。
今回実現したい動作(バックアップ後ダウンロードしサーバから削除)を実現するコマンドも例として載っています。今回はこれをそのまま使います。
php remote.phar --action=backup --host=http://www.example.com --secret=iloveakeeba --profile=1 --download --dlmode=curl --dlpath="c:\Downloads" --delete --dlurl="ftp://foo:bar@ftp.example.com/public_html/administrator/components/com_akeeba/backup"
各オプションの意味は以下の通り
- --profile:AkeebaBackupのプロファイルIDを指定する
- --download:バックアップ後ダウンロードする
- --dlmode:ダウンロードのモードを指定する。curlのほかhttpなどが使える。
- --dlpath:バックアップのダウンロード先。
- --delete:バックアップ後、ファイルを削除する
- --delurl:FTPで接続するユーザ名(上記ではfoo)、パスワード(上記ではbar)、ホスト名(上記ではftp.example.com)とバックアップが保存されたディレクトリ(上記では/public_html/administrator/components/com_akeeba/backup)を指定します。
上記のコマンドを、自分の環境に置き換えて実行します。実行後、バックアップ→ダウンロード→削除が正しく動作しているかを確認してください。
FTPのユーザ名やパスワードに"@"が含まれていると、正常にダウンロードできないようです。これで少しはまりました…。
動作を確認したら、このコマンドを既述したバッチファイルを作ります。テキストエディタを開き、内容は以下のようにしてbackup.batという名前で保存します。
C:
CD c:\PHP
php remote.phar --action=backup --host=http://www.example.com --secret=iloveakeeba --profile=1 --download --dlmode=curl --dlpath="c:\Downloads" --delete --dlurl="ftp://foo:bar@ftp.example.com/public_html/administrator/components/com_akeeba/backup"
このバッチファイルをWindowsのタスクスケジューラに登録すれば完了です。タスクスケジューラへの登録方法は検索してください。