主 题:用tar裸流管道传输 避免rsync的检索速度慢和cpu开销(文件数量大/小文件多的情况)
发 布 者:sudoerx
标签分类: 技术
时 间:2026-08-02 01:07:40
内容预览:之前用rsync准备传300G的文件 估计是小文件太多运行后显示sending incremental file list 然后停住正在扫描磁盘(最主要原因):在开始传输前,rsync 需要先在本地和远程两端递归遍历所有目录,在内存中对比两边文件的属性(大小、修改时间)。如果你的文件夹里有几万甚至几十万个文件,或者处于机械硬盘(HDD)环境,这个扫描过程可能需要 几分钟到半小时,在此期间终端不会有任何新输出。SSH 连接假死/超时:如果文件列表扫描时间太长(例如超过 10 分钟),防火墙或 SSH 服务器可能会因为“长时间无数据传输”而默默切断 TCP 连接,导致命令真正卡死。 (可以加入 --info=progress2 和 SSH 保活参数 -o ServerAliveInterval=15 改进超时)如果扫描了几十万个文件耗时太久,或者内存溢出(OOM)我这次是换个方式,用tar纯裸流打包,不消耗 CPU,速度取决于磁盘和网络;对于超海量小文件,tar 的扫描效率比 rsync 高很多--甚至不考虑压缩问题,因为大盘1c1G性能很弱。以hostbrr的storagebox为例,下面的方法复制可以最省资源开销(不会触发资源限制)复制/mnt/storage下的全部文件夹排除ALREADY-COPIED文件夹(--exclude=文件夹名字 可以重复)先安装个pv 可以显示进度 apt install pvtar -cf - -C /mnt/storage --exclude='ALREADY-COPIED' . | pv | ssh -p 53211 -i rsa.key [email protected] "tar -xf - -C /home/" 复制admin文件夹但排除tmptar -cf - -C /mnt/storage --exclude='admin/t
直达链接: https://www.nodeseek.com/post-852980-1
 
 
Back to Top