Android

Como excluir arquivos e diretórios com o rsync

rsync - Cópia, Sincronização e Backup de arquivos no Linux

rsync - Cópia, Sincronização e Backup de arquivos no Linux

Índice:

Anonim

O Rsync é um utilitário de linha de comando rápido e versátil que sincroniza arquivos e pastas entre dois locais em um shell remoto.

Com o Rsync, você pode espelhar dados, criar backups incrementais e copiar arquivos entre sistemas. Ao copiar dados, você pode excluir um ou mais arquivos ou diretórios com base em seus nomes ou locais.

Neste tutorial, mostraremos como excluir arquivos e diretórios com o rsync.

Antes de você começar

Você deve ter um conhecimento básico de como o rsync funciona.

Nos exemplos abaixo, usaremos o rsync com a opção -a , Isso diz ao rsync para sincronizar diretórios recursivamente, transferir dispositivos especiais e de bloco e preservar links simbólicos, tempos de modificação, grupo, propriedade e permissões.

Ao excluir arquivos ou diretórios, você precisa usar seus caminhos relativos ao diretório de origem.

Existem duas opções para especificar os arquivos e diretórios que você deseja excluir:

  • A partir de uma linha de comando, usando a opção --exclude um arquivo, usando a opção --exclude-from .

Excluir um arquivo específico

Para excluir um arquivo específico, passe o caminho relativo para o arquivo para a opção --exclude .

No exemplo a seguir, o arquivo src_directory/file.txt não será transferido:

rsync -a --exclude 'file.txt' src_directory/ dst_directory/

Excluir um diretório específico

Excluir um diretório específico é o mesmo que excluir um arquivo, basta passar o caminho relativo para o diretório para a opção --exclude como mostrado abaixo:

rsync -a --exclude 'dir1' src_directory/ dst_directory/

rsync -a --exclude 'dir1/*' src_directory/ dst_directory/

Excluir vários arquivos ou diretórios

Para excluir vários arquivos ou diretórios, basta especificar várias opções --exclude :

rsync -a --exclude 'file1.txt' --exclude 'dir1/*' --exclude 'dir2' src_directory/ dst_directory/

rsync -a --exclude={'file1.txt', 'dir1/*', 'dir2'} src_directory/ dst_directory/

Se o número de arquivos e / ou diretórios que você deseja excluir for grande, em vez de usar várias opções --exclude , você poderá especificar os arquivos e diretórios que deseja excluir em um arquivo e passar o arquivo para a opção --exclude-from opção.

O comando abaixo faz exatamente o mesmo que o acima:

rsync -a --exclude-from='exclude-file.txt' src_directory/ dst_directory/ exclude-file.txt

file1.txt dir1/* dir2

Excluir vários arquivos ou diretórios com base em um padrão

Com o rsync, você também pode excluir arquivos e diretórios com base em um padrão que corresponda ao nome do arquivo ou diretório.

Por exemplo, para excluir todos os arquivos .jpg você executaria:

rsync -a --exclude '*.jpg*' src_directory/ dst_directory/

É um pouco mais complicado excluir todos os outros arquivos e diretórios, exceto aqueles que correspondem a um determinado padrão. Digamos que você queira excluir todos os outros arquivos e diretórios, exceto os que terminam em .jpg .

Uma opção é usar o seguinte comando:

rsync -a -m --include='*.jpg' --include='*/' --exclude='*' src_directory/ dst_directory/

Ao usar várias opções de inclusão / exclusão, a primeira regra de correspondência se aplica.

  • --include='*.jpg' - Primeiro estamos incluindo todos os arquivos .jpg . --include='*/' - Estamos incluindo todos os diretórios dentro do diretório src_directory . Sem isso, o rsync copiará apenas arquivos *.jpg no diretório de nível superior. -m - Remove os diretórios vazios.

Outra opção seria canalizar a saída do comando find para o rsync:

find src_directory/ -name "*.jpg" -printf %P\\0\\n | rsync -a --files-from=- src_directory/ dst_directory/

  • -printf %P\\0\\n - removerá o src_directory/ do caminho do arquivo. --files-from=- - significa incluir apenas os arquivos da entrada padrão (arquivos passados ​​a partir do comando find).

Conclusão

Neste tutorial, você aprendeu como excluir arquivos e diretórios ao transferir dados com o Rsync. Há muito mais para aprender sobre o Rsync na página do manual do usuário do Rsync.

terminal rsync