2011-01-05 79 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