Backup
Publicado por antonio mauricio sousa 16/05/2005
[ Hits: 6.264 ]
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
Importar varius Emolticons de uma vez para amsn
BKP Completo Sem compactação (com exclusao)
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
É cada coisa que me aparece! - não é só 3% (3)
Melhorando a precisão de valores flutuantes em python[AJUDA] (5)
[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