memocon プログラミングのメモや物欲日記、雑記等

PHP:ssh2接続しscopyでファイル送受信

2012年06月26日 08時36分

ホスティング会社のファーストサーバが顧客のデータを削除し復旧できないという大失態をやらかしてから数日が経過し、サイト復旧の速さが日頃からデータのバックアップを取っているかというリスク管理の差で出ている。

ファーストサーバ:6/20に発生した大規模障害に関するお詫びとお知らせ
http://support2.fsv.jp/info/nw20120620_01.html

被害を受けたサイト一覧
http://ict.pken.com/2012/06/first_server_list/

己がバックアップ環境を省みると趣味程度だからとサイトのDB、html共にとっていない事に気が付いた。
現時点のデータが全部消失したら間違いなく再開などしないだろう。

そんなことにならない為にもphpでssh2接続しscopyでバックアップファイルをローカルにコピーする環境を作った際の手順。


CentOSでphpのpecl:ssh2を用意するまでの手順.

pecl, phpizeを使えるようにphp-devel,php-pearをインストール。
libssh2をコンパイルできるようにopenssl-develをインストール。
libssh2を取得してインストール
pecl ssh2を取得してインストール
extentionに追加
apache再起動

phpでSSH接続&scopyでファイル取得

上記でpecl:ssh2が使用できるようになったらssh2関数が使えるようになる。

下はscopyでサーバ上のバックアップファイルをローカルにコピーする例。
処理をサーバ側にしてsendすることも簡単に出来るのでmanual読んで好みのバックアップ環境を構築するのが吉。

コマンドもssh2_execで実行できるのでtarでWebサイトを固めたりDBをダンプして落とすことも可能。

参考:ssh2関数マニュアル
http://jp.php.net/manual/ja/ref.ssh2.php