
UNIX サーバーから Windows 2003 Server にファイルを転送したいので、copssh
Windows サーバーにダウンロードし、openssh
UNIX サーバーに既にインストールしています。
次のコマンドを実行します (UNIX サーバー上):
scp -r /file_in_unix/ user@windows_hostname:\c:\\\
次の出力が表示されます (UNIX サーバーの画面上)。
100% |***************************************************************| 562 00:00
しかし、Windows サーバーのドライブ内のファイルを確認してみるとC
、何も見つかりません。なぜファイルが表示されないのでしょうか?
答え1
宛先パスが間違っているようです。ほとんどの Unix シェルでは、バックスラッシュはパス マーカーではなくエスケープ文字なので、ファイルは奇妙なファイル名で SSH ユーザーのホーム ディレクトリにドロップされたと推測します。
IIRC copssh は cygwin に基づいているため、おそらく実行する必要があるのは次のようになります。
scp -r /file_in_unix/ user@windows_hostname:/cygdrive/c/
Windowsマシン上のSSHサービスにコピーする代わりに、次のようなGUIクライアントを使用することもできます。ウィンSCPWindows ボックスで Unix マシンにログインし、その方法でファイルを取得します。ただし、この方法はプロセスを自動化しようとしている場合には適していません。
UNIX マシンへの特権アクセスがあり (つまり、root であるか、sudo または同様の方法で root になれる)、関連するサポートがインストールされている場合は、ファイルを Windows 共有にコピーするだけで済みます。使用している Unix がわかりません。Ubuntu や類似の OS の場合、サポートが存在するかどうかの確認と、存在しない場合のインストールは を使用して実行できます。sudo aptitude install smbfs
次に、sudo mount -tcifs //11.22.33.44//sharename /mnt/tmp -ousername=WindowsUserName
(11.22.33.44 は Windows マシンの IP アドレスです。ネットワーク設定によっては、アドレスではなく名前でマシンを参照できる場合があります) などのコマンドを使用して、Windows 共有をマウントできます。これが完了したら、基本的なファイル管理ツール ( cp
、mv
、...) を使用してその Windows 共有を操作し、umount /mnt/tmp
完了したら を呼び出すことができます。/mnt/tmp よりも意味のあるマウント ポイント名を選択することをお勧めします。もちろん、データ転送を自動化/スケジュールする場合は、共有をマウントしたままにすることができます。この方法では、Unix マシンと Windows マシン間に存在する可能性のあるファイアウォール設定を介して、Unix マシンが Windows マシンのファイル共有を参照できることが前提となっています。
答え2
逆に、Unix側からプッシュするのではなく、Windows側からファイルをプルすることもできます。次のようなツールを調べてみてください。ウィンSCPこれは SCP ファイル転送用のグラフィカル ツールで、Windows エクスプローラーまたは Norton Commander の外観と操作性を選択できます。どちらも直感的に操作できます。ログインすると、Windows のように目的のファイルに移動し、任意の場所にドラッグ アンド ドロップできます。
答え3
使用ウィンSCPツール。とてもうまく機能します。
答え4
Unix ボックスに Samba をインストールしてみませんか? そうすれば、2 つのシステム間でドライブをマップできます。あるいは、コマンドライン scp ではなく、psftp (putty スイートから) を使用することをお勧めします。これは、scp に慣れていないため、スクリプトを作成する必要がないためです。