所以我不得不编写一个脚本来分离网络文件服务器上的某些图像并备份它们以保留文件结构。为此,我将文件服务器作为一个文件夹安装在我的 linux 机器上,脚本将在其中运行。文件服务器是一个windows box。
文件服务器是这样挂载的:
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 上的新位置机器?
编辑:如果文件将被往返 - 我想知道如何在没有它的情况下执行此操作,或者至少指向正确的方向,以便我可以阅读执行此操作的方法。
最佳答案
cp
和smb
协议(protocol)都不够智能,无法实现文件的源+目标位于同一台远程服务器上。 cp 将简单地做它通常的事情并从源文件中吸取所有数据(将其复制到客户端机器),然后将其吐回服务器上的目标文件中。所以是的,这将是通过客户端的往返行程。
对于这类事情更好的解决方案是使用 SSH 远程命令,将其转变为纯粹的服务器端操作:
ssh imageuser@x.x.x.x 'cp sourcefile targetfile'
您仍然可以将文件服务器安装在您的本地机器上以实际查看您正在处理的文件,但是通过 ssh 命令执行所有文件复制/移动操作以提高效率。由于服务器是 Windows 机器,您可能必须安装 cygwin 并运行 ssh 服务器。
关于php - 复制已安装驱动器上的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17702550/