php - 复制已安装驱动器上的文件

标签 php linux windows shell

所以我不得不编写一个脚本来分离网络文件服务器上的某些图像并备份它们以保留文件结构。为此,我将文件服务器作为一个文件夹安装在我的 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 上的新位置机器?

编辑:如果文件将被往返 - 我想知道如何在没有它的情况下执行此操作,或者至少指向正确的方向,以便我可以阅读执行此操作的方法。

最佳答案

cpsmb 协议(protocol)都不够智能,无法实现文件的源+目标位于同一台远程服务器上。 cp 将简单地做它通常的事情并从源文件中吸取所有数据(将其复制到客户端机器),然后将其吐回服务器上的目标文件中。所以是的,这将是通过客户端的往返行程。

对于这类事情更好的解决方案是使用 SSH 远程命令,将其转变为纯粹的服务器端操作:

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

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

关于php - 复制已安装驱动器上的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17702550/

相关文章:

javascript - Ajax:如何使用 FormData 和 jQuery 发送 'empty' 文件并在 $_FILES 中获取它

linux - 海湾合作委员会错误 : 'for' loop initial declaration used outside C99 mode

php - 将另一个 PHP 重新加载到 DIV 中

php - 使用php删除sql数据库中的行

linux - 如何创建一个具有退出和继续选项的 while do done 脚本?

c++ - 像 ListView 这样的资源管理器

c++ - 如何将简单的 API 添加到我的 C++ 应用程序以供 LabView 访问?

c++ - 检测键是否是加载/安装的注册表配置单元的根

php - Doctrine 2 和 Zend Framework 2.2 的数据库名称注释

linux - 为什么我的 wget 安装 wordpress 会失败?