rules="+ /Documents/**
+ /.Play...bases/**
+ */
- *"
echo $rules | rsync -rm -f ". -" --delete-excluded /home/x /dest
Eu estou tentando executar complexas rsync include / excludes para fazer o backup apenas do seguinte dentro do /home/x
dir:
Documents
.PlayOnLinux/wineprefix/evernote/drive_c/users/x/Local Settings/Application Data/Evernote/Evernote/Databases/
Entendo que é necessário incluir todos os diretórios pai no diretório desejado antes de usar a regra de exclusão. No entanto, como visto no meu arquivo de regras abaixo, isso é muito ineficiente para configurar e desordena completamente o arquivo de regras, dificultando a leitura:
+ Documents
+ Documents/**
+ .PlayOnLinux
+ .PlayOnLinux/wineprefix
+ .PlayOnLinux/wineprefix/evernote
+ .PlayOnLinux/wineprefix/evernote/drive_c
+ .PlayOnLinux/wineprefix/evernote/drive_c/users
+ .PlayOnLinux/wineprefix/evernote/drive_c/users/x
+ .PlayOnLinux/wineprefix/evernote/drive_c/users/x/Local Settings
+ .PlayOnLinux/wineprefix/evernote/drive_c/users/x/Local Settings/Application Data
+ .PlayOnLinux/wineprefix/evernote/drive_c/users/x/Local Settings/Application Data/Evernote
+ .PlayOnLinux/wineprefix/evernote/drive_c/users/x/Local Settings/Application Data/Evernote/Evernote
+ .PlayOnLinux/wineprefix/evernote/drive_c/users/x/Local Settings/Application Data/Evernote/Evernote/Databases
+ .PlayOnLinux/wineprefix/evernote/drive_c/users/x/Local Settings/Application Data/Evernote/Evernote/Databases/**
- *
Tudo aqui funciona como pretendido. No entanto, existe uma maneira melhor e mais eficiente do que isso para obter backup rsync do conteúdo de apenas determinados sub-diretórios em caminhos longos, preservando a estrutura de diretórios original?
EDIT Descobri que três asteriscos podem ser empregados para incluir conteúdo sub-dir um nível de profundidade sem definir separadamente o nome do subdiretório a ser incluído (por exemplo, + Documents/***
funciona para substituir as duas linhas relevantes nas regras acima). No entanto, isso não parece funcionar para sub-dirs mais de um nível de profundidade, o que é o caso nesta questão.
rules="+ /Documents/**
+ /.Play...bases/**
+ */
- *"
echo $rules | rsync -rm -f ". -" --delete-excluded /home/x /dest
Tags rsync