下载ftp中的目录

   ftp本身不提供目录下载命令,不管get还是mget都只能下载文件,区别在于mget可以下载多个文件,而get只能下载单个文件。

   那么可以选择一个取巧的办法下载ftp服务器中的目录,那就是wget命令

比如ftp服务器(IP:192.16.1.123,端口:21)在test目录下有个download目录,要将其下载下来,假设账户和密码均为ftp。

$ wget ftp://192.16.1.123:21/test/download --ftp-user=ftp --ftp-password=ftp -r

如此即可把整个download目录下载下来。-r用了下载目录


若要将ftp整个下载下来:

$ wget ftp://192.16.1.123:21/* --ftp-user=ftp --ftp-password=ftp -r

*号不能丢,否则只能下载下来一个index索引文件

当然用wget并不能完全解决问题,比如一个Android源码,由于其目录层次太深,太复杂,wget可能会出现下载不完全的情况。


当然向这种下载目录的行为是很傻的,而上传这个目录的人更傻,将目录打个包岂不是利人利己。

下载文件,尤其是zip等二进制文件时,切记将ftp切换到binary模式,否则可能会丢失一些东西。

  • 12
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
你可以使用 `ftp` 模块来在 Node.js 下载 FTP 目录。下面是一个简单的代码示例: ```javascript const fs = require('fs'); const ftp = require('ftp'); const downloadDirectory = (ftpClient, remoteDirectory, localDirectory) => { ftpClient.list(remoteDirectory, (err, files) => { if (err) { console.error(err); return; } files.forEach((file) => { const localPath = `${localDirectory}/${file.name}`; const remotePath = `${remoteDirectory}/${file.name}`; if (file.type === 'd') { // 如果是目录,则递归地下载目录 fs.mkdirSync(localPath, { recursive: true }); downloadDirectory(ftpClient, remotePath, localPath); } else { // 如果是文件,则下载文件 ftpClient.get(remotePath, (err, stream) => { if (err) { console.error(err); return; } stream.pipe(fs.createWriteStream(localPath)); console.log(`Downloaded ${localPath}`); }); } }); }); }; // 创建 FTP 客户端 const ftpClient = new ftp(); // 连接到 FTP 服务器 ftpClient.connect({ host: 'ftp.example.com', user: 'username', password: 'password' }); // 在连接成功后执行下载操作 ftpClient.on('ready', () => { const remoteDirectory = '/path/to/remote/directory'; const localDirectory = '/path/to/local/directory'; downloadDirectory(ftpClient, remoteDirectory, localDirectory); // 下载完成后关闭 FTP 连接 ftpClient.end(); }); ``` 你需要替换示例的 `host`、`user`、`password`、`remoteDirectory` 和 `localDirectory` 为你实际的 FTP 服务器信息和目录路径。这样,运行该脚本后,FTP 目录将被递归地下载到本地目录

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值