it-swarm-pt.com

RSync - Excluindo um subdiretório específico e seus filhos onde o subdiretório existe em níveis diferentes

G'Day,

Estou usando o rsync para sincronizar recursivamente uma árvore de pastas remotas semelhante à seguinte:

/folderA/a1/cache
/folderA/a1/cache/A1
/folderA/a1/cache/A2
/folderA/a1/somefolder
/folderA/a1/someotherfolder
/folderA/a2/somefolder/cache
/folderB/cache/
/folderB/b1/somefolder/cache
/folderB/b1/somefolder/yetanotherfolder/cache
/folderB/b1/somefolder/yetanotherfolder/cache/B1
/folderB/b1/somefolder/yetanotherfolder/cache/B2

Não sei como será a árvore de pastas e que ela mudará com o tempo. Então, o que eu quero poder fazer é recursivamente sincronizar o acima, mas excluir a pasta "cache" e todas as subpastas que ela contém, para que eu acabe sincronizando:

/folderA/a1
/folderA/a1/somefolder
/folderA/a1/someotherfolder
/folderA/a2/somefolder
/folderB/
/folderB/b1/somefolder
/folderB/b1/somefolder/yetanotherfolder/

Alguma sugestão?

38
TheEdge

Você quer o --exclude flag. Por exemplo, um rsync local:

rsync -a --exclude cache/ src_folder/ target_folder/

É realmente simples - a regra de exclusão corresponderá a um diretório chamado "cache" em qualquer lugar da sua árvore.

Para obter mais informações, procure "--exclude" e a seção "FILTER RULES" na página de manual do rsync:

http://www.samba.org/ftp/rsync/rsync.html

57
Jander