Aparece no código abaixo, rsync
ignora --exclude
. Como eu corrigiria isso e estendê-lo para vários diretórios?
$ rsync --help | grep Usage
Usage: rsync [OPTION]... SRC [SRC]... DEST
$ man rsync | grep -- '--exclude'
--exclude=PATTERN exclude files matching PATTERN
$ sudo rsync -avz --exclude='/home/erwann/.cache/' '/home/erwann' '/run/media/erwann/bkup'
sending incremental file list
erwann/.cache/mozilla/firefox/otj9do4j.default-release/cache2/
erwann/.cache/mozilla/firefox/otj9do4j.default-release/cache2/index
erwann/.cache/mozilla/firefox/otj9do4j.default-release/cache2/doomed/
erwann/.cache/mozilla/firefox/otj9do4j.default-release/cache2/entries/
Os padrões consideram o bit do nome do caminho que não faz parte do caminho de origem. Isso significa que, para corresponder ao diretório
.cache
diretamente sob o caminho de origem/home/erwann
, você usaria/erwann/.cache/
como padrão (já que o/home
diretório é o quersync
usa como "transfer-root"):Ao ancorar o padrão de exclusão no topo do caminho no
/
início, evitamos combiná-lo nas partes inferiores da hierarquia de arquivos.Se você adicionar
/
no final do caminho de origem,/home/erwann
torna-se o "transfer-root" e o padrão pode, portanto, ser encurtado para/.cache/
. No entanto, agora também temos que adicionarerwann
ao caminho de destino para obter o mesmo efeito de antes:Do
rsync
manual: