linux - 解压大量小文件并再次压缩以提高效率并避免 S3 API 成本
问题描述
我有 1B+ gzip 文件(平均每个 50 kb),我想将它们上传到 S3 服务器。由于我需要为每个写入操作付费,因此将它们传输到 S3 成为一个巨大的成本问题。另外,这些文件非常相似,我想将它们压缩在一个大文件中,这样压缩效率也会提高。
在编写 shell 脚本时,我是一个新手,但我正在寻找一种方法,我可以:
- 查找所有 .gz 文件,
- 解压前1K,
- 压缩在一个文件夹中,
- 删除这 1K 批次,
- 迭代到下一个 1K 文件,
如果您能帮助我更有创意地思考以做到这一点,我将不胜感激。在我看来,唯一的方法是将它们全部解压缩并按每 1K 块压缩它们,但这是不可能的,因为我没有磁盘空间来压缩它们。
解决方案
用几个文件测试解压缩文件时使用了多少额外空间。尝试腾出更多可用空间(将 90% 的文件移动到另一台主机)。当文件相似时,10% 的文件的压缩率会很高。我想 10 块会适合,但每次你想解压缩它都会很紧。所以我会选择100块。
但首先要考虑一下您将来要如何处理这些数据。
从不使用它?删除它。
也许在遥远的将来有 1 次?冰川。
经常?使用较小的块,以便您可以更轻松地找到正确的文件。
推荐阅读
- php - 使用循环将图像插入wordpress动态字段
- javascript - Youtube iframe 使用自定义控件/在页面加载时切换静音/取消静音
- javascript - 如果使用 mongodb 匹配精确值,则返回记录
- python - Jupyter notebook 无法启动,需要帮助
- data-warehouse - 如何提高 maraidb 列存储数据仓库的指数级增长事实表的性能?
- javascript - 格式化 FullCalender 月视图、天数字段
- docker - Docker 挂载文件到容器中清除目录
- javascript - 第一个函数完成后执行第二个函数
- vba - Jacobian [vba] 所需方程的导数
- flutter - 为什么我的 TextEditingController 不起作用?