WindowsからLinuxにファイルをコピーする


16

私は1つのスクリプトを書いています。1台のLinuxマシンを実行します。ターゲットには、linux、solaris、windowsが含まれます。

私はscpを使用して* nix間でファイルをコピーできることを知っています。しかし、Windowsからファイルをコピーするのはどうですか?

これらのウィンドウはテストマシンであり、OSを頻繁に再インストールできるため、特定のソフトウェアをインストールすることは期待できません。

回答:


21

Sambaを使用します。

Sambaは、Windowsと互換性のあるファイル共有サービスを提供します。

/srv/samba/sharenameLinuxコンピューター上のディレクトリ(たとえば)を共有し、Windowsから次のようにアクセスできます\\linuxservername\sharename。Windows側で追加のソフトウェアは必要ありません。

SambaはほとんどのLinuxディストリビューションに含まれています。パッケージマネージャーを使用してインストールします。次に例を示します。

  • Ubuntu: sudo apt-get install samba smbclient

  • SUSE: zypper samba

  • CentOS / RedHat: yum install samba

Sambaを構成するには、以下を参照してください。

またはGoogleを検索して、ディストリビューションのガイドを見つけます。

Linuxファイアウォールを使用する場合は、ポート137 / tcp、138 / tcp、139 / tcp、および445 / tcpへの接続を許可するように設定する必要がある場合があることに注意してください(これこれを参照)。


上記の説明では、LinuxコンピューターはSambaサーバーであり、Windowsはそこから共有をマウントします。

以下のコメントで、転送プロセスを自動化したいと言っています。これは、Windowsがサーバーとして機能し、Linuxがを使用してサーバーに接続するように、役割を逆にすることで実現できますsmbclient

ではsmbclient、あなたは、すべてのWindows共有をマウントする必要はありません。たとえば、LinuxコンピューターC:\Directory\file.txtで取得してコピーするに/tmpは、次のようにします。

smbclient '//windowsserver/c$' -c 'lcd /tmp; cd Directory; get file.txt' -U administrator%password

-c実行するコマンド。詳細man smbclientを参照してください。

-U として指定された共有にアクセスするためのユーザー名とパスワード username%password

必要に応じて変更し、スクリプトに追加します。


@max、すばらしい回答をありがとう。私は、sambaがWindowsで動作することを知っています。しかし、ファイルをコピーするときは、依然として人間の関与が必要です。私のスクリプトは1つのLinuxで実行され、マシンにはsambaがインストールされているので、1つのスクリプトにコピー作業をさせるにはどうすればよいですか?WindowsディスクをLinuxにマウントして、Linuxでアクセスできるようにした方が良いようです。サンバはこれを行うことができますか?
アレックス

はい、Sambaはこれを行うことができます。さらに良いことに、Windows共有をマウントする必要はまったくありません。smbclientWindows共有への接続、ファイルのコピー、および切断に使用できます。私は自分の答えを編集し、それを見てみましょう。
ジャウメ

どういたしまして、お手伝いできてうれしいです。
ジャウメ

1
特に、この-cオプションは単純な場合に使用する価値があります。私のマシンでは、パスワードは引数なしで提供されます(オプションなし)。また、-を呼び出すことで、コマンドラインリーダーから資格情報を遠ざけます(たとえば、psまたはを使用[h]top-U $(cat .username) $(cat .password)
トマスガンドール

3

特定のソフトウェアのインストールは期待できないと言っていましたが、Windowsには特定のインストールを必要としないSSH / SCP / SFTPクライアントがあります。利用可能な実行可能ファイルのみ。私が頼りにしているのは、その仲間pscppsftpツールを備えたPuTTYですが、代替手段が存在することは確かです。pscpそして、psftpコマンドラインから完全に駆動することができるので、オートメーションタスクに適しています。どちらにも-batch「すべての対話型プロンプトを無効にする」と呼ばれるスイッチがあり、ほぼ確実に活用できます。

おそらくすでにSSH / SCP / SFTPサーバーがサーバーにインストールおよび構成されているため、これらのファイルをコピーするためだけにいずれかのホストにソフトウェアをインストールする必要がなくなります。

別の利点は、PuTTYが許容ライセンスの下でオープンソースであるという事実である可能性があるため、箱から出してすぐに望んでいることを実行しない場合、それはあなたが好む方法で動作させるのが比較的簡単でなければなりません。


1
ご推薦ありがとうございます。私はpscpとpsftpを試します。また、優れたツールでもあります。
アレックス

1

私はCentOS 6ユーザーなので、この方法を試しましたCentOS 6

を使用してsambaをインストールする

[root @ server〜]#yum install samba

確認のためのクエリ

[root @ server〜]#rpm -qa samba
samba-3.5.10-125.el6.i686

Sambaユーザーを作成します。

[root @ server〜]#useradd sambashare

smbpasswdコマンドを使用して、ユーザー名sambashareのsambaパスワードを作成します。

[root @ server〜]#smbpasswd -a sambashare
新しいSMBパスワード:
新しいSMBパスワードを再入力します。
ユーザーsambashareを追加しました。

Samba共有ディレクトリを作成する

[root @ server〜]#mkdir / share

共有フォルダーの所有権を変更する

[root @ server〜]#chown -R sambashare:sambashare / share /

ファイル/etc/samba/smb.confを開き、以下の行を追加します。

[共有]
コメント=共有
パス= / share
書き込み可能=はい
有効なユーザー= sambashare

Sambaサービスを開始

[root @ server〜]#service smb restart
SMBサービスのシャットダウン:[OK]
SMBサービスの開始:[OK]

testparmコマンドを使用して構成を確認します

。
。
[共有]
コメント=共有
パス= / share
有効なユーザー= sambashare
読み取り専用=いいえ

Windowsシステムでは、これを入力します run

ここに画像の説明を入力してください

次に、sambaのユーザー名とパスワードを入力します

ここに画像の説明を入力してください

できた

ここに画像の説明を入力してください


どうもありがとうございました。初心者向けの非常に鮮やかなチュートリアルをご覧ください。
アレックス

@Alexどういたしまして... :
最大
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.