Backup
Publicado por antonio mauricio sousa 16/05/2005
[ Hits: 6.262 ]
este script faz uma pesquisa em todo o disco por ficheiros de que um determinado user é o owner e guarda.os num .tgz com o nome escolhido por quem corre o script.
ele tambem tem a opção de visualixar o conteudo do backup feito e recuperar ficheiros para uma directoria a introduzir
se por acaso alguem o alterar. por favor, mandem.m um mail a dizer o que alteraram e porquê é que alteraram.... porque o meu objectivo é aprender e superar os meus erros...
#!/bin/bash # #============================ # backup.sh #============================ # script para fazer um backup #============================ # antonio mauricio sousa #============================ # antonio_sousa@linus.uac.pt #============================ # para criar um arquivo com os dados de um USER # pode.se usar o tar # USAGE: tar [options] [tarfile] [other-files] # como o objectivo é criar um ficheiro *.tgz # deve.se implementar esta combinação # tar cv directoria | gzip > backup.tgz # ...Assim cria.se um arquivo backup.tgz com a # directoria 'directoria'... # função create log: # --cria uma introdução no ficheiro de logs create_log () { cat << EOF ficheiro de log de apoio ao administrador .criado com o script backup.sh ========================================== EOF } # o script começa por # verificar se os argumentos estao correctos e # se sao válidos: if [ $# != 2 ] # se for verdade os argumentos estao mal then echo "--Usage: $0 <login> <file>" exit 1 fi # verificar se o utilizador tem permissoes de SU a=`whoami` b="root" if [ "$a" = "$b" ] then echo "--o utilizador tem as permissoes de root" else echo "--voçe não tem as permissoes de root" exit 1 fi # tambem é possivel ver se o USER é ROOT avaliando o # seu UID echo "--numero de argumentos é valido" echo "--a verificar se o $1 existe" grep -q "^$1:" /etc/passwd if [ $? -eq 0 ] then echo "--$1 é um USER válido" else echo "--o user $1 é invalido" exit 1 fi # imprimir um menu: opc=0 # opção de escolha echo echo "--foi introduzido:" echo " utilizador: $1" echo " ficheiro final: $2.tgz" while [ true ] do # imprime o menu echo echo "[MENU]" echo "1-Fazer Backup" echo "2-Listar conteúdo do backup" echo "3-Recuperar ficheiro de um backup" echo "4-Cancelar/Sair" # pedir a opção ao usr printf ">" read opc1 opc="$opc1" #================== # analise do input: #================== if [ $opc = 4 ] # opçao sair then echo "--foi escolhida a opçao (4)" echo "--o script terminou" exit 0 fi if [ $opc = 1 ] # opçao backup then echo "--foi escolhida a opção (1)" echo "--o script vai agora criar o backup de" echo " todos os ficheiros em que $1 é o owner" # vamos guardar as informaçoes do backup em forma de log # no ficheiro /var/log/backup.log # ::. mas primeiro temos de verificar se o ficheiro existe # se existe acrescenta.se a informação # cc cria.se um ficheiro novo e acrescenta.se a informação [ -f /var/log/backup.log ] if (($? == 0)) then echo "--/var/log/backup.log vai conter informaçoes do backup" else # o file nao existe mas vai ser criado com o comando cat # o cat recebe como input todas as linhas de texto ate encontrar # o EOF create_log > /var/log/backup.log echo "--/var/log/backup.log vai conter informaçoes do backup" fi # criar o backup.tgz #tar cv directoria | gzip > $2.tgz # # existem 3 maneiras basicas de manipular o tar: # .(c) criar # .(t) visualizar # .(x) extrair find / -user $1 > /var/log/files_ultimo_backup #if (($? == 0)) #then tar -zcvf $2.tgz -T /var/log/files_ultimo_backup # echo "--foi criado o backup $2.tgz do user $1 em [`date`]" >> /var/log/backup.log # echo "--informações guardadas em /var/log/backup.log" #else # echo "--não foi possivel criar o backup" #fi fi if [ $opc = 2 ] then echo "--foi escolhida a opção (2)" [ -f $2.tgz ] if (($? == 0)) then echo "--ficheiro $2.tgz existe" echo "--abrir /var/log/files_ultimo_backup com o less" less /var/log/files_ultimo_backup # tambem pode.se listar todos os ficheiros de um tar # atravez da opçao -t ou --list # mas como files_ultimo_backup tem todos os ficheiros # é preferivel chamar esse ficheiro com um programa # que imprime o ficheiro no terminal (cat , more, less - neste caso o less) # ... less é melhor que more:) echo "--visualizaçao do conteudo do backup $2.tgz feita com sucesso em [ `date` ]" >> /var/log/backup.log else echo "--ficheiro $2.tgz não foi encontrado" echo "--é necessario fazer o backup primeiro" fi fi if [ $opc = 3 ] then echo "--foi escolhida a opção (3)" [ -f $2.tgz ] if (($? == 0)) then # recuperar um ficheiro de um backup echo "--o utilizador tem de introduzir os dados do" echo " arquivo a extrair" printf "nome:" read nome printf "destino(directoria)": dest read dest [ -d "$dest" ] if (($? == 0)) then echo "--$dest é uma directoria valida" tar xfvz "$2".tgz "$nome" # fazer um gunzip de $2.tgz para obter um .tar #gunzip $2.tgz # agora tenho um tar e aplico a operaçao para retirar o "nome" #tar xvf $2.tar "$nome" # desfazer a operaçao gunzip #gzip $2.tar # assim é criado um ficheiro #mv $2.tar.gz $2.tgz mv $2.tgz "$dest" echo "--ficheiro $nome foi extraido com sucesso de $2.tgz em [ `date` ]" >> /var/log/backup.log else echo "--$dest não é uma directoria valida" fi fi fi done
Administração básica de usuários no MySQL
Script de compilação do kernel 3.3.4 no Ubuntu 11.10 64 bits
Script para atualização de hora
Nenhum comentário foi encontrado.
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
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Não to conseguindo resolver este problemas ao instalar o playonelinux (1)
Excluir banco de dados no xampp (1)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta