最近在写一个eclipse 插件,用于将一个项目中的指定类型的文件同步到另一个文件夹下(在本机执行)
之前研究过的文件同步是从本地到远程,可以使用ssh连接和命令,本机文件夹同步最好的方法是使用同步命令。
windows环境下使用robocopy
robocopy [src directory] [des directory] *.txt *.bak /s
这里是同步src目录下的txt和bak文件到des目录下,不复制空文件夹
其他的操作可以查看robocopy的指南。
同样的操作在linux下就没有这么容易了,考虑过使用cp命令,但是cp命令首先需要执行find命令
将结果作为管道输出给cp命令,这样还不如写sh脚本,于是动起了rsync命令的注意,毕竟它是文件夹同步最常用的,
可以用于本机和远程,也应该可以用于本机文件夹之间。
研究过程中遇到的最大问题是如何像robocopy一样限制复制文件类型和不复制空文件夹,
最后前一条使用include="*."{txt,bak},后一条使用 --prune-empty-dirs 这个options解决
rsync -arvP --prune-empty-dirs -u --include="*/" --include="*."{txt,bak}
--exclude="*" [src directory] [dst directory]
剩下的问题就是只同步更新过的文件和设置复制文件的访问权限了。