Ajuda com Shell Script de bkp automatizado em um HD externo. [RESOLVIDO]

1. Ajuda com Shell Script de bkp automatizado em um HD externo. [RESOLVIDO]

Leonardo
moitamore

(usa Debian)

Enviado em 21/11/2012 - 13:14h

Boa tarde pessoal,
Não creio que seja uma coisa muito complicada mais como não possuo tantos conhecimentos na area do linux vim solicitar uma ajuda.

Possuo um script de backup diario em um hd externo. que é trocado a cada semana. O que ocorre é que as vezes na troca dos HD's ele troca de sdb1 para sdc1 por exemplo, e com isso a unidade não é montada.

esta assim a parte do código que se refere a montagem do HD externo:

USB_CAMINHO=/media/usb
USB_UNIDADE=/dev/sdb1

mount -t ntfs-3g $USB_UNIDADE $USB_CAMINHO

O que eu queria saber é se tem como montar de uma forma que ele verifique primeiro se está no sdb1 ou no sdc1 ou então uma forma de fazer ele sempre reconhecer com sdb1, para não montar errado e o bkp ocorrer normalmente?

Obrigado.


  


2. MELHOR RESPOSTA

M4iir1c10
m4iir1c10

(usa Arch Linux)

Enviado em 21/11/2012 - 21:17h

Ok, Vamos por etapas, melhor doque tentar montar o usb pelo script em determinada pasta vamos fazer o sistema decidir e por si proprio montar o usb onde voce quer.

Primeiro vamos supor que o seu usb seja usb1 e usb2 assim vamos criar as pastas /media/usb1 e /media/usb2


sudo mkdir /media/usb1
sudo mkdir /media/usb2


agora vamos usar o blkid para encontrar os UUID de cada usb.


sudo blkid


vamos supor que voce recebe entre outras informacoes algumas sao assim:


/dev/sdb1: LABEL="Backup" UUID="B004AA9104AA5A5C" TYPE="ntfs"
/dev/sdc1: LABEL="MAURICIO" UUID="E2EB-6E74" TYPE="vfat"
/dev/sdd1: SEC_TYPE="msdos" UUID="E0FD-1813" TYPE="vfat"


veja que no meu exemplo eu tenho TYPE="ntfs" e TYPE="vfat", vfat deve aparecer se voce esta usando usb keys, caso seja um HD externo provavelmente o type sera ntfs.

outro pondo que e o importante para nos nesse momento e o UUID, eu vou ignorar os usb keys e usa somente HD como exemplo.

Entao eu vou clocar o UUID no fstab.

sudo gedit fstab ( estou usando o gedit mais voce pode usar qualquer editor que voce tiver )

vamos tirar as aspas entre o valor do UUID e incluir o ponto de montagem, o type e defaults para fazer as configuracoes padores para ntfs, users para que os usuarios possam acessar, umask para deixar o sistema de arquivo ser mudado com chown ou chmod e os numeros 0 0 para nao ser feito um scaneamento no hd caso haja corte de energia e talves haja algum problema com o sistema de arquivo, 0 2 o scan sera feito no root primeiro e depois no seu hd que e a opcao mais segura.


UUID=B004AA9104AA5A5C ntfs defaults,users,umask=0 0 2


A mesma coisa voce deve fazer para o outro hard drive, embora eu estou usando um usb key a ideia e a mesma para um HD externo.


UUID=B004AA9104AA5A5C /media/usb1 ntfs defaults,users,umask=0 0 2
UUID=E2EB-6E74 /media/usb2 vfat defaults,users,umask=0 0 2


Para saber se deu certo digite:


sudo mount -a
ls /media/usb1
ls /media/usb2


Voce viu os arquivos dos dois HDs ? excellente funcionou, pronto salve o fstab e vamos modificar o udev para criar uma regra a ser seguida pelo sistema, porem antes desmonte os usbs e retire o cabo da porta


umount /dev/sdb1
umount /dev/sdc1


Agora digite:


sudo gedit /etc/udev/rules.d/99-usb.rules


Agora escreva a seguinte linha no arquivo:


SUBSYSTEM=="block", RUN+="mount -a"


Salve o arquivo e reinicie o udev.


sudo /etc/init.d/udev restart


Caso voce usa o ubuntu


sudo service udev restart


