Estou tentando fazer backup do meu diretório pessoal usando o rsync e quero excluir alguns dos diretórios que contêm lixo eletrônico. Eu quero excluir especificamente /home/ben/.ccache
e /home/ben/build
. Infelizmente, a documentação do rsync estava sobrecarregada de informações e não respondeu à minha pergunta. Isto é o que eu tentei:
rsync -arv --exclude "/home/ben/.ccache:/home/ben/build" /home/ben /media/ben/thumbdrive/
Qual é a maneira certa de fazer isso?
command-line
rsync
Freedom_Ben
fonte
fonte
a
implicar
já :)-a, --archive archive mode; equals -rlptgoD (no -H,-A,-X)
Respostas:
OK, eu me sinto muito idiota. Antes mesmo de postar essa pergunta, meu amigo me mostrou como fazê-lo e é realmente simples. Para excluir vários diretórios, basta usar vários
--exclude=path
comutadores. Portanto, meu comando acima, escrito corretamente, é o seguinte:fonte
-a
inclui,-r
portanto,-ar
é redundante.Ao ter vários diretórios e / ou arquivos a serem excluídos, crie um arquivo de texto e use a
--exclude-from
opção Faça um arquivo chamadoexclude_me.txt
e nele liste suas exclusões. Exemplo (/home/ben/exclude_me.txt
):Então seu rsync ficaria assim:
Estas são algumas informações sobre regras de filtro que podem ajudar:
/dir/
significa excluir a pasta raiz/dir
/dir/*
significa obter a pasta raiz,/dir
mas não o conteúdodir/
significa excluir qualquer pasta em qualquer lugar onde o nome contenhadir/
Exemplos excluídos:
/dir/, /usr/share/directory/, /var/spool/dir/ /var/spool/lpd/cf
significa ignorar arquivos que começam comcf
qualquer pasta dentro/var/spool/lpd
Consulte também a seção de regras de filtro na página do manual.
fonte
Você também pode excluir vários caminhos dentro de chaves:
fonte
IFS=$'\n'; rsync -arv $(printf '.ccache\nbuild\n' | sed 's/^/--exclude=/g') /home/ben /media/ben/thumbdrive/
. Ou você pode simplesmente usar vários--exclude
argumentos, os quais você teria que digitar manualmente.