Hao*_*ang 10 tar zip archive file-transfer
我经常需要在服务器之间或向 aws s3 传输数百万个小文件(小图像、txt、json),平均每个文件 5-50k。
除了 zip/tar -cf 之外,是否有更快的方法将它们合并到单个文件中以优化传输速度?
Bib*_*Bib 13
类似的东西tar cz * | ssh <host> "tar xfc -"
?说真的,有什么问题吗tar
?此命令不会创建任何中间文件。
从其他答案中发展想法,您可以通过管道发送信息,甚至不在本地创建文件tar
。命令将类似于:
tar cf - * | aws s3 cp - s3://some-bucket/archive.tar
Run Code Online (Sandbox Code Playgroud)
该命令的优点是可以并行运行tar
和命令。aws
您甚至可以添加压缩(这将再次并行执行)
tar cf - * | gzip -c | aws s3 cp - s3://some-bucket/archive.tar.gz
Run Code Online (Sandbox Code Playgroud)
为了简化操作,您可以使用文件的顶级目录而不是使用*
:
tar cf - top_level_directory | aws s3 cp - s3://some-bucket/archive.tar
tar cf - top_level_directory | gzip -c | aws s3 cp - s3://some-bucket/archive.tar.gz
Run Code Online (Sandbox Code Playgroud)
受到其他答案的启发,您可以使用cpio
。似乎更快并且生成更小的文件:
ls |cpio -o |gzip -c | aws s3 cp - s3://some-bucket/archive.cpio.gz
Run Code Online (Sandbox Code Playgroud)
一是永远不要创建中间文件,正如其他答案中所建议的那样。这会减少本地 IO,但无法恢复部分上传。
\n还有其他选项可以进一步改进:
\ntar
以及您\xe2\x80\x99 所描述的内容。ZSTD 的速度不如 LZ4,但会在更短的时间内获得与 GZip 类似的压缩率。无论选择如何,这都可能会显着减少要传输的总数据量。cpio
而不是tar
. tar
不完全是一种节省空间的存档格式。这通常并不重要,但如果您要处理数百万个非常小的文件,则开销实际上相当大。cpio
仍然有不小的开销,但它比 xe2x80x99 少tar
,因此理论上在cpio
这里使用应该会导致要传输的数据量显着减少。 归档时间: |
|
查看次数: |
5496 次 |
最近记录: |