Digamos que haja uma pasta domains
chamada glassfish
. Tem domain1
, domain2
... domainN
.
Quero pegar tudo, domain1
exceto o logs
diretório, e salvá-los no /home/user/backup
diretório.
Eu posso fazer isso manualmente,
cp -R /home/user/glassfish/domains/domain1 /home/user/backup
rm -rf /home/user/backup/domain1/logs
Mas como posso fazer isso mais facilmente?
Você poderia usar
rsync
em vez decp
. Praticamente o mesmo para cópias de local para local, exceto que há uma opção de exclusãoVocê pode usar o
cp
comando e excluir a pasta com os logs,!(excluded_folder)
caso não queira usarrsync
outar
ou
Se você deseja excluir mais pastas, pode usar o
|
semelhante!(excluded_folder1|excluded_folder2|excluded_folder3)
Certifique-se de que seu shell suporte correspondência de padrão estendida (por exemplo, Bash com a
extglob
opção habilitada).Se você quiser usá-lo em um script bash:
Se você receber um erro como
!": event not found"
Confira esta postagem:
O que é "-bash: !": evento não encontrado"
Você pode usar
zip
outar
para fazer uma cópia arquivada:e assim por diante. Ou com
zip
:Dessa forma, você tem a vantagem de nomear os arquivos com base na data para poder manter o histórico dos registros lá.
Se você não pode confiar na sintaxe do shell, pode recorrer
find
ecpio
no modo de passagem:As
cpio
opções a seguir podem ser de maior interesse (se sua implementação as suportar):Não havia rsync no servidor e o acesso à instalação não era permitido. Da mesma maneira
Este comando não funcionou.
O que funcionou foi isso: (Do diretório que você deseja fazer backup)