2011-06-26 10 views
4
#!/bin/bash 
"mirror -R //thevault/Shared/Operations/Marketing/test --only-missing -e ;exit" 

私はlftpを使って共有ドライブ上のフォルダをミラーリングしています。しかし、それは "そのようなファイルやディレクトリはありません"と失敗しますこれを記述する正しい方法は何ですか?どのようにファイル名のスペースをエスケープするか。私は文字通りすべてを試しました。cygwin bashスクリプトで共有ドライブにアクセスするにはどうすればよいですか?

私も/cygdrive/s/Operations/Marketing/testを試しました。これは私がログインしている間に動作し、スクリプトを実行します。しかし、私がログファイルに記録されていない間にタスクが実行されるとき、私は同じ "No such file"エラーを取得します。

+0

// thevault /共有< ~~間違って'samba'が' cygwin'に移植されているのを見ましたが、 'sftp'とホスト鍵認証 –

+0

マイクでこの問題を簡単に解決できます。これはすばやく汚れた概念なので、sftpやsambaなどのツールを使ってプロセスをさらに洗練することができます。どのように私は正しい経路を置く考えがありますか? – Kelbizzle

+0

'sftp'を使用している場合は、サーバにアクセスするためのパスを使用する必要はありません。 sftp経由で接続し、 'sftp'サーバをインストールしたときに設定したディレクトリに基づいてファイルを' put'/'get'してください。だから、ミラー化しようとしているディレクトリへのアクセスを 'sftp'サーバに設定します。 –

答えて

1

これはログアウトしている間完全に動作しているようです。

#!/bin/bash 
lftp ftp://username:passwor[email protected] -e "mirror -R //thevault/Share/folder/folder/folder\ with\ spaces/folder/folder --only-missing -e;exit" 

私のパスのエスケープスペースです。これがうまくいかなかったのは、私がパスを再入力したときにスペルミスをしたからです。私はこの問題を解決するための最初のステップは、あなたがログインしていない間、働くためにこれを必要とする場合ネットワーキングWindowsではなく `sftp`を使用することだと思う。私がしている

#!/bin/bash 
"mirror -R //thevault/Shared/folder/folder/test --only-missing -e ;exit" 
4

一般に、UNCのパス名(つまり\\server\share)のためのcygwinのサポートではないと思うので、ネットワークドライブへのマッピングに頼ってから/cygdrive/sを使用する必要があります。ログインしていないとき、それは働いていないとの問題を解決するには、スクリプトからのWindows NETプログラムを呼び出す必要があります:

net use s: \\thevault\Shared password /user:myuser 

平文でパスワードを持つことにいくつかのセキュリティ上の影響があるかもしれません、このサーバーへの読み取りアクセス権を持つユーザーアカウントからスクリプトが実行されていることを確認してから、パスワードを省略することもできます。

+0

お寄せいただきありがとうございます。私は完全にパーミッションを忘れてしまった。 – Kelbizzle