h@cygwin:~$> ls -l /cygdrive total 0 drwxrwxr-x+ 1 Administrators root 0 2013-05-14 04:13 c/ drwxrwxr-x+ 1 ???????? ???????? 0 2013-05-14 03:02 r/ |
ところで、このネットワークドライブ(シェア)はパス(UNC)を明示的に使ってアクセスすることもできる。
h@cygwin:~$> ls -l //readynas312 total 0 drwxrwxr-x+ 1 ???????? ???????? 0 2013-05-09 21:33 Backup/ drwxrwxr-x+ 1 ???????? ???????? 0 2013-05-13 13:28 Documents/ drwxrwxr-x+ 1 ???????? ???????? 0 2013-05-09 20:42 Music/ drwxrwxr-x+ 1 ???????? ???????? 0 2013-05-09 20:42 Pictures/ drwxrwxr-x+ 1 ???????? ???????? 0 2013-05-14 03:02 backup-cygwin/ -rw-r--r-- 1 h None 0 2006-11-30 16:00 backup-garlic |
実はこのNASにはbackup-cygwin以外にも、上に見られるように
ただしguestがオーナでないネットワークドライブが/cygdrive/<ドライブレター>あるいはUNCでアクセスできるのは、Cygwinの走るホスト上でローカルに実行した場合のみ。 sshでリモートから同じことをしようとしても上手く行かない。 |
h@linux:~$ ssh cygwin Last login: Tue May 14 11:26:08 2013 from linux Fanfare!!! You are successfully logged in to this server!!! h@cygwin:~$> ls -l /cygdrive total 0 drwxrwxr-x+ 1 Administrators root 0 2013-05-14 04:13 c/ h@cygwin:~$> ls -l //readynas312 total 0 drwxrwxr-x+ 1 ???????? ???????? 0 2013-05-09 21:33 Backup/ drwxrwxr-x+ 1 ???????? ???????? 0 2013-05-13 13:28 Documents/ drwxrwxr-x+ 1 ???????? ???????? 0 2013-05-09 20:42 Music/ drwxrwxr-x+ 1 ???????? ???????? 0 2013-05-09 20:42 Pictures/ -rw-r--r-- 1 h None 0 2006-11-30 16:00 backup-cygwin -rw-r--r-- 1 h None 0 2006-11-30 16:00 backup-garlic |
sshでCygwinにログインすると、ネットワークシェアにアクセスクレデンシャルを渡せないようだ。
そんならcronからはどうか、とジョブを登録してみたが、やはりクレデンシャルが必要な、guestがオーナでないシェアはディレクトリとして見えないようだ。残念!
Cygwinでパス名を扱うときはスラッシュの扱いに気をつけなければならない。通常、Linuxではスラッシュがいくつ重なっていても単一のスラッシュと同じに扱われ、例えば「//aa/bb/cc」と「/aa/bb/cc」は同じことで、「ルートディレクトリの中のディレクトリaaの下のサブディレクトリbbの下のcc」だが、CygwinではWindowsのUNCと同じ解釈をして「ホストaaのシェアbbのトップディレクトリcc」をアクセスしようとする(そして失敗してもLinux風の重複スラッシュ無視にはフォールバックしない)。実はここで使ったNETGEARのNASは、ssh経由のrsyncで外部パスを指定するとホスト名とファイルパスを無造作に「:/」で結合していたので、例えば「host」の「/dir」を指定すると「host://dir」がrsyncに渡され、「:」の後ろがそのままCygwinに渡されるのでUNCと解釈されおかしなことになっていた(バグとして修正済み)。
0 件のコメント:
コメントを投稿