2013-07-16 222 views
5

我希望rsync排除包含具有特定名稱的文件的所有目錄,例如「.rsync-exclude」,獨立於「.rsync」的內容 - 排除「文件。使rsync排除包含具有特定名稱的文件的所有目錄

如果文件「.rsync-exclude」只包含「*」,我可以使用rsync -r SRC DEST --filter='dir-merge,- .rsync-exclude'

但是,應該排除獨立於「.rsync-exclude」文件內容的目錄(至少可以將「.rsync-exclude」文件留空)。

任何想法?

回答

4

rsync的不支持這一(至少在手冊頁並沒有提及任何東西),但你可以做的兩個步驟:

  1. 運行find找到.rsync-exclude文件
  2. 管這個名單--exclude-from(或使用的臨時文件)

    --exclude-from=FILE 
         This option is related to the --exclude option, but it specifies a FILE that contains exclude patterns 
         (one per line). Blank lines in the file and lines starting with ';' or '#' are ignored. If FILE is -, 
         the list will be read from standard input. 
    

可替代地,如果你不介意把在文件的東西,你可以用:

 -F  The -F option is a shorthand for adding two --filter rules to your command. The first time it is used 
      is a shorthand for this rule: 

      --filter='dir-merge /.rsync-filter' 

      This tells rsync to look for per-directory .rsync-filter files that have been sprinkled through the 
      hierarchy and use their rules to filter the files in the transfer. If -F is repeated, it is a short- 
      hand for this rule: 

      --filter='exclude .rsync-filter' 

      This filters out the .rsync-filter files themselves from the transfer. 

      See the FILTER RULES section for detailed information on how these options work. 
4

老問題,但我有同樣的..

您可以添加以下過濾器:

--filter="dir-merge,n- .rsync-exclude" 

現在,您可以在任何文件夾中放置.rsync-exclude文件,並逐行寫入要排除的文件和文件夾的名稱。例如:

#.rsync-exclude file 

folderYouWantToExclude 
allFilesThatStartWithXY* 
someSpecialImage.png 

所以你也可以在那裏使用模式。

什麼,你不能做的是:

#.rsync-exclude file 

folder/someFileYouWantToExlude 

希望它能幫助!歡呼聲

相關問題