SolarisでrsyncをPHPから実行する

sasaki 月曜, 2007-05-28 17:19

社内サーバで制作したコンテンツを本番サーバにrsyncでアップする。

これは、毎回ターミナルを立ち上げて作業しないといけないのだが、Webの画面からrsyncを起動できたら、管理者でなくとも操作できるし、iモードからも操作可能になる。

 

■本番サーバにphpファイルを作成する

rsyncを動かすためのphpファイルを作る。場所は、本番サーバのApacheドキュメントルート内の適当な場所に置く。

 

下準備として、rsyncをパスワード入力無しで実行できるようにしておく。

Solarisにsshの自動ログインでパスワードを入力しないを参照 

 

rsync.php

<html>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title>テストサーバから本番サーバへの全コンテンツコピー</title>
<head>
</head>
<body>

<h3>テストサーバ から 本番サーバ へ全コンテンツコピーが始まりました。</h3>

<a xhref="rsync_ps.php">進行状況を確認する</a>

<br>
<br>

<h3>コピーファイルを表示しています</h3>
最大100行まで表示します。

<?php
$output = `/usr/local/bin/rsync -av --rsync-path=/usr/local/bin/rsync
-e ssh testuser@192.168.100.111:public_html/
/export/home/webuser/public_html | head -100`;
echo "<pre>$output</pre>";
?>

</body>
</html>

$output = の行は、; まで一行で入力する。 

 

■rsyncの進行状況を確認するphp

rsync_ps.php

<html>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title>テストサーバから本番サーバへの全コンテンツコピー | 進行状況を確認</title>
<head>
</head>
<body>

<h3>テストサーバ から 本番サーバ へ全コンテンツコピーの進行状況を確認</h3>

<a xhref="rsync_ps.php">進行状況をリロードする</a>

<br>
<br>

<h3>進行状況を表示しています</h3>
例のように「/usr/local/bin/rsync」が含まれている行が表示されていれば、
現在コピー作業が進行しています。<br>
<pre>
(例)
webuser 22239 22237 8 16:24:10 ? 0:29 /usr/local/bin/rsync -av --rsync-path
</pre>

<br>
<br>

進行状況...<br>

<?php
$output = `ps -ef | grep rsync-pat[h]`;
echo "<pre>$output</pre>";
?>

<br>
表示されなくなったらコピーは完了です。<br>
<br>

</body>
</html>