原生scp -r排除指定文件方法
需求
从开发板拷贝bag回来太大了,希望可以调用scp -r
的同时排除掉指定文件提高速度。
探索
文献基本都推荐rsync -a --exclude
或者rsync -av -e ssh --exclude
考虑到嵌入式系统多采用busybox
并不支持rsync
希望有一种原生支持的命令进行替代
解决
受到ssh与tar的奇妙组合 - azureology - 博客园启发
可以让tar
完成文件排除,通过管道还原文件内容
# 从PC端发起
ssh guest@<guest_ip> "cd /home/guest;tar cvf - ./bag --exclude='1.bag'"|tar xf -
# 从开发板端发起
tar cf - ./bag/ --exclude='1.bag'|ssh host@<host_ip> tar xf - -C /home/host