![FTP:开始传输之前确定磁盘上文件的总占用空间](https://linux22.com/image/94097/FTP%EF%BC%9A%E5%BC%80%E5%A7%8B%E4%BC%A0%E8%BE%93%E4%B9%8B%E5%89%8D%E7%A1%AE%E5%AE%9A%E7%A3%81%E7%9B%98%E4%B8%8A%E6%96%87%E4%BB%B6%E7%9A%84%E6%80%BB%E5%8D%A0%E7%94%A8%E7%A9%BA%E9%97%B4.png)
我正在从 SFTP 服务器下载大量数据:多个文件夹、多个文件。我正在下载的所有内容的图表看起来就像一片长满树枝的森林。
该项目当前的想法是:
- 将所有文件FTP到本地环境
- 一旦所有文件都进入本地环境,就将它们解压
- 对每个文件运行数据完整性检查
- 将通过步骤三的所有解压数据推送到具有自动配置存储的数据库系统
我将所有数据本地存储在附加到 AWS 中 EC2 实例的 EBS 卷上。开始上述第一步后,我回到我的实例,发现 EBS 卷已满。因此,我将硬盘驱动器的大小加倍,重新启动第一步 - 几个小时后发现卷再次满了。
写出上面的过程后,我可以看到在我的一端开发一些脚本的价值,这些脚本迭代地处理数据的多个子集,以避免一次占用非常大的空间。但是,我希望偷懒,只在几个小时内配置一个巨大的 EBS 卷,一次完成所有工作,并为自己节省几个小时的开发时间。
鉴于我只能通过 SFTP 访问数据(无 ssh;无其他协议),是否有 FTP 命令可以告诉我所有这些文件在磁盘上的占用空间?我想使用该信息来了解我将配置的 EBS 卷大小的下限。
答案1
lftp
有一个内置du
命令,可以通过 sftp(或大概是 lftp 支持的任何协议)运行,通过递归列出所有内容并对其进行总结。
$ lftp sftp://user@hostname/
lftp HOST:~> du -s
… wait a while …
1656724 .
lftp 封装在德班,乌班图, 和几个基于 RPM 的发行版。