我可以直接从 Linux 服务器访问 Windows 共享并复制文件吗

我可以直接从 Linux 服务器访问 Windows 共享并复制文件吗

我有一个使用 samba 创建的 Windows 共享。

/mnt/user_new它位于我想要从中复制文件/var/www/myproject/files/ 的ubunutu 服务器中/mnt/user_new/files。这是为了备份我的文件。并删除原始文件。

我正在使用 PHP。我尝试过 PHP

$file = '/var/www/html/bmw/myproject/files/0000000.pdf';
$newfile = '/mnt/user_new/0000000.pdf';

if (!copy($file, $newfile)) {
        echo "failed to copy $file...\n";
} 

但我收到权限被拒绝错误。

Severity: Warning

Message: copy(/mnt/user_new/0000000.pdf) [function.copy]: failed to open stream: Permission denied

有什么方法可以将文件从我的 Linux 服务器复制到 Windows 共享。我有用于访问 Windows 共享的用户名和密码,但我不知道如何在这里使用它。有什么方法可以传递用户名和密码吗?

说实话这是我第一次使用 Samba,windows 共享是由网络管理员创建的。我花了将近 8 个小时才完成这个简单的复制。但做不到。

请帮助我。提前谢谢。

答案1

因此,您的 Linux 服务器在本地目录上安装了 Windows 共享,但显然您无法写入它。我猜想此共享已设置为访客访问,因此处于只读状态。请参阅关于安装 Windows 共享的 ubuntu 文档作为解决此配置问题的起点。

作为暂时的解决方法,我建议使用smbclient从命令行或 shell 脚本执行备份。此命令可以帮助您在必要时找出 Windows 共享的路径:

$ smbclient -L <hostname>

但正如我在评论中所建议的那样,从 FS 浏览器(Gnome、KDE ​​甚至 Windows Shell)查找它可能更简单。该程序或多或少像 SMB/CIFS 协议上的 ftp 客户端一样运行,但它需要精确的参数,因此您必须进行调查。例如,如果您的 Windows 服务器属于活动目录域,则必须将参数传递给-k它以smbclient告知它。您还必须在命令行上传递用户名和密码。手册页上讨论了许多其他参数,这些参数可能根据您的情况而很重要(例如,您需要加密连接吗?)。

在交互模式下,如前所述,此程序的工作方式类似于 ftp 客户端,因此如果您熟悉 ftp 命令,那么您应该会很熟悉此工具。您还可以在命令行上传递一系列 ftp 指令,这可能是您想要用来自动执行备份的操作,直到共享安装得到修复。

最后,我还提到了systemphp 函数在需要从 php 脚本调用 shell 命令时非常有用。同样,所有这些都应该用作临时解决方案,直到共享问题得到修复:您必须在脚本中的某个位置或可从 访问的文件配置文件中写入您的凭据smbclient这是一个不好的做法。如果可能的话,您应该尝试进行手动备份,以交互方式提供您的凭证。

相关内容