Agora faz o teste, coloque o usb em qualquer porta e abra as pastas /media/usb1 e /media/usb2.
Caso deu certo esta pronto qualquer momento que voce cocar esses especificos usb eles serao montados nestas pastas, caso voce coloque outro usb qualquer ele sera montado em outra pasta.
Pode rodar seu script sem preocupacoes.


3. Re: Ajuda com Shell Script de bkp automatizado em um HD externo. [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 21/11/2012 - 13:23h

use o UUID do disco. para saber qual é o uuid execute o comando:

blkid /dev/sdb1 


sendo /dev/sdb1 do seu disco externo(certique-se que é ele mesmo antes de saber o UUID do disco).

depois é só executar:


USB_CAMINHO="/media/usb"
USB_UNIDADE="seu_uuid"
mount -t ntfs-3g -U "$USB_DISK" "$USB_CAMINHO"



4. Re: Ajuda com Shell Script de bkp automatizado em um HD externo. [RESOLVIDO]

Leonardo
moitamore

(usa Debian)

Enviado em 21/11/2012 - 13:27h

Mais tem um porem, são 2 HDs.
Ou seja 2 UUID diferentes.
Como eu faria?


5. Re: Ajuda com Shell Script de bkp automatizado em um HD externo. [RESOLVIDO]

Reginaldo de Matias
saitam

(usa Slackware)

Enviado em 21/11/2012 - 13:35h

moitamore escreveu:

Mais tem um porem, são 2 HDs.
Ou seja 2 UUID diferentes.
Como eu faria?


execute o comando df -h irá listar as partições que foram montadas e quantidade de uso/restante.

porta usb1: /dev/sdb1
porta usb2: /dev/sdb2

e o caminho de montagem também
mkdir /mnt/hd1
mkdir /mnt/hd2
disco externo 1: /mnt/hd1
disco externo 2: /mnt/hd2




6. Re: Ajuda com Shell Script de bkp automatizado em um HD externo. [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 21/11/2012 - 14:12h

moitamore escreveu:

Mais tem um porem, são 2 HDs.
Ou seja 2 UUID diferentes.
Como eu faria?


Se você pode postar o script aqui no tópico, então poste, pois a galera vai dá uma ideia para você.


7. Re: Ajuda com Shell Script de bkp automatizado em um HD externo. [RESOLVIDO]

Leonardo
moitamore

(usa Debian)

Enviado em 21/11/2012 - 15:05h

Então não tem como eu adicionar um sdb1 e 2 como vc diz... é o seguinte... ligado no pc fica apenas um HD externo, que é revezado a cada semana entre esses 2 que eu possuo, e quando troco não mudo a porta usb, eu nem tiro o cabo do hd externo do pc eu só troco os hds. e é nessa troca que as vezes ele muda de sdb para sdc e o bkp não funciona. não sei se teria como fazer um while ou alguma coisa do tipo e verificar se o hd q foi montado é certo ou se ele realmente foi montado ou coisa do tipo.

Bom como foi pedido ai está o código completo e o SO usado é um CentOS.


######################################################################################
## DEFININDO VARIAVEIS ##
######################################################################################
DIRDIA=`/bin/date +%a` ## PASTA DOS ARQUIVOS COMPACTADOS (NOME DA PASTA=DIA)
DIA=`date +dt%d%m%Y` ## mascara de data p/ nome do arquivo
DADOS="/arquivos/" ## pastas que serao salvas
DIRGR="/backup/bk/" ## LOCAL ONDE SERA GUARDADO OS BACKUPS
DIRGR=$DIRGR$DIRDIA/ ## DEFININDO A PASTA REFERENTE AO DIA
TAM="1000000" ## TAMANHO DOS ARQUIVOS EM BYTES
PASS="*************" ## SENHA DO ARQUIVO
NARQ="bkgeral_" ## NOME INICIAL DO ARQUIVO DE BACKUP
NARQ=$DIRGR$NARQ$DIA ## CONCATENA A PASTA COM O NOME DO ARQUIVO
PRGC="/backup/rar/rar" ## PROGRAMA COMPACTADOR
## UNIDADE USB (HD EXTERNO)
USB_CAMINHO=/media/usb
USB_PASTA=/backup/
USB_UNIDADE=/dev/sdb1
######################################################################################

echo "###########################################################"
echo "## ELIMINANDO ARQUIVOS DO DIA REFERENTE A SEMANA PASSADA ##"
echo "###########################################################"
echo "## "$DIRGR
echo "###########################################################"
if [ ! "$DIRGR" == "" ] ;then
# Verifica se existe a pasta de para Backups, caso contrario ela sera criada
if [ -d $DIRGR ]; then
cd $DIRGR
rm -rf $DIRGR/* # LIMPANDO BACKUP ANTERIOR DA PASTA
else
mkdir $DIRGR # SE NAO EXISTE A PASTA VAMOS CRIAR
fi
fi

echo " "
echo "######################################################"
echo "## compactando arquivos com rar com senha ##"
echo "######################################################"
echo "## "$NARQ
echo "rar "$PRGC
echo "dir "$DIRGR
echo "######################################################"
$PRGC a -r -v$TAM -p$PASS -ilog$DIRGR/bk.log $NARQ $DADOS

echo " "
echo "####################################"
echo "## MONTANDO UNIDADE DE BACKUP USB ##"
echo "####################################"
echo "## "$USB_UNIDADE
echo "####################################"
mount -t ntfs-3g $USB_UNIDADE $USB_CAMINHO

echo " "
echo "################################################"
echo "## COPIAR ARQUIVOS DE BACKUP PARA UNIDADE USB ##"
echo "################################################"
echo "## "$USB_UNIDADE" "$USB_CAMINHO$USB_PASTA$DIRDIA
echo "################################################"
if [ "$USB_CAMINHO$USB_PASTA$DIRDIA" != "" ] ;then
# Verifica se existe a pasta de para Backups, caso contrario ela sera criada
if [ ! -d $USB_CAMINHO$USB_PASTA$DIRDIA ]; then
mkdir $USB_CAMINHO$USB_PASTA$DIRDIA # SE NAO EXISTE A PASTA VAMOS CRIAR
fi
fi
cp -f $NARQ* $USB_CAMINHO$USB_PASTA$DIRDIA

echo " "
echo "#########################################"
echo "## DESMONTANDO UNIDADE DE REDE WINDOWS ##"
echo "#########################################"
echo "## "$USB_CAMINHO
echo "#########################################"
sleep 5 # ESPERA 5 SEGUNDOS
umount $USB_CAMINHO

echo " "
echo "#####################################"
echo "## T H E E N D ##"
echo "#####################################"



8. Re: Ajuda com Shell Script de bkp automatizado em um HD externo. [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 21/11/2012 - 17:59h

você pode usar udev para criar uma regra para que toda vez que o dispositivo seja conectado fique com o mesmo nome. por exemplo:

hd-externo01
hd-externo02

abaixo deixo um artigo que pode te ajudar fazer esse trabalho no udev.

http://www.vivaolinux.com.br/artigo/Udev-Funcionamento-e-Regras/

Dessa forma você pode personalizar seu script. mas mesmo assim acho que uma solução alternativa seria fazer com que o usuário interagi-se com o script, não acha ? isso é se poder dentro de suas necessidades.



9. Re: Ajuda com Shell Script de bkp automatizado em um HD externo. [RESOLVIDO]

Leonardo
moitamore

(usa Debian)

Enviado em 21/11/2012 - 20:36h

Não teria como o usuario interagir com o script, devido ao fato de esse script ficar em um pequeno server de dados em uma sala de um escritorio de advocacia... vou da uma olhada no udev e ver se ele resolve o meu problema... passo aqui para dar um retorno!

Obrigado pelas dicas


10. Re: Ajuda com Shell Script de bkp automatizado em um HD externo. [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 21/11/2012 - 21:27h

tão simples e nem dei atenção... é só colocar no arquivo /etc/fstab uma entrada referente aos hds usando os UUIDS de cada hd para montar no mesmo diretório, isto é se os hds não são usados ao mesmo tempo. concorda ? mais ou menos como o colega acima citou.


11. Re: Ajuda com Shell Script de bkp automatizado em um HD externo. [RESOLVIDO]

Leonardo
moitamore

(usa Debian)

Enviado em 22/11/2012 - 00:57h

Muito obrigado gente, estão ajudando muito!
Vou fazer os testes amanha durante o dia e volto para dar o retorno, mais consegui encaixar a ideia ao meu problema creio que vá funcionar tranquilo!!
Muito obrigado,
Galera do VOL sempre ajudando demais! o/


12. Re: Ajuda com Shell Script de bkp automatizado em um HD externo. [RESOLVIDO]

Leonardo
moitamore

(usa Debian)

Enviado em 22/11/2012 - 23:01h

Deu certo galera! brigadao pelo apoio!



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts