web-dev-qa-db-ja.com

UNIXからWindowsにファイルを転送するにはどうすればよいですか?

UNIXサーバーからWindows 2003サーバーにファイルを転送したいので、copsshをWindowsサーバーにダウンロードしましたが、opensshはUNIXサーバーに既にインストールされています。

(UNIXサーバーで)次のコマンドを実行すると、

scp -r /file_in_unix/ user@windows_hostname:\c:\\\

次の出力が表示されます(UNIXサーバーの画面)。

100% |***************************************************************|   562       00:00

しかし、WindowsサーバーのCドライブにあるファイルを見に行っても、何も見つかりません。ファイルが表示されないのはなぜですか?

宛先パスが間違っている-ほとんどのUNIXシェルにとって、バックスラッシュはパスマーカーではなくエスケープ文字であるため、ファイルが奇妙なファイル名でSSHユーザーのホームディレクトリにドロップされたと思います。

IIRC copsshはcygwinに基づいているため、おそらく実行する必要があるのは次のとおりです。

scp -r /file_in_unix/ user@windows_hostname:/cygdrive/c/

WindowsマシンのSSHサービスにコピーする代わりに、Windowsボックスで WinSCP のようなGUIクライアントを使用してUnixマシンにログインし、その方法でファイルをプルすることもできますが、これは適切ではありません。プロセスを自動化しようとしている場合。

UNIXマシンへの特権アクセスがあり(つまり、Sudoまたは同様のルートを介してアクセスできる、またはアクセスできる)、関連するサポートがインストールされている場合は、ファイルをWindows共有にコピーするだけです。使用しているUnixはわかりません。 Ubuntuおよび同様のサポートが存在することを確認し、サポートが存在しない場合はSudo aptitude install smbfsでインストールできる場合は、Sudo mount -tcifs //11.22.33.44//sharename /mnt/tmp -ousername=WindowsUserName(11.22.33.44はのIPアドレス)のようなものでWindwos共有をマウントできます。 Windowsマシン、ネットワーク設定によっては、アドレスではなく名前でマシンを参照できる場合があります)。それが済んだら、基本的なファイル管理ツール(cpmv、...)を使用して、そのWindows共有と対話し、umount /mnt/tmpを呼び出すことができます。完了しました。/mnt/tmpよりも意味のあるマウントポイント名を選択することをお勧めします。もちろん、データの転送を自動化/スケジュールする場合は、共有をマウントしたままにすることができます。この方法は、UnixマシンがWindowsマシンのファイル共有を、それらの間に存在する可能性のあるファイアウォールの配置を介して認識できることを前提としています。

9
David Spillett

WinSCP ツールを使用します。魅力のように機能します。

2
Vinay Sheshadri

Unix側からプッシュする代わりに、逆の方法でファイルをWindows側からプルすることもできます。 WinSCP のようなツールを調べてください。これはSCPファイル転送用のグラフィカルツールであり、Windowsエクスプローラーまたはノートンコマンダーのルックアンドフィールのいずれかを選択できます。どちらも直感的です。ログインしたら、「Windowsの方法」で目的のファイルに移動し、好きな場所にドラッグアンドドロップできます。

2
Olfan

LinuxサーバーからWindowsサーバーにこれを実行し、検証しました。

scp test.txt someguy @ someserver:/ tmp /

/ tmpはWindowsServerのCドライブにあります。 Cとは何の関係もないので落としたところ、うまくいきました。

1
Tim