rsync regras para sincronizar apenas sub-diretórios específicos em caminhos longos

1

Eu estou tentando executar complexas rsync include / excludes para fazer o backup apenas do seguinte dentro do /home/x dir:

  • Recursivamente todos os arquivos / dirs em Documents
  • Recursivamente todos os arquivos / dirs em .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.

    
por neutreno 14.11.2014 / 03:36

1 resposta

0

rules="+ /Documents/**
+ /.Play...bases/**
+ */
- *"

echo $rules | rsync -rm -f ". -" --delete-excluded /home/x /dest
    
por 28.07.2015 / 07:35

Tags