概 要 |
PHPプログラムからシステムディスク以外の別ディスク(HDD,SSD,USBメモリ等)に接続しファイル書き込み、読み出しする方法を確認しましたので、備忘録としてメモしておきます。
デバイスのマウント |
(1)別ディスク接続
CentOSサーバーに別ディスクとして、USB接続メモリを接続します。恐らく特にHDD,SSD等でも特に違いはないと思います。ただ、今回は簡単に接続できるUSBメモリを使用します。
(2)サーバー側でのデバイス認識状態確認
SSHで接続し、次のコマンドでデバイス認識状況を確認します。
fdisk -l |
接続したデバイスは、下図の通り “/dev/sdd1” と認識されています。正しいやり方かよくわかっていないのですが、容量から判断しています。
(3)マウント、アンマウント、フォーマット
マウントとは、既存のディレクトリにデバイスをリンクさせる処理であると理解しました。従って、予めリンクさせる為のディレクトリを作成しておく必要があります。
ネット等で検索すると、下記の様に認識されているデバイス(“/dev/sdd1”)を“/mnt” としてマウントするという内容の記事を見かけるので、“/mnt” の部分を変更すれば希望するディレクトリ名でマウント出来るのかと思って試してみると、“マウント・ポイントが見つからない”という内容のエラーが発生し、マウント出来ませんでした。“/mnt” , “/media” 等のディレクトリは、CentOSインストール時に生成されている為、改めて作成する必要が無いというのが結論でした。
mount /dev/sdd1 /mnt |
とりあえず、“/mnt”にマウント、ディレクトリ変更、“ls -l” コマンドでディレクトリの中を見てみると、今回の例では2つのファイルがあることが確認できます。
あまり意味はありませんが、練習も兼ねて、“umount” コマンドでマウントを解除、“mke2fs -j /dev/sdd1” でデバイスをフォーマットします。
umount /dev/sdd1 | ||
mke2fs -j /dev/sdd1 |
フォーマット後、再びマウントし、中を見ると“lost+found ”というフォルダ―が出来ています。これは、異常終了した時などに所在の判らなくなったファイルを格納する場所の様ですが、今回は特に中にファイルは入っていませんでしたので、迷わずディレクトリを抹消します。
(4)課題など
とりあえず、マウント,アンマウント,デバイスの初期化処理は出来た様です。今回はフォーマット(初期化)という表現を使用しましたが、LINUXの場合は不適切なのかもしれません。
とりあえず、PHPから別デバイスに接続するという目的には近づいていますが、あまり普段意識することの少ないファイルシステムがたくさんあり、何を選択すべきなのかなど理解出来ていないまま進んでいます。
PHPからデバイスに接続 |
(1)接続用ディレクトリ作成
次にPHPプログラムからの接続について検討します。マウントする為のディレクトリを作成します。
PHPプログラムを格納するディレクトリ(“/var/www/html”)に移動し、“test” というディレクトリを作成します。
(2)接続用ディレクトリにデバイスをマウント
作成したディレクトリにメモリをマウント後、読出・書込・実行権限を設定します。
mount /dev/sdd1 test | ||
chown apache:remote_user test | ||
chmod 775 test |
以上でPHPから、後付けのUSBメモリへの読み書きが可能になっていると思います。
(3)PHPプログラム接続確認
①確認用PHPプログラム
確認用のプログラムは次の通りです。“/var/www/html”下に配置します。行番12~17がPHP部分となっています。行番13でテキストファイルを出力します。(“/var/www/html/test01.txt”)
行番15では、予め配置するテキストファイルの内容を読み込んで(“/var/www/html/test02.txt”)行番16でブラウザ画面に内容を出力します。
<head> <meta charset="UTF-8"> <title>cent_os_test</title> <style> </style> </head> <body> <h2>USBデバイス接続TEST</h2> <?php file_put_contents("./test/test01.txt", "USBデバイス書き込みTEST ~いろはにほへと~"); $rtn = file_get_contents("./test/test02.txt"); echo $rtn ; ?> </body> </html>
②実行結果
【実行前】
実行前マウントしたディレクトリ“TEST”下に予め“test02.txt”を配置します。内容は『USBデバイス読み込みTEST ~春はあけぼの!~ 』と記載しています。
【実行後】
URLを指定しPHPファイルを呼び込むと“TEST”下にはtest01.txt”が生成されます。ファイル中には『USBデバイス書き込みTEST ~いろはにほへと~』と記載されています。
ブラウザ側には、“test02.txt”の内容である『USBデバイス読み込みTEST ~春はあけぼの!~ 』を出力します。
まとめ |
本当はディスク全体のバックアップ方法について書きたかったのですが、もう一つよくわからなかったので、調べている途中でこちらに変わってしまいました。
こちらはこちらで調べたかった内容ではあるので問題はないのですが、出来れば近いうちに毎日定時にバックアップする方法を調べて整理したいと思います。