2014/06/02この前サーバのバックアップを考えた話の続き。サーバ上でディレクトリをzipで固める必要があり、その方法について調べながら試してみた。zipコマンドを実行するシェルスクリプトを試したがなぜかうまくいかない。仕方がないのでPHPで実行する事を考えた。調べてみるとPEARのArchive_Zipを使うのが良さそうだった。参考にしたのはこちらのサイト。Archive_Zipのダウンロードページの右側、0.1.2のリンクからArchive_Zip-0.1.2.tgzをダウンロードする。そのtgzを解凍するのだが、なぜか私の環境(Win7/64bit)では、Lhaplusでの解凍にエラーが発生するので、Lhacaというソフトで解凍をした。└─Archive_Zip-0.1.2└─ArchiveZip.php解凍した中のArchiveディレクトリをサーバにアップする。次に肝心のPHPだが前述の参考サイトから引用。"pearsmall.gif";$zip->create($file_name);?>せっかくなのでテストに使う対象のファイルはPEARのロゴである下記の画像(pearsmall.gif)にした。今回はziptest.phpとしてサーバにアップした。└─ArchiveZip.phpそのziptest.phpをブラウザから叩けばexample.zipが出現する。zipファイルの中身はもちろんpearsmall.gifだ。本題のディレクトリの圧縮については上記コードの$file_nameをディレクトリ名にすれば良い。仮に「zip_test」というディレクトリ名とした場合は単純に下記のとおり。無事にディレクトリごとzipになっていた。一部のコマンドが実行できないのはさくらの共用サーバの仕様なのか良く分からないなと思いつつ色々と調べてみると、TeraTermでSSH接続が出来る事が分かった。GMOの共用サーバはSSH接続ができなかったのでさくらもダメかと思い込んでいたけど、さくら最高だな。TeraTermでサーバにログインしてzipコマンドを実行すると問題なく処理ができた。前回ダメだったrsyncコマンドも処理できた。なるとシェルの記述の仕方がよくなかったっぽいが、cpやrmなどのコマンドはシェルで実行できたので良く分からないな。時間があるときに色々と調査してみよう。