例如,我的 Linux 服务器上有数据库备份,我想编写一个脚本将其上传到远程 FTP。我尝试了该put
命令,但它一次只能传输一个文件。然后我尝试了 mput 命令,但它只显示我想要传输的文件的问号(也许我使用错误了?..)
我尝试了这个:
#!/bin/bash
ftp -n <<EOF
open ftp.server.com
user name password
cd backup
mput /backup/*
EOF
但它不起作用。它输出我想要传输的文件的名称,名称末尾带有问号。我是否遗漏了什么,或者是否有更好更简单的方法?
答案1
看一下ncftp
,它附带一个实用程序(ncftpput
),可以为此目的编写脚本:
$ ncftpput -R ftp.server.com /remote/path /backup
该-R
标志表示递归模式。您可以将身份验证详细信息放在单独的文件中。请参阅手册页 (ncftpput(1)
) 了解详情。
答案2
另一种选择可能是使用CurlFtpFS,一个 FUSE 文件系统驱动程序,它将 FTP 主机公开为已安装的目录(允许您使用任何常规工具(包括)访问这些文件cp
)。我不知道它的效果如何,但从快速的谷歌搜索来看,它看起来非常有前途。CurlFtpFS 实际上比 FUSE 更早,因此应该很稳定。
要使用它,请安装适合您的发行版的软件包(例如,Arch 和 Debian 使用软件包名称curlftpfs
),加载fuse
模块,然后sudo curlftpfs ftp.example.com /mnt/ftp/ -o user=username:password,allow_other
,用适当的值替换服务器名称、挂载点、用户名和密码。
链接页面上有更多详细信息,但这应该可以帮助您入门。
答案3
你可以使用 lftp
lftp ftp://user:[email protected] -e "mirror -e -R /local/folder /remote/folder ; quit"