如何从命令行通过FTP上传一个文件?

yeg*_*256 128 linux ftp ubuntu

我需要从 Ubuntu 上传一个文件到 FTP 服务器。此操作应在脚本中完成(在非交互模式下)。什么是正确的语法ftp

我正在尝试这个,但无济于事:

$ ftp -u ftp://user:secret@ftp.example.com my-local-file.txt
ftp: Invalid URL `ftp://'
Run Code Online (Sandbox Code Playgroud)

Mar*_*rty 216

这是一种方法:

$ ftp -n <<EOF
open ftp.example.com
user user secret
put my-local-file.txt
EOF
Run Code Online (Sandbox Code Playgroud)

或者,在将运行 ftp 命令的用户的主目录中创建(或编辑) ~/.netrc 文件,为其提供适当的权限 ( chmod 0600 ~/.netrc),并添加以下内容:

# ~/.netrc
machine ftp.example.com
login user
password secret
Run Code Online (Sandbox Code Playgroud)

然后省略登录信息,如:

$ echo put my-local-file.txt | ftp ftp.example.com
Run Code Online (Sandbox Code Playgroud)

另外,这里是你如何使用 curl 做同样的事情:

$ curl -T my-local-file.txt ftp://ftp.example.com --user user:secret
Run Code Online (Sandbox Code Playgroud)

  • 卷曲+1。整洁、干净、开门见山!在 Debian/Ubuntu 中,如果没有,请“apt-get install curl”。 (3认同)
  • `curl` 解决方案是最好和最简单的 (3认同)
  • ftp.example.com:需要该连接的端口。 (2认同)
  • 对于那些要使用“curl”的人来说,如果密码包含特殊字符,请将密码放在单引号“'”内,这一点很重要。否则你最终会得到 `curl: (67) Access returned: 530` (2认同)
  • 要上传到特定文件夹,请在文件夹名称后加一个斜杠:`ftp://ftp.example.com/myFolder/` 否则你会得到“FTP 上传失败:553” (2认同)
  • @Xanlantos 是的。您可以省略密码,curl 会提示您输入密码。 (2认同)

小智 21

我可以推荐ftp-upload。这是一个简洁的小工具,您可以通过sudo apt-get install ftp-upload.

用法示例:

ftp-upload -h {HOST} -u {USERNAME} --password {PASSWORD} -d {SERVER_DIRECTORY} {FILE_TO_UPLOAD}
Run Code Online (Sandbox Code Playgroud)


div*_*gon 6

你也可以试试lftp

下面是一个例子:

lftp -e 'cd folder1/folder2; put /home/path/yourfile.tar; bye' -u user,password ftp.theserver.com
Run Code Online (Sandbox Code Playgroud)

请参阅此处了解更多详细信息,并参阅LFTP 手册

.


小智 5

安装 ncftp 并使用附带的ncftpput工具,语法大致如下:

ncftpput -u ftpuser -p ftppass ftphostname /path/where/to/upload localfile.name
if [ $? -ne 0 ]; then echo "Upload failed"; fi
Run Code Online (Sandbox Code Playgroud)

您甚至可以检查上传状态是好还是坏。普通的ftp客户端也可以与expect一起使用。


Pau*_*aul 5

您需要修复声明中给出的 URL。您收到错误是因为 URL 不完整 - 它缺少您正在上传的对象的名称。像我在下面所做的那样在“example.com”之后添加文件名后,您将看到单个命令确实按您的预期工作。

尝试这个:

ftp -u ftp://user:secret@ftp.example.com/my-local-file.txt my-local-file.txt

  • ftp: 无效选项 -- 'u' (12认同)
  • 确实 :( ftp: u: 未知选项 (2认同)