De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: André Proto
Data de Publicação: 27 de Janeiro de 2009
Há alguns dias senti a necessidade de realizar o backup de meu pendrive de forma automática sempre no momento em que eu o conectava/desconectava de meu computador. Por isso nesta dica eu coloquei um pequeno script SHELL que realiza o backup no momento em que o Pendrive (ou outro dispositivo de armazenamento USB) é conectado ou desconectado.
O script abaixo foi feito para funcionar no GNOME, porém pode ser adaptado para outros ambientes gráficos e até para o terminal de texto. O script também utiliza os utilitários rsync e sudo; por isso verifique se estes estão instalados em seu sistema antes de seguir esta dica.
Explicando sucintamente como funciona, quando você conecta o seu pendrive na porta USB, o GNOME executa o comando "gnome-mount" com alguns parâmetros de entrada para realizar a montagem de forma automárica. A idéia então é substituir o aplicativo gnome-mount pelo nosso script e assim executar os comandos necessários para a sincronização dos dados.
Resumindo, o que este script faz:
Vamos aos passos:
#!/bin/bash
# Autor: André Proto
# Distribuicao livre
#
# Defina abaixo as seguintes variaveis:
# - CMD: comando original do sistema para montagem de dispositivos
# - UUID: UUID da particao do Pendrive
# - USER: usuario que tera permissao para realizar backup
# - DEST: diretorio de destino do backup
# - LOGFILE: arquivo de log
CMD="/usr/bin/gnome-mount-orig"
UUID="UUID-UUID"
USER="user"
DEST="/home/${USER}/pendrive/"
LOGDIR="/var/log/backup_pendrive.log"
DEVICE="$@"
DEVICE=${DEVICE##* }
U=`echo "$@" | grep 'u '`
if [ -z "$U" ]; then
$CMD $@
fi
MYUSER=`whoami`
MNTDIR=`mount | grep $DEVICE | awk '{ print $3 }' | head -1`
if [ "$MYUSER" = "$USER" ]; then
UUID_DEV=`sudo /sbin/vol_id --uuid $DEVICE`
if [ "$UUID_DEV" = "$UUID" ]; then
rsync -av --delete "${MNTDIR}/" "${DEST}" >> ${LOGFILE} 2>&1
fi
fi
if [ ! -z "$U" ]; then
$CMD $@
fi