复制已装入驱动器上的文件

时间:2013-07-17 14:29:39

标签: php linux windows shell

所以我必须编写一个脚本来分离网络文件服务器上的某些图像并备份它们以保留文件结构。为此,我将文件服务器作为文件夹安装在我的linux机器上,脚本将在其中运行。文件服务器是一个Windows框。

文件服务器的安装方式如下:

mount -t cifs //xxx.xxx.xxx.xxx/pictures$ -o username=imageuser,password=pa$$word images

如果我运行这样的复制命令:

cp images/somefolder/subfolder/someimage.jpg images/differentfolder/subfolder/someimage.jpg

我的问题是:

将“someimage.jpg”简单地从windows机器上的一个位置复制到另一个位置,或者将图像通过网络下载到linux盒子然后上传到windows上的新位置机吗

编辑:如果文件将被往返 - 我想知道如何在没有这个的情况下做到这一点,或者至少指向正确的方向,我可以通过这种方式来阅读。

1 个答案:

答案 0 :(得分:2)

cpsmb协议都不够智能,无法意识到文件的源+目标位于同一远程服务器上。 cp将简单地执行其通常的操作并从源文件中剔除所有数据(将其复制到客户端计算机),然后将其吐出到服务器上的目标文件中。所以是的,这将是客户的往返。

更好的解决方案是使用SSH远程命令,将其转换为纯粹的服务器端操作:

ssh imageuser@x.x.x.x 'cp sourcefile targetfile'

您仍然可以将文件服务器安装在本地计算机上以实际查看您正在处理的文件,但是通过ssh命令执行所有文件复制/移动操作以提高效率。由于服务器是Windows机器,您可能必须安装cygwin并运行ssh服务器。