script de backup para excluir algum diretório pai e incluir algum diretório filho

2

O que eu estou tentando fazer backup?

  1. home dir dos usuários que incluem Desktop , Documents , Pictures , thunderbird que eu preciso fazer backup de todos os usuários
  2. todos os usuários estão em /home partição com o respectivo nome de usuário
  3. existem determinados arquivos de usuário AND em /home , que precisam ser excluídos

O que eu tentei até agora?

$ tar cvf home01 -T include /home  

OBSERVAÇÃO: T, que diz apenas pegar o que é mencionado no arquivo, mas não funciona

$ find . \( -name \*Desktop -o -name \*Documents\* -o -name \*Pictures\*  -o -name \.thunderbird\*   \)  |
  xargs  tar zcvf /opt/rnd/home-$(date +%d%m%y).tar.zip 

OBSERVAÇÃO: que faz backup do mention dir, mas coloca todos os usuários em uma pasta.

Por exemplo

$ ls -l /home

/home/user1/{Desktop,Documents,Pictures,.thunderbird}
/home/user2/{Desktop,Documents,Pictures,.thunderbird}
/home/user3/{Desktop,Documents,Pictures,.thunderbird}
/home/user4/{Desktop,Documents,Pictures,.thunderbird}
/home/user5/{Desktop,Documents,Pictures,.thunderbird}

A partir do qual eu preciso levar apenas user1 , user2 , user3 home dir backup e excluir user4 , user5

    
por user138530 03.07.2013 / 15:31

2 respostas

2

Você está quase lá! Isso deve fazer:

tar zcvf /opt/rnd/home-$(date +%d%m%y).tar.zip */{Desktop,Documents,Pictures,.thunderbird} --exclude=user4 --exclude=user5
    
por 03.07.2013 / 16:09
0

Aqui está uma maneira de manter o uso do comando find :

$ find . \( -type d -path */Desktop -o -path */.thunderbird -o -path */Pictures \) \! -path '*user[45]*' -prune | xargs  tar zcvf /opt/rnd/home-$(date +%d%m%y).tar.gz

Aqui está uma versão mais fácil de analisar:

$ find . \( -type d                                                   \
     -path */Desktop -o -path */.thunderbird -o -path */Pictures \)   \
     \! -path '*user[45]*' -prune                                     \
  | xargs  tar zcvf /opt/rnd/home-$(date +%d%m%y).tar.gz

Isto irá encontrar todos os diretórios com os nomes no primeiro bloco parens \( ... \) . Estes são os diretórios:

  • */Desktop
  • */thunderbird
  • */Pictures

A segunda parte exclui todos os caminhos que correspondem ao padrão *user[45]* . Estes pare podados fora da lista. Finalmente, a lista de diretórios resultante é passada para o tar.

Coisas adicionais a serem consideradas

O texto acima é NÃO à prova de balas. Exclui caminhos que incluam a string user4 ou user5 neles. Além disso, alguns cuidados devem ser tomados para garantir que o que quer que você construa como um comando possa lidar com espaços em nomes de arquivos.

    
por 03.07.2013 / 19:10

Tags