Comando rsync local para capturar um sub-subdiretório de sub / sub

0

A tarefa é simples: crie um backup de /usr/local/bin e os arquivos dentro dele e mantenha as informações do caminho.

As obras a seguir, mas eu não entendo realmente o que fiz. Eu notei que a ordem para os includes e excludes pode ser importante. Além disso, "/ usr / *" não pode ser substituído por "*".

# --dry-run is for convenience.
rsync --dry-run -aczvAXHS --progress \
  --include="/usr/local" \
  --exclude="/usr/*" \
  --include="/usr/local/bin" \
  --exclude="/usr/local/*" \
  /usr \
  backup/folder

Alguém pode explicar alguma maneira melhor de realizar essa tarefa?

--- EDITADO PARA ADICIONAR ---

Como apontado nos comentários, a questão poderia ter sido mais precisa. Espera-se que a resposta fornecida aqui funcione no contexto de 'arquivar algumas pastas [sub-sub-sub] de / .

    
por Tfb9 29.11.2015 / 02:24

3 respostas

0

O seguinte parece funcionar bem para listar os arquivos e pastas que precisam de arquivamento, com exceções possíveis:

find  \
"/usr/local/bin" \
"/var/www/owncloud/themes/mytheme" \
"/usr/share/cowsay/cows" \
! -path "/var/www/owncloud/themes/mytheme/core/css*"

Esse comando pode então ser executado da seguinte maneira e ser canalizado para rsync :

find  \
"/usr/local/bin" \
"/var/www/owncloud/themes/mytheme" \
"/usr/share/cowsay/cows" \
! -path "/var/www/owncloud/themes/mytheme/core/css*" \
-print0 | \
sudo rsync -0aczvAXHS --progress --files-from=- / "Backups/folder"
    
por Tfb9 09.12.2015 / 00:39
1

Você pode usar a opção -R . De man rsync :

% bl0ck_qu0te%

Exemplo:

% rsync -acvzRAHSX /usr/local/bin/ out_dir/ 
sending incremental file list
/usr/
/usr/local/
/usr/local/bin/
/usr/local/bin/foobar
/usr/local/bin/spamegg


% tree 
.
└── out_dir
    └── usr
        └── local
            └── bin
                ├── foobar
                └── spamegg


% tree /usr/local/bin 
/usr/local/bin
├── foobar
└── spamegg
    
por heemayl 29.11.2015 / 03:11
0

Outra maneira é deixar rsync ler em uma lista de arquivos e sincronizar a partir de / :

find /usr/local/bin -print0 | rsync --dry-run -0acvzRAHSX --files-from=- / backup/folder
Os find -print0 ' rsync e -0 usam nomes de arquivo separados pelo caractere nul - a maneira mais segura de manipular nomes de arquivos a partir da entrada.

    
por muru 29.11.2015 / 07:09