Direcotries específicas do Rsync e arquivos com a mesma estrutura

2

Eu quero rsync diretórios e arquivos específicos com a mesma estrutura

por exemplo: -

source/
source/110/var/lib/mysql
source/110/var/lib/mysql
source/110/var/lib/mysql
source/110/home
source/110/bin/
source/110/etc/
source/120/var/lib/mysql
source/120/var/lib/mysql
source/120/var/lib/mysql
source/120/home
source/120/bin/
source/120/etc/

como rysnc mysql e diretórios home e os arquivos incluídos no direcotry para a mesma pasta de destino e com a mesma estrutura para ser como o exemplo a seguir: -

destination/
destination/110/var/lib/mysql
destination/110/home
destination/120/var/lib/mysql
destination/120/home

obrigado

    
por iLinux85 27.05.2012 / 12:47

2 respostas

2

Você pode fazer isso com alguns filtros sofisticados. A página man tem um bom exemplo disso, mas com um rsync recente (> = 2.6.7) você pode fazer algo como:

rsync -a source/ destination/ \
    -f '+ /*/' \
    -f '+ /*/home/***' \
    -f '+ /*/var/' \
    -f '+ /*/var/lib/' \
    -f '+ /*/var/lib/mysql/***' \
    -f '- *'

Em outras palavras, você lista quais diretórios deseja incluir em sua sincronizar e, em seguida, excluir todo o resto. O curinga *** é muito útil mas se o seu rsync for mais antigo, você terá que substituir o filtro + /*/home/*** com os dois seguintes:

    -f '+ /*/home/' \
    -f '+ /*/home/**' \
    
por 27.05.2012 / 12:56
1

Veja uma alternativa ao uso de filtros:

cd source && \
rsync -aR  110/var/lib/mysql  110/home  120/var/lib/mysql  120/home  destination

Ou seja, você passa todos os diretórios de origem como argumentos para rsync , seguido pelo diretório de destino, tudo em um comando. Você deve ter certeza de usar a opção -R neste caso, para que os caminhos do diretório de origem sejam preservados no destino.

    
por 27.05.2012 / 17:27

Tags