通过Mac终端上传文件夹

18

我该如何通过FTP Mac终端上传整个文件夹?

7个回答

27

您是否必须使用 ftp?我喜欢在远程主机支持 ssh(许多主机都支持)时使用 scp(安全拷贝)。

scp -r mydirectory username@example.com:destdir

-r 意味着"递归",因此它将递归地复制整个目录。将username替换为您的用户名等等,destdir是远程服务器上的相对路径(如果您登录后所在的任何目录),只要不使用前导斜杠 /--那么它就是绝对路径。


20
他请求使用FTP,为什么要提供这个答案呢?使用FTP的理由确实存在,无论我是否更喜欢SCP(安全拷贝协议)...事实上我确实更喜欢SCP。 - kasthor
5
@ksthor 很好的观点,但这正是我在谷歌搜索“ssh上传整个文件夹”的时候所寻找的答案 :) - Automatico
1
因为这是其他人在寻找类似解决方案时的重要资源。是的,即使在2017年,@kasthor。 - LinusGeffarth
1
正确答案由DEAD10CC给出,即使用ncftpput。 - Yala Yala Herzlin
1
随着时代的变迁,重新审视答案是很好的。我认为6年前homebrew还不存在,所以获取未预装的工具(如ssh/scp)可能更容易。无论如何,我真心希望每个人都已经超越了在公共和私人网络上使用明文FTP的阶段。 - dustmachine

17
    terminal>ftp user@host
     password:xXxXx
    ftp>mkdir <remote dir>
    ftp>cd <remote dir>
    ftp>lcd <local dir>
    ftp>mput *
    ftp>close

这将会:

  • 连接
  • 创建远程文件夹(或目录)
  • 进入该文件夹
  • 进入本地文件夹(如果你没有从那里开始)
  • 复制多个文件(全部)
  • 再次注销

在网上查看手册页面


1
对我来说非常好用!谢谢!唯一需要改变的是,我会使用sftp代替ftp。相同的命令,只需将ftp替换为sftp。这样更加安全。 - daviesgeek
需要使用 mput -r * 进行递归复制。 - voutasaurus
自从High Sierra以来,Mac已经删除了FTP。上述方法可以解决问题,但需要安装FTP:https://www.petenetlive.com/KB/Article/0001364 - Alessandro Santamaria

13

mput是完成此任务的正确命令,但我认为OS X的ftp命令行客户端实现不支持通过mput *递归复制目录。

因此,一种可能的解决方案是使用替代的ftp命令行客户端,如NcFTP,它附带许多Linux发行版并且也可用于OS X。有关详细信息,请参见NcFTP下载页面

ncftpput -R -u user -p passwd <remote-host> <remote-dir> <local-dir>

-R用于递归模式。


谢谢 @Joker 推荐 NcFTP。这对我的需求非常完美。我能够传输整个目录,而且在脚本文件中只需要一行代码就可以实现,感觉很优雅。 - theUtherSide
3
现在,在Mac上安装ncftp,您可以使用命令 brew install ncftp(假设您已经安装了Homebrew,您可能应该安装)。 - Frank Farmer
这是最好的解决方案...因为它只需要一行代码就能完成任务。 - Yala Yala Herzlin

1

与您从任何其他命令行上传整个文件夹的方式相同:

  1. 将其制作成zip或tar归档文件,然后放置该归档文件。
  2. 如果您想上传单个文件,但要全部上传,请使用“mput”。

0

Go - 连接到服务器。输入其他计算机的IP地址和适当的凭据。点击+添加该服务器,然后双击打开它。现在您可以拖放文件夹并进行递归复制。


这对我来说很好用...但是出于某种原因,只能读取,无法上传任何东西。 - Frank Farmer
3
他问如何使用终端完成这个操作。 - Florian Segginger

0

你尝试过使用mput吗?你可以传递通配符(*)来上传所有文件...


我输入了“put *文件夹名称”,但是却得到了“文件夹名称:不是一个普通文件”的提示。 - Zach Smith

0

关于通过 Mac 进行 FTP 是否能够处理递归复制存在一些疑问。
如果您可以访问两台计算机的 SSH,您可以从源计算机执行以下操作: tar -cf - 目录 | ssh user@hostB "cd target_dir; tar -xf -"

mput * 对目录中的对象应该可以正常工作,但如果您有子目录,则可能无法正确获取文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接