Mais um backup
Publicado por Carlos Eduardo Brock 01/10/2004
[ Hits: 5.726 ]
Esse backup que eu faço onde trabalho, ele gera arquivos com o dia da semana no nome, com um arquivo por diretorios.
#!/bin/bash # se alguem notar alguma semelhanca com clipper, eh por que eh com isso que eu trabalho mesmo, # entao nao liguem e deixem as pedras rolar. # gosto de colocar a data para completar o nome do arquivo em uma variavel, por que se o backup se estender alem 23:59 # o arquivos vao ficar com o nome respectivo a data de movimentacao/atualizacao # sei que os arquivos tgz|bz2 podem ficar com datas de criacao, mas isso eh o de menos. xdata=`date +%a` # Local a partir do raiz, para fazer os backups no servidor backup="dados/backup" # Local a partir do raiz onde estao os arquivos fontes="fontes" # Local para onde os arquivos devem ser copiados, pode ser uma nfs, ou pasta hd="home/backup" # Opcao de compactacao para o tar, poderia se -cjvf (compactacao maior) se nimguem estiver usando os arquivos para serem backupeados TarCmd="-czvf" # Sufixo para o tar, procure acompanhar ocomando, czvf = tgz ou tar.gz, cjvf = bz2 ou tar.bz2 TarSuf="tgz" # vetor com Titulo da empresa, para exibicao somente. empresa=("Empresa 1..." "Empresa 2..." "Empresa 3..." ) # vetor com prefixo para o arquivo tar nomes=("prefixo1" "prefixo2" "prefixo3" ) # vetor com local e arquivos para backupear, dir=("/$fontes/empresa1/*.prg" "/$fontes/empresa2/{*.c,*.sh,Makefile}" "/$fontes/empresa3/{*.prg,*.ch,*.mak,Makefile}" ) # vetor com diretorios em que se deve tormar cuidado de renomear os arquivos para caixa baixa # isso as vezes e necessario para diretorios alterados por programas do DOS, alguns editores/compiladores # e o proprio interpretador de comandos tem o pessimo habito de gerar nomes de arquivos em caixa alta dirren=("/$fontes/empresa1" "" "/$fontes/empresa2" ) # Isso nao ficou muito bonito eu sei, mas inda nao sei fazer de outra forma. # Nao, nao. Nao ficou nada bonito. # Ficou ORRIVEL mesmo, se vcs me vissem agora eu acho que ia enfiar a cabaca na terra como uma avestruz pra me esconder. num="0 1 2" for x in $num; do echo ":: ${empresa[$x]}" echo ":: ${empresa[$x]}" >> /$backup/log_$TarSuf_$xdata.log # isso vai fazer a renomeacao dos arquivo quando for pedido no vetor dirren cdir=${dirren[$x]} if [ ! -z $cdir ]; then old=`pwd` cd ${dirren[$x]} for file in * do mv $file `echo $file | tr '[:upper:]' '[:lower:]'` 2>/dev/null done cd $old fi ccomando="tar $TarCmd /$backup/${nomes[$x]}_$xdata.$TarSufi ${dir[$x]} >> /$backup/log_$TarSuf_$xdata.log 1>>/$backup/log_copia_$xdata.log 2>>/$backup/log_copia_$xdata.log" echo "#!/bin/bash" > comando.sh echo $ccomando >> comando.sh chmod +x comando.sh ./comando.sh rm comando.sh -rf rm -rf -v /$hd/${nomes[$x]}_$xdata.$TarSuf >> /$backup/log_copia_$xdata.log cp -v /$backup/${nomes[$x]}_$xdata.$TarSuf /$hd/ >> /$backup/log_copia_$xdata.log done echo "::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::" echo ":: FIM DOS BACKUPS ::" echo "::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::" echo "::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::" >> /$backup/log_copia_$xdata.log echo ":: FIM DOS BACKUPS ::" >> /$backup/log_copia_$xdata.log echo "::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::" >> /$backup/log_copia_$xdata.log
Pequeno sistema de backup (Rsync + SAMBA + Tar + FTP)
Apagando 2 linhas do fim de um arquivo
conssh.sh - Frontend para SSH via proxy HTTP
Editor de configurações para Tint2
mkzeowmp - zeo mount point para PZP (python, zope e plone)
Nenhum comentário foi encontrado.
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI