Como excluir todos os arquivos, exceto arquivos específicos com rsync
?
Estou tentando fazer backup apenas de arquivos específicos com rsync
, para excluir todos os arquivos , exceto alguns arquivos específicos, ou seja, os .md
arquivos, e as soluções de todas essas páginas não funcionaram para mim:
- https://velenux.wordpress.com/2017/01/09/how-to-exclude-everything-except-a-specific-pattern-with-rsync/
- https://superuser.com/questions/1637543/how-to-specify-no-files-except-these-extensions-in-rsync
- https://serverfault.com/questions/1063730/rsync-exclude-all-files-in-dir-except-specific-files
$ rsync -vua --exclude="*" --include="*.md" ../log ./
sending incremental file list
sent 19 bytes received 12 bytes 62.00 bytes/sec
total size is 0 speedup is 0.00
$ rsync -vua --include="*.md" --exclude="*" ../log ./
sending incremental file list
sent 19 bytes received 12 bytes 62.00 bytes/sec
total size is 0 speedup is 0.00
$ du -sh ../log
1016M ../log
$ apt-cache policy rsync
rsync:
Installed: 3.2.7-0ubuntu0.22.04.2
Candidate: 3.2.7-0ubuntu0.22.04.2
Version table:
*** 3.2.7-0ubuntu0.22.04.2 500
500 http://ca-toronto-1-ad-1.clouds.archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages
500 http://security.ubuntu.com/ubuntu jammy-security/main amd64 Packages
100 /var/lib/dpkg/status
3.2.3-8ubuntu3 500
500 http://ca-toronto-1-ad-1.clouds.archive.ubuntu.com/ubuntu jammy/main amd64 Packages
Eu suponho que você deseja copiar os arquivos de qualquer lugar abaixo
../log
.Se um nome corresponder a um padrão
--include
ou--exclude
, os padrões restantes na linha de comando não serão usados ("a primeira correspondência vence"). Você nunca recursará se não corresponder*/
a um--include
padrão.Levando essas coisas em consideração, combine
*.md
e*/
com--include
antes de combinar*
com--exclude
:Adicione
-m
ou--prune-empty-dirs
se desejar evitar a criação de diretórios vazios.As opções se aplicam da esquerda para a direita, então você precisa incluir itens antes de excluir o restante
Aqui, incluímos os arquivos que você deseja, incluímos subdiretórios (para que possamos descer até eles procurando correspondências), mas excluímos todo o resto. Os diretórios que acabariam vazios também são ignorados.