如何在终端中通过FTP下载文件夹?


Answers:


9

mget是使用随附的FTP二进制文件可以获得的最接近的文件。您必须先mkdir和cd / lcd,然后获取所有文件,而不是匹配类似模式的文件*

prompt切换可能会派上用场。

FTP在目录中工作,而不在目录中作为文件容器。如果您绝对必须完成工作,并且ftp是唯一可以使用的工具-您可以拼凑一个expect脚本来为您驱动ftp。

值得庆幸的是,还有scp| rsync| wget以获得整个目录中有价值的文件。


好的...所以最重要的是,我无法一次下载整个文件夹;我必须下载单个文件,对吗?
daviesgeek 2011年

对。如果ftp完成任务,那么每个人都不会显示wget,sftp,scp和rsync。
bmike

谢谢... SFTP允许文件夹下载吗?
daviesgeek

糟糕(抱歉)-不。sftp与ftp的语法和局限性相同-只是使用ssh而不是ftp身份验证来保护连接。
bmike

如果您绑定到FTP协议,则可以使用lftp递归下载目录树。老派解决了这个问题。
伊恩·C

7

另一种方法是使用curl

curl ftp://ftp.com/mp3/* --user login:password -o /myfolder/*

我认为这可行,或逐个文件

curl ftp://ftp.com/mp3/mymusic.zip --user login:password -o mymusic.zip

希望对您有所帮助。


好的,非常感谢,但是有没有办法通过FTP执行此操作?
daviesgeek

太棒了!我没有意识到curl的FTP倾向性。谢谢!
bmike

是的...我也不是。我可能会更频繁地使用它。
daviesgeek 2011年

2
我正在尝试您的建议,但得到以下建议:curl: (78) RETR response: 550
Omer's

1
curl绝对无法处理。wget能够。
肯·夏普

3

使用scp (文档)sftp (文档)

scp -r login@myserverip:/remote/directory/path/ mylocaldirectory

那不是我要的 我的问题是:如何在终端中通过FTP下载文件夹?换句话说,我使用FTP中的哪些命令来下载文件夹?
daviesgeek 2011年

2
sftp远远优于FTP +1
bmike

1
@bmike:是的,但是较旧的ftp服务器可能不支持sftp。
PLL

3

我必须从Web服务器上下载22'000 +个网络摄像头图片,这对于Finder和FTP程序Cyber​​Duck都是一个挑战。

所以我做了以下(基于@bmike的回答):

mkdir ~/Desktop/image-dump-myserver
ftp ftp://myuser@myserver.com
# enter password

# You're now in the ftp console (where the world is still okay)

# Set the local folder
lcd ~/Desktop/image-dump-myserver

# cd into the desired folder (`ls`, `pwd` etc. all work here)
cd /httpdocs/images

# Toggle the interactive mode
prompt

# Download the desired files (all the images in my case)
mget *.jpg

然后将文件下载到所需的文件夹中:

local: image1433509292_1582.jpg remote: image1433509292_1582.jpg  
229 Entering Extended Passive Mode (|||50001|)  
150 Opening BINARY mode data connection for image1433509292_1582.jpg (63626 bytes)  
100% |***********************************| 63626        1.51 MiB/s    00:00 ETA  
226 Transfer complete  
63626 bytes received in 00:00 (0.98 MiB/s)  

local: image1427279963_0841.jpg remote: image1427279963_0841.jpg  
229 Entering Extended Passive Mode (|||50053|)  
150 Opening BINARY mode data connection for image1427279963_0841.jpg (67194 bytes)  
100% |***********************************| 67194        1.64 MiB/s    00:00 ETA  
226 Transfer complete  
67194 bytes received in 00:00 (1.04 MiB/s) 

local: image1439798493_1783.jpg remote: image1439798493_1783.jpg  
229 Entering Extended Passive Mode (|||50357|)  
150 Opening BINARY mode data connection for image1439798493_1783.jpg (48876 bytes)  
100% |***********************************| 48876        1.80 MiB/s    00:00 ETA  
226 Transfer complete  
48876 bytes received in 00:00 (996.81 KiB/s)  
....  

3

我在用

wget -r -l 10 --ftp-user='FTP_USER' --ftp-password='FTP_PASSWORD' \
    ftp://ftp.server.com/folder_to_download/*

不幸的wget是不支持并行下载。


0

请遵循以下说明:

类型

ftp

那么你在ftp中看起来像

ftp>

然后你打开服务器的IP

ftp> open xx.xxx.xxx.xx

然后会询问用户名,您将提供

Name:(your ftp server): your_username

然后它将要求输入密码

Password:  your_password

然后您应该登录并再次看到ftp> shell,可以键入“ ls”以列出所有文件,并且可以像在inix中使用cd一样进行导航

找到文件名后,可以使用

ftp> get filename

等等,该文件将下载到您从中打开shell localy的目录中

您无法下载目录,但可以导航到目录并下载多个(例如所有文件)

任务:下载多个文件

您需要使用mget命令,如下所示将多个文件从远程ftp服务器复制到本地系统。在传输每个文件之前,系统可能会提示您输入是/否(Y / N)答案(可以通过将-i选项传递给ftp客户端来禁用提示)。要下载所有文件,请输入:ftp> mget *

从信息http://www.cyberciti.biz/faq/linux-unix-ftp-commands/ 欢呼


ftp unix工具已从OS X中删除(我认为是Sierra)。
benwiggy
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.