繁体   English   中英

如何在使用rsync时排除二进制文件

[英]How to exclude binaries when using rsync

我想rsync一个目录服务器从mac机器到linux机器,同时排除编译文件,如.o文件和二进制可执行文件。 如何排除二进制文件?

我目前使用的是:

rsync -av --compress --exclude="*.o" dir server:dir

这是一个棘手的问题,因为Unix系统没有“二进制”和“文本”文件之间区别的硬性和快速定义。 你可以通过使用file命令并在输出中搜索text来做得很好(参见如何从linux中的文本文件中告诉二进制文件 ),所以我运行find来生成一个文件列表, file认为是文本,并将其用作rsync的文件列表:

find dir | xargs file | awk -F: '$2 ~ /text/ { print $1 }' | \
    rsync --files-from=- -av --compress dir server:dir

这需要进行一些调整以确保路径名相对于源目录是正确的,依此类推,但它应该接近你想要的。

从长远来看,我想重新构建我的构建过程,将生成的文件放在dir/build目录中,但这可能有助于现在:-)

您可以在目录中添加.cvsignore文件,并使用选项-Crsync

但这只是含糊不清的你指定的内容。 也许它很适合你,也许它假设除了你以外的其他东西。 所以要小心并正确测试。

此外,您可以在rsync之前运行find ,扫描完整的树以查找与您的“二进制”(可能是已编译的可执行文件?)相匹配的文件,并将所有名称放在一个排除文件中,然后使用选项--exclude-from

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM