Script para atualizar iso beta através do rsync

Iniciado por voyeg3r, 08 de Abril de 2007, 13:57

tópico anterior - próximo tópico

voyeg3r

Se você tem a iso Beta do ubuntu e deseja atualiza-la sem ter que baixar todo o conteúdo do cd
use o rsync, este script apenas automatiza o processo e assim você só atualiza os bits modificados
diminuindo drasticamente o tempo de download da iso atual.

Estou postando este script para análise, já utilizei com sucesso e gostaria de algumas sugestões

Obs: havia um erro na linha rsync faltava indicar a pasta atual ---> ./
Obs: Para entender melhor substitua as variáveis. Basicamente o script entra na
pasta onde está a iso a ser atualizada e conecta ao servidor rsync do ubuntu

Este trabalho teve início à partir da leitura deste artigo:
http://wiki.ubuntubrasil.org/ObtendoUbuntu onde no final tem um comando rsync para
atualizar a iso do ubuntu


#!/bin/bash
# scrip para sincronizar a iso diaria do ubuntu
# usando rsync
# endereco da iso diaria do ubuntu:
# http://cdimage.ubuntu.com/daily/current/

# Função para pegar a data
hora (){
hh=$(date "+%H:%M:%S")
dia=$(date "+%A %d de %B de %Y")
echo "   ${hh} hs   $dia"
}

# limpando a tela
clear 

# servidor rsync diário do ubuntu
END="rsync://cdimage.ubuntu.com/cdimage/daily/current/"

# nome da iso
ISO="feisty-alternate-i386.iso "

# local onde está sua iso a se atualizada
PASTA="/home/sergio/docs/isos/ubuntu"


# Obs: os códigos tipo: " \033[01;33m" são para atribuir cores
# leia --> http://gnutopia.wordpress.com/2007/02/22/deixando-o-bash-colorido/

echo
echo "   ====================================="
echo -e "    \033[01;33mScript de atualização iso ubuntu\033[01;37m  "
echo "   ====================================="
hora
echo
echo -e "   ============== \033[01;31mA V I S O\033[01;37m ====================="
echo "   Este script pode demorar um pouco dependendo"
echo "   de quanto  tempo faz que foi realizada a ultima"
echo "   atualização de sua imagem iso"
echo "   =============================================="
echo

# o sleep mantem a mensagem acima 2 segundos na tela
sleep 2
echo -e "   Acessando\033[01;32m $END\033[01;37m..."
sleep 1
echo -e "   Atualizando\033[01;32m $ISO\033[01;37m..."
sleep 1

echo -e "   Entrando na pasta\033[01;32m $PASTA"
sleep 1
cd $PASTA

echo -e "   Iniciando o sincronizacao\033[01;37m..."
sleep 1
echo
sleep 1

# #############################
# A sincronização propriamente começa aqui
# #############################
rsync -Lvv --progress ${END}${ISO} ./ && \
echo "   Sincronização da iso efetuada" || echo "algo deu errado"

#  uso a barra invertida para quebrar linhas longas "\"
sleep 1
clear

## Troquei o rsync neste ponto pelo wget (somente para o arquivo MD5SUMS)
rm -f MD5SUMS
echo "   Baixando o arquivo MD5SUMS do site"
wget http://cdimage.ubuntu.com/cdimage/daily/current/MD5SUMS ./ && echo "   md5sum atualizado" || \
echo "  Erro ao obter o arquivo md5sum"

#O arquivo de md5sum's contém também um md5 para 64 bits que quero descartar
# o comando SED edita o arquivo MD5SUMS de forma não interativa deletando a linha que
# casa com o padrão "/amd64/"  --- Leia: http://aurelio.net/sed/
sed -i '/amd64/d'  MD5SUMS


# logo abaixo pego o valor do md5sum e retiro somente a primeira parte da string leia "man cut"
# Agora o valor md5 está na variável TESTE
TESTE=$(cat MD5SUMS | cut -d" " -f1)

echo -e "   \033[01;32mVeriricando a integridade da imagem atualizada\033[01;37m..."
sleep 1

TESTEISO=$(md5sum $ISO | cut -d" " -f1)
echo -e "  md5sum da iso \033[01;32m$TESTEISO\033[01;37m"
echo -e "  md5sum do site \033[01;32m$TESTE\033[01;37m"
echo

[ "$TESTEISO" = "$TESTE" ] \
&& echo "  Atualização efetuada com sucesso" || echo "   erro ao atualizar a imagem"

exit



## Obs: um teste moderno para evitar "if"
#  faça isto && e isto  || ou isto

AlexBR

Bem que você poderia descrever melhor o que o script faz. Também, seria legal colocar o código do script entre as tags code.

Diego_Rocha

Citar
## Obs: um teste moderno para evitar "if"
#  faça isto && e isto  || ou isto

Não entendi isso && nem isso ||, e tbm não entendi o que tem de moderno nisso,

voyeg3r

#3
Citação de: Diego_Rocha online 09 de Abril de 2007, 12:28
Citar
## Obs: um teste moderno para evitar "if"
#  faça isto && e isto  || ou isto

Não entendi isso && nem isso ||, e tbm não entendi o que tem de moderno nisso,

o "||" é um ou, uma alternativa e o "&&"  é um "E LÓGICO"
você poderia fazer algo assim

   cd pasta 2>> /dev/null || mkdir pasta && cd pasta


Dessa forma o seu script entra na pasta se ela existir, caso não exista cria a mesma
e entra do mesmo jeito, isso com um if ficaria assim


if [ -d pasta ] 2>> /dev/null ; then
  cd $PASTA
else
  mkdir pasta ; cd pasta
fi


Então o comando que usa "||" e "&&"   dá pra entender melhor em
uma só linha não é?

O trecho

2>> /dev/null


redireciona eventuais mensagens de erro para o buraco negro, ou seja
descarta mensagens de erro!