Como excluir vários diretórios com o rsync?

122

Estou tentando fazer backup do meu diretório pessoal usando o rsync e quero excluir alguns dos diretórios que contêm lixo. Desejo excluir especificamente /home/ben/.ccache e /home/ben/build . Infelizmente, a documentação do rsync foi sobrecarga de informações e não respondeu à minha pergunta. Isso é o que eu tentei:

rsync -arv --exclude "/home/ben/.ccache:/home/ben/build" /home/ben /media/ben/thumbdrive/

Qual é o caminho certo para fazer isso?

    
por Freedom_Ben 16.07.2013 / 01:53

3 respostas

163

OK, eu me sinto muito burro. Antes mesmo de postar essa pergunta meu amigo me mostrou como fazer e é muito simples. Para excluir vários diretórios, basta usar vários --exclude=path switches. Então, meu comando acima corretamente escrito é o seguinte:

rsync -arv --exclude=.ccache --exclude=build /home/ben /media/ben/thumbdrive/
    
por Freedom_Ben 16.07.2013 / 01:53
78

Ao ter vários diretórios e / ou arquivos a serem excluídos, crie um arquivo de texto e use a opção --exclude-from . Crie um arquivo chamado exclude_me.txt e inclua suas exclusões. Exemplo ( /home/ben/exclude_me.txt ):

.ccache
build
.java
.gvfs
.xsession-errors

Então o seu rsync seria algo como:

rsync -arv --exclude-from='/home/ben/exclude_me.txt' /home/ben /media/ben/thumbdrive/

Estas são algumas informações sobre regras de filtragem que podem ajudar:

  • /dir/ significa excluir a pasta raiz /dir
  • /dir/* significa obter a pasta raiz /dir , mas não o conteúdo
  • dir/ significa excluir qualquer pasta em qualquer lugar onde o nome contenha dir/

  • Exemplos excluídos: /dir/, /usr/share/directory/, /var/spool/dir/ /var/spool/lpd/cf significa ignorar arquivos que começam com cf em qualquer pasta dentro de /var/spool/lpd

Veja também a seção regras de filtragem na página man.

    
por user228759 19.05.2014 / 17:13
55

Você também pode excluir vários caminhos dentro de chaves:

rsync -arv --exclude={.ccache,build} /home/ben /media/ben/thumbdrive/
    
por György Ráth 18.09.2014 / 10:59