Pular para o conteúdo

Preciso de ajuda neste script que atenda estes comportamentos abaixo.

Responder tópico
  • Denunciar
  • Indicar

1. Preciso de ajuda neste script que atenda estes comportamentos abaixo.

Enviado em 28/11/2015 - 18:01h

Olá galera,boa tarde!!

Conforme o professor da minha faculdade , solicitou ele pediu que fosse desenvolvido um script que atendida os seguintes requisitos :

1.Antes de fazer o backup remover todos os arquivos da pasta /var/tmp e de todas as sub-pastas;

2.Para cada pasta informada registrar dentro do arquivo de log os arquivos que tenham:
•Proprietário o usuário atual
•Tamanho maior que 1 KB
•Sido acessados a mais de 30 dias

3.Para cada pasta adicionada ao arquivo TAR registre no LOG quantos arquivos foram empacotados;

4.No final do processo inclua a execução de um comando SCP. Esse comando será responsável por fazer uma cópia extra do backup para um outro computador da sua rede. O endereço IP dele terá o mesmo prefixo (10.1.1.), porém o final do número será diferente em função do dia da semana. Caso seja domingo o final do endereço será 1, se for segunda-feira o final será 2 e assim sucessivamente até o sábado. Segue exemplo: scp ARQUIVO.TAR.GZ root@10.1.1.XXX:/backup . Deve ser utilizado a estrutura de condição CASO/CASE;

5.Cada uma das novas etapas irá gravar no arquivo de LOG uma linha indicando a data e hora em que começou e o nome da etapa. E a saída de erro dos novos comandos incluídos também devem ser direcionadas para o arquivo de LOG.

6.Crie um novo arquivo de LOG com a terminação .tmp.log sem as linhas que tiverem referência para a pasta /var/tmp


Responder tópico

2. Shellscript (continuação do exercício)

Enviado em 28/11/2015 - 18:06h

Conforme solicitado , eu desenvolvi o script mais ou menos assim , e gostaria de saber aonde estou errando pq quando eu executo ele fica esperando eu digitar algum caracter ou dado.

Código :

# PROGRAMA PARA FAZER BACKUP AUTOMATICAMENTE

#!/bin/bash

sim="SIM"
nao="NAO"
data=`date +%d/%m/%Y`
dia=$(date '+%A')
hora=`date +%H:%M`
lista_arquivos=$(ls *)
atual_prop=$(whoami)
tamanho_maior=$(du -hsk)
arquivos_trinta=$(ls * | find / -type f -mtime +30)




arquivo_backup="backup_DD_MM_AAAA.tar"



#Removendo pastas e subpastas

rm -rf /var/tmp

echo "Removi todas as pastas e arquivos no diretório /var/tmp ! \n"



echo "Seja bem vindo!"

echo "Deseja fazer o backup dos arquivos? [SIM ou NAO]"
read resposta



if [ "$resposta" == "$sim" ]; then

DIR_backup=/var/backup/
arquivo_log=/var/backup/backup_DD_MM_AAAA.log
mkdir $DIR_backup
chmod 0777 $DIR_backup
echo "INICIO : Diretório $DIR_backup criado com sucesso! $data $hora" >> $arquivo_log


elif [ "$resposta" == "$nao" ]; then

echo "Saindo do backup!" >> $arquivo_log || exit 0


else

echo "Digite sim ou não por favor!"
echo "ERRO!! $data $hora" >> $arquivo_log
exit 0

fi

# Comando para listar todas as pastas (for)

i=0


for i in $lista_arquivos;
do

if [ $atual_prop == $atual_prop] && [$lista_arquivos > 1 ] && [ $arquivos_trinta] then



# Enviar arquivo backup_DD_MM_AAAA.tar.gz para a pasta /var/backup

cp backup_DD_MM_AAAA.tar.gz /var/backup

echo "Arquivo backup_DD_MM_AAAA.tar.gz movido para /var/backup com sucesso! $data $hora" >> $arquivo_log

# Incluindo comando SCP para enviar cópia extra do backup para um outro computador da minha rede.
case $dia in
$dia ="Domingo") scp backup_DD_MM_AAAA.tar.gz root@10.1.1.1:/backup; echo "Arquivo backup_DD_MM_AAAA.tar.gz enviado para 10.1.1.1 com sucesso!" >>$arquivo_log;;


$dia ="Segunda-Feira") scp backup_DD_MM_AAAA.tar.gz root@10.1.1.2:/backup; echo "Arquivo backup_DD_MM_AAAA.tar.gz enviado para 10.1.1.2 com sucesso!" >>$arquivo_log;;


$dia ="Terça-Feira") scp backup_DD_MM_AAAA.tar.gz root@10.1.1.3:/backup; echo "Arquivo backup_DD_MM_AAAA.tar.gz enviado para 10.1.1.3 com sucesso!" >>$arquivo_log;;

$dia ="Quarta-Feira") scp backup_DD_MM_AAAA.tar.gz root@10.1.1.4:/backup; echo "Arquivo backup_DD_MM_AAAA.tar.gz enviado para 10.1.1.4 com sucesso!" >>$arquivo_log;;

$dia ="Quinta-Feira") scp backup_DD_MM_AAAA.tar.gz root@10.1.1.5:/backup; echo "Arquivo backup_DD_MM_AAAA.tar.gz enviado para 10.1.1.5 com sucesso!" >>$arquivo_log;;

$dia ="Sexta-Feira") scp backup_DD_MM_AAAA.tar.gz root@10.1.1.6:/backup; echo "Arquivo backup_DD_MM_AAAA.tar.gz enviado para 10.1.1.6 com sucesso!" >>$arquivo_log;;

$dia ="Sabádo") scp backup_DD_MM_AAAA.tar.gz root@10.1.1.7:/backup; echo "Arquivo backup_DD_MM_AAAA.tar.gz enviado para 10.1.1.7 com sucesso!" >> $arquivo_log;;


*) echo "O dia não é valido!";;

esac

DIR_tmp=/var/tmp/
arquivo_log=/var/backup/tmp.log
mkdir $DIR_tmp
chmod 0777 $DIR_tmp

# Descompactar arquivos na pasta de /var/backup

gzip -d backup_DD_MM_AAAA.tar.gz
tar -zxvf backup_DD_MM_AAAA.tar >> echo >> $arquivo_log

#Registrando no LOG quantos arquivos foram empacotados




echo "Arquivo descompactado com sucesso! $data $hora" >> $arquivo_log

echo "FIM: Backup feito em $data $hora"

echo "FIM : Backup feito em $data $hora" >> $arquivo_log

exit 0


# Cria arquivo compactado 'backup_DD_MM_AAAA.tar' e transforma em arquivo .gz

tar -zcf backup_DD_MM_AAAA.tar *
gzip -9 -v backup_DD_MM_AAAA.tar

echo "Arquivo backup_DD_MM_AAAA.tar.gz criado com sucesso! $data $hora" >> $arquivo_log

if [ ! -d $arquivo_backup]; then

echo "Arquivo compactado não foi criado!" >> $arquivo_log

exit 0


else

done

fi




3. RES:Preciso de ajuda neste script que atenda estes comportamentos abaixo.

Enviado em 28/11/2015 - 18:34h

Olá,
Que script muito extenso amigo, vamos tentar ajuda-lo
a principio tente mudar if [ $atual_prop == $atual_prop] && [$lista_arquivos > 1 ] && [ $arquivos_trinta] then

para essa forma
if [ "$atual_prop" == "$atual_prop" ] && [ $lista_arquivos > 1 ] && [ $arquivos_trinta]; then

---> A arte de programar consiste na arte de organizar e dominar a complexidade.
---> Dijkstra <---

4. Re: Preciso de ajuda neste script que atenda estes comportamentos abaixo.

Enviado em 29/11/2015 - 13:00h

Dá uma olhada na linha que tem:

if [ "$resposta" == "$sim" ] e substitui if [ "$resposta" == "sim" ]. Aqui você está chamando uma variável de nome sim que não foi declarada e que é o conteúdo da variável resposta. Por isso que fica solicitando uma interação com que executa.
_________________________
Wagner F. de Souza
Técnico/Instrutor de Informática
"GNU/Linux for human beings."
LPI ID: LPI000297782

5. Re: Preciso de ajuda neste script que atenda estes comportamentos abaixo.

Enviado em 29/11/2015 - 14:42h

separa a parte do backup e faça via rsync, exemplo da logica
vc joga para uma pasta cria um script que verifica se tem algo na pasta e depois passa via rsync para o servidor de backup onde vc organiza ele por semana mês como você acha interessante, você pode ate colocar ele para te enviar um email com detalhes do backup, outra coisa o seu arquivo de log vai ficar grande, vc pode compactar ele uma vez por semana e arquivar.

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder