大量小文件服务器间传输最佳实践
场景描述:
目标:将服务器A的某个文件夹同步传输到服务器B;
硬件条件:服务器A与服务器B之间通过万兆网连接;
待传输文件:包含海量的小文件。
常规方法:
直接使用scp或rsync进行传输
scp -r /source/path 172.16.150.201:/remote/path
由/source/path
中包含大量的小文件,scp和rsync会频繁开启会话,大量的时间被用于开启和关闭传输会话,因此效率低下。
加速方法
考虑使用tar + scp的方式,先对文件进行压缩,然后再使用scp进行传输。
但是tar的压缩方式是单进程,也会受到小文件过多的问题限制,因此考虑使用tar+pigz来进行
压缩:
tar -cf - ./data | pigz -p 8 > data_archive.tar.gz
传输: 使用常规的scp或rsync进行传输。
解压:
pigz -dc -p 8 logs.tar.gz | tar -xf -
如果压缩的文件特别大,不方便传输和验证,还可以采用分片压缩的方式。
压缩:
tar -cf - ./data | pigz -p 12 | split -b 10G - data_archive.tar.gz.
传输: 使用常规的scp或rsync进行传输。
解压:
cat data_archive.tar.gz.* > data_archive.tar.gz
pigz -dc -p 8 data_archive.tar.gz | tar -xf -
版权声明:
本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自
Hao.Jia's Blog!
喜欢就支持一下吧