2010年11月4日木曜日

curlftpfsを使ってリモートホストのディレクトリをローカルにマウントする

Check

コンソール端末からwebサーバにアクセスする際、クライアントを使うのが('A`)マンドクセというあなたに。

私はubuntu10.10を使っているが、他のバージョンやディストリビューションでも似たようなことはできるだろう。まずは必要なパッケージをインストールしてしまおう。

1washi@wabuntu:~$ sudo aptitude install curlftpfs

curlftpfsの使い方を確認しよう。オプションは色々あるが、私の場合はこれだけでなんとかなっている。

1washi@wabuntu:~$ curlftpfs server.address.jp ~/mountdir -o user=username:password

本来ならばこれだけで任意のディレクトリにマウント出来るはずだ。しかし、私の場合ここで以下のようなエラーが出た。

1washi@wabuntu:~$ curlftpfs server.address.jp ~/mountdir -o user=username:password
2fusermount: failed to open /etc/fuse.conf: Permission denied

http://linux.dsplabs.com.au/forums/ubuntu-linux-help/ubuntu-fuse-failed-to-execに対処法が書かれているので、このとおりにやってみる。

1washi@wabuntu:~$ sudo chmod +x /bin/fusermount
2washi@wabuntu:~$ sudo chmod a+rwx /etc/fuse.conf

これで変なメッセージは表示されなくなったはずだ。

次にやりたいことの手順を確認。私はホスティングサービスに、NINJA-TOOLSを使っているのでマウント先は~/ninjaとする。にんにん。

  1. $HOME下にninjaディレクトリを作成
  2. ウェブサーバのルートを~/ninjaにマウントする。
  3. アップロードは、~/ninjaへファイルをコピーするだけ!
  4. ~/ninjaをアンマウントし、空になった~/ninjaは削除する。

これらの手順をスクリプトにまとめる。シェルスクリプトの勉強を兼ねて、マウントするときは

1washi@wabuntu:~$ ./myscript.sh mount

アンマウントするときは

1washi@wabuntu:~$ ./myscript.sh umount

とするだけでサーバーのディレクトリをマウントできるようにした。

01#! /usr/bin/env sh
02 
03CMDNAME=`basename $0`
04MOUNTDIR=~/ninja
05 
06# スクリプトの使い方を表示する
07usage(){
08    echo "使い方: $CMDNAME アクション" 1>&2
09    echo "アクション:" 1>&2
10    echo "\tmount  - FTPサーバのROOTディレクトリを $MOUNTDIR にマウントします。" 1>&2
11    echo "\tumount - $MOUNTDIR をアンマウントします。" 1>&2
12}
13 
14# 引数が1個以外の時は使い方を表示
15if [ $# -ne 1 ]; then
16    usage
17    exit 1
18fi
19 
20if [ "$1" = "mount" ]; then
21    echo "mount アクションが選択されました。" 1>&2
22    echo "マウント先は $MOUNTDIR です。" 1>&2
23    mkdir -p $MOUNTDIR
24    curlftpfs server.address.jp $MOUNTDIR -o user=username:password
25elif [ "$1" "umount" ]; then
26    echo "umount アクションが選択されました。" 1>&2
27    echo "$MOUNTDIR をアンマウント後、空になったディレクトリを削除します。" 1>&2
28    fusermount -u $MOUNTDIR
29    rmdir $MOUNTDIR
30else
31    # mount, umount以外のアクションを指定した場合は使い方を表示
32    usage
33    exit 1
34fi
35 
36exit 0

これで、~/ninja 以下にファイルをコピーするだけでアップロードすることができるようになったはずだ。

0 件のコメント:

コメントを投稿