![我可以将一个文件上传到 FTP 中的多个域文件夹吗?](https://linux22.com/image/1304965/%E6%88%91%E5%8F%AF%E4%BB%A5%E5%B0%86%E4%B8%80%E4%B8%AA%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0%E5%88%B0%20FTP%20%E4%B8%AD%E7%9A%84%E5%A4%9A%E4%B8%AA%E5%9F%9F%E6%96%87%E4%BB%B6%E5%A4%B9%E5%90%97%EF%BC%9F.png)
我想将同一个 index.php 文件上传(并最终覆盖)到多个域文件夹。有没有办法一次性完成此操作或使用快捷方式?
我正在使用 Filezilla。
谢谢
编辑:
由于我对 FTP 命令还不是很熟悉,所以我设法找到了一个 ftp 程序来帮助我实现我想要的功能。它叫做火影忍者。它有一个我可以遵循的示例脚本,最终我得到了类似这样的内容并简单地执行它:
Connect "ftp.site.com", "username", "password"
LocalChDir "D:\folder"
RemoteChDir "public_html/domainfolder1"
Put "file.txt"
RemoteChDir "../domainfolder2"
Put "file.txt"
RemoteChDir "../domainfolder3"
Put "ifile.txt"
Disconnect
答案1
Windows 答案
这实际上是为 music2myear 的答案提供了一个工作脚本,但没有为 FileZilla 提供。
我曾经使用批处理脚本和一个名为的程序来执行此操作FTP服务器- FileZilla 当时可能不支持命令行,因为我用它做其他所有事情。如果您愿意,应该很容易修改 FileZilla。
@FOR /F "eol=; tokens=1,2,3,4" %%A IN (ftpdetails.txt) DO call ncftpput -u %%A -p %%B %%C %%D %1
@pause
它将从文本文件 ( ftpdetails.txt
) 中获取以下格式的目的地:
username password ip destinationfolder ; comment
username2 password2 ip2 destinationfolder2 ; comment2
此修改版本将同时开放所有目的地,但存在泛滥的风险:
@FOR /F "eol=; tokens=1,2,3,4" %%A IN (ftpdetails.txt) DO start ncftpput -u %%A -p %%B %%C %%D %1
@pause
用法是将我想要上传的文件拖到批处理文件的顶部。可以通过打开 %1 将其替换为要上传的文件名。事实上,空格会破坏它。
答案2
filezilla.exe -u “c:\ftp\TestFile.txt” ftp://ftp_user:ftp_password@ftp_host_ip/folderpath -close
Filezilla 可以编写脚本。如果您使用的是 Windows,其内置的 FTP 也可以编写脚本。
只需编写一个脚本,将文件移动到所有所需的主机,并在更新索引文件时运行它。
脚本说明
当您想使用接受命令行参数的程序自动执行任务时,可以通过脚本来实现。
您将需要以下信息:
- 您想要上传的文件的完整路径。
- 用户名、密码、服务器 IP 地址或域名以及需要更新的文件的文件夹路径。
如果您已在 FileZilla 中为每个服务器设置了连接配置文件,则可以使用“远程站点”。您可以按名称调用连接配置文件,这样就无需为每个连接输入用户名、密码、服务器和路径。不过,查看文档后,我认为输入信息更简单、更清晰。
在 FileZilla 中,为您想要上传文件的每个服务器创建一个连接配置文件。
打开记事本。输入以下根据您的具体设置和需求更改的文本。将文件另存为(任意名称)。bat。
filezilla.exe -u "<full path to the file on your computer>" ftp://username:password@server/path -close
根据需要添加此行的多个副本:每个要更新的文件一个。
Bob 的回答展示了如何使用循环和源文件来自动化大部分过程。理解循环的语法要困难得多,但他的解决方案可以做同样的事情,而且如果您必须更新大量服务器,它可能更易于管理。