コンソール端末からwebサーバにアクセスする際、クライアントを使うのが('A`)マンドクセというあなたに。
私はubuntu10.10を使っているが、他のバージョンやディストリビューションでも似たようなことはできるだろう。まずは必要なパッケージをインストールしてしまおう。
washi@wabuntu:~$ sudo aptitude install curlftpfs
curlftpfsの使い方を確認しよう。オプションは色々あるが、私の場合はこれだけでなんとかなっている。
washi@wabuntu:~$ curlftpfs server.address.jp ~/mountdir -o user=username:password
本来ならばこれだけで任意のディレクトリにマウント出来るはずだ。しかし、私の場合ここで以下のようなエラーが出た。
washi@wabuntu:~$ curlftpfs server.address.jp ~/mountdir -o user=username:password
fusermount: failed to open /etc/fuse.conf: Permission denied
http://linux.dsplabs.com.au/forums/ubuntu-linux-help/ubuntu-fuse-failed-to-execに対処法が書かれているので、このとおりにやってみる。
washi@wabuntu:~$ sudo chmod +x /bin/fusermount
washi@wabuntu:~$ sudo chmod a+rwx /etc/fuse.conf
これで変なメッセージは表示されなくなったはずだ。
次にやりたいことの手順を確認。私はホスティングサービスに、NINJA-TOOLSを使っているのでマウント先は~/ninjaとする。にんにん。
- $HOME下にninjaディレクトリを作成
- ウェブサーバのルートを~/ninjaにマウントする。
- アップロードは、~/ninjaへファイルをコピーするだけ!
- ~/ninjaをアンマウントし、空になった~/ninjaは削除する。
これらの手順をスクリプトにまとめる。シェルスクリプトの勉強を兼ねて、マウントするときは
washi@wabuntu:~$ ./myscript.sh mount
アンマウントするときは
washi@wabuntu:~$ ./myscript.sh umount
とするだけでサーバーのディレクトリをマウントできるようにした。
#! /usr/bin/env sh
CMDNAME=`basename $0`
MOUNTDIR=~/ninja
# スクリプトの使い方を表示する
usage(){
echo "使い方: $CMDNAME アクション" 1>&2
echo "アクション:" 1>&2
echo "\tmount - FTPサーバのROOTディレクトリを $MOUNTDIR にマウントします。" 1>&2
echo "\tumount - $MOUNTDIR をアンマウントします。" 1>&2
}
# 引数が1個以外の時は使い方を表示
if [ $# -ne 1 ]; then
usage
exit 1
fi
if [ "$1" = "mount" ]; then
echo "mount アクションが選択されました。" 1>&2
echo "マウント先は $MOUNTDIR です。" 1>&2
mkdir -p $MOUNTDIR
curlftpfs server.address.jp $MOUNTDIR -o user=username:password
elif [ "$1" = "umount" ]; then
echo "umount アクションが選択されました。" 1>&2
echo "$MOUNTDIR をアンマウント後、空になったディレクトリを削除します。" 1>&2
fusermount -u $MOUNTDIR
rmdir $MOUNTDIR
else
# mount, umount以外のアクションを指定した場合は使い方を表示
usage
exit 1
fi
exit 0
これで、~/ninja 以下にファイルをコピーするだけでアップロードすることができるようになったはずだ。