将文件从Windows复制到Linux


15

我正在写一个脚本。它将运行一台Linux机器。它的目标包括linux,solaris和windows。

我知道我可以使用scp在* nix之间复制文件。但如何从Windows复制文件?

这些窗口是测试机器,不能指望安装特定的软件,因为操作系统可以经常重新安装。

Answers:


20

使用Samba

Samba提供与Windows兼容的文件共享服务。

您可以/srv/samba/sharename在Linux计算机上共享目录(例如),并从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一起使用。但复制文件时仍然需要人为参与。由于我的脚本将在一个Linux上运行并且机器已经安装了samba,我如何让一个脚本执行复制工作?看来我最好将Windows磁盘挂载到Linux,然后我可以在Linux中访问它。桑巴可以这样做吗?
亚历克斯2013年

是的,Samba可以做到这一点。更好的是,您根本不需要安装Windows共享。您可以使用smbclient连接到Windows共享,复制文件并断开连接。我编辑了我的答案,看看它。
jaume 2013年

不客气,我很高兴能帮到你。
jaume 2013年

1
特别-c是在简单的情况下,该选项值得使用。在我的机器上,密码作为一个简单的参数(没有任何选项)。此外 - 我更喜欢通过调用保持凭证远离命令行读取器(使用ps[h]top,例如)-U $(cat .username) $(cat .password)
Tomasz Gandor 2014年

2

我知道你说你不能指望安装特定的软件,但是Windows的SSH / SCP / SFTP客户端不需要任何特殊的安装; 只有可执行文件可用。我一直在谈论的PuTTY及其伴侣pscppsftp工具,但我确信存在替代方案。pscp并且psftp可以完全从命令行驱动,因此非常适合自动化任务。它们都有一个-batch开关,被描述为“禁用所有交互式提示”,几乎可以肯定可以利用。

由于您可能已在服务器上安装并配置了SSH / SCP / SFTP服务器,因此无需在任何主机上安装任何软件,只是为了复制这些文件。

另一个好处可能是PuTTY在许可许可下是开源的,所以如果它不能直接开箱即用,那么按照你喜欢的方式行事应该相对容易。


谢谢你的推荐。我会尝试pscp和psftp。它们也是很棒的工具。
亚历克斯2013年

1

我是CentOS 6用户,所以我试过这个方法CentOS 6

使用安装samba

[root @ server~] #yum install samba

查询确认

[root @ server~] #rpm -qa 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并添加以下行。

[分享]
评论=分享
path = / share
可写=是
有效用户= sambashare

启动samba服务

[root @ server~] #service smb restart
关闭SMB服务:[确定]
启动SMB服务:[确定]

使用testparm命令检查配置


[分享]
评论=分享
path = / share
有效用户= sambashare
只读=否

在Windows系统中键入此内容 run

在此输入图像描述

现在输入samba用户名和密码

在此输入图像描述

你完成了

在此输入图像描述


非常感谢,max。为你的新手提供非常生动的教程。
亚历克斯

@Alex欢迎你... :-)
最大
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.