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 código 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?
Respostas:
Você quer a
--exclude
bandeira. Por exemplo, um rsync local:É 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
fonte
a/cache
. UPD Veja esta resposta--exclude /cache/
(com o /) à esquerda, apenas excluirá oa/cache
diretório, e não qualquer diretório nomeadocache
.a/ b/
na linha de comando acima, o que isso significa?a/
é o diretório do qual estamos sincronizando (ou copiando);b/
é o diretório em que estamos sincronizando.