2011-01-05 51 views
0

我使用rsync命令来同步远程两个目录>本地rsync的滤波

该命令被

os.system('rsync --verbose --progress --stats --recursive\ 
      --copy-links --times --include="*/" --include="*good_name*.good_ext*"\ 
      --exclude-from "/myhome/mydir/src/rsync.exclude"\ 
      %s %s'%(remotepath,localpath)) 

(在Python脚本中使用)欲排除具有相同文件中的某些目录,我还想包括。

我想包括递归

any_dir_name/any_file_name.good 

,但我想排除在

bad_dir_name/ 

我用--exclude-from这里是我从文件中排除任何及所有文件

* 
/*.bad_dir_name/ 

不幸的是,它不起作用。我怀疑它可能与--include="*/"有关,但如果我将其删除,则该命令根本不同步任何文件。

+1

我建议你尝试在superuser.com上询问这个 – 2011-01-05 18:17:55

+0

你有没有试过看-f选项?它在FILTER RULES下的手册页中进行了介绍。另外,一个快速和肮脏的解决方案可能会写一个“find”命令并结合一个打印动作并输出到一个文件。你走了,即时完美排除档案。 – 2011-01-05 18:19:33

回答

2

我明白了。我以前-vv根据该规则目录中没有显示在同步列表和自rsync的支持正则表达式查找, 我改变了我的发言包括从"*/"

--include="*[^.bad_dir_name]/" 

,现在一切工作正常。

+0

不,rsync在其过滤器中不支持正则表达式。它支持简单的glob表达式(请参阅https://download.samba.org/pub/rsync/rsync.html)。你真正做的只是包含名字不以 这个字符结尾的目录。 (句点),b,a,d,_,i,r,n,m或e。例如,您会错过任何名为“food”或“bin”的目录。 – Bklyn 2016-08-31 17:38:57