web-dev-qa-db-ja.com

WinSCPがSFTPサイトに複数のファイルを配置する

WinSCP 5.2では、ファイル拡張子が.pgpの複数のファイルをSFTPサイトに配置したいと考えていました。元のコマンドライン(以下を参照)をテストしたところ、最初の*.pgpアルファベット順ファイル(D:\a.csv.pgp)のみがSFTPサイトに配置されていました。 *.PGP*.pgpを変更せずに指定してみました。毎回1つのファイル(D:\a.csv.pgp)のみがコピーされます。 .pgpファイルごとにputコマンドを指定した場合にのみ、すべてのファイルで機能するようになりました。すべての*.pgpをSFTPサイトに配置する方法について何かアイデアはありますか?

元のコマンドライン-機能しない
d:\winscp\winscp /command "option echo off" "option batch on" "option confirm off" "open sftp" "put D:\*.pgp" "close" "exit"

作品
d:\winscp\winscp /command "option echo off" "option batch on" "option confirm off" "open sftp" "put D:\a.csv.pgp" "put D:\b.csv.pgp" "put D:\c.csv.pgp" "put D:\d.csv.pgp" "put D:\e.csv.pgp" "put D:\f.csv.pgp" "put D:\g.csv.pgp" "put D:\h.csv.pgp" "put D:\i.csv.pgp" "close" "exit"

3
NewToWinSCP

SCPモードではなくSFTPモードを使用しているようです

mput *.pgpを試してください(FTPコマンドに基づく推測)

manual はワイルドカードが機能するはずだと言っています

put <file> [ [ <file2> ... ] <directory>/[ <newname> ] ]
パラメータが1つだけ指定されている場合は、ファイルをリモート作業ディレクトリにアップロードします。さらにパラメーターを指定すると、最後のパラメーターを除くすべてがアップロードするファイルのセットを指定します。最後のパラメータは、ターゲットのリモートディレクトリと、オプションでファイルを別の名前で保存するための操作マスクを指定します。宛先ディレクトリはスラッシュで終わる必要があります。ファイル名をWindowsワイルドカード1)に置き換えて、複数のファイルを選択できます。さらにファイルを現在の作業ディレクトリにアップロードするには、最後のパラメータとして./を使用します。

put *.html *.png /home/martin/backup/*.bak

引用符で囲まれたコマンドの最後の項目として、ターゲットディレクトリを配置する必要があります。

d:\winscp\winscp /command "option echo off" "option batch on" "option confirm off" "open sftp" "put D:\*.pgp ""C:\Documents and Settings\newtowinscp\Documents\Backups""" "close" "exit"

3
RedGrittyBrick

これをスクリプトから実行している場合は、ループを作成するだけです。すべての* .pgpファイルを取得し、リストを繰り返し処理します。実際には、ファイルを個別にアップロードします。とにかくプロトコルレベルのSFTP/SCPが一度に複数のファイルを移動するとは思わないので、これがパフォーマンスに影響を与えるとは思わない。おそらくエラー処理も簡単になるだろう。

純粋なネイティブコマンドラインでこれを行う方法があると思いますが、バックアップスクリプトでは(逆のことを行い、SFTPサイトからファイルをプルダウンします)Microsoftのこのプログラム(forfiles)を使用します: http://technet.Microsoft.com/en-us/library/cc753551(WS.10).aspx 。ニーズに最も効果的に使用する方法について、そこにある例を読んでみましょう。基本的に、ファイル名にワイルドカードを使用してから、インスタンスごとにアップロードコマンドを実行します。

1
Eric G

最初のコマンドに問題はありません(put D:\*.pgp)。

アップロードされるファイルが1つだけであると主張している場合、何らかのエラーが発生したために、スクリプトが他のファイルを続行できなくなった可能性があります。アップロードされたファイルのタイムスタンプやアクセス許可の更新など、実際のアップロード(成功した場合)に続く操作のエラーである必要があります。

このエラーなど: ファイルのアップロードは成功しましたが、権限やタイムスタンプの設定中にエラーが発生しました。問題が解決しない場合は、権限の設定またはタイムスタンプの保持をオフにしてください。または、 '権限を無視するをオンにすることもできますエラーのオプション。

スクリプト出力またはセッションログファイルで実際に何が問題になっているのかがはっきりとわかるはずです。

0
Martin Prikryl