Backup
Publicado por antonio mauricio sousa 16/05/2005
[ Hits: 6.505 ]
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
Script para pegar ip WAN para firewall com uma ou mais links de internet
Nenhum comentário foi encontrado.
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?
Ubunto não reconhece rede ethernet (0)
Secure boot, artigo interessante, nada técnico. (3)
Instalação dualboot Windows 11 e Debian 13 (11)









