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.


Fazendo backup do Pendrive quando este for conectado/desconectado

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:

  • A sincronização dos dados é realizado sempre que o pendrive é montado ou desmontado pelo sistema do GNOME (Nautilus);

  • Apenas um único usuário terá permissão de realizar o backup;

  • Com a utilização do UUID da partição do pendrive podemos identificar de forma única o pendrive que queremos sincronizar os dados. Ou seja, se você conectar o pendrive de um amigo no seu computador, não será realizada a sincronização;

Vamos aos passos:

  1. Renomeie o arquivo /usr/bin/gnome-mount para /usr/bin/gnome-mount-orig;

  2. Dê permissão de sudo sem senha no comando /sbin/vol_id para o usuário que fará o backup do pendrive. Para isso insira a linha "usuario ALL=NOPASSWD: /sbin/vol_id" no arquivo /etc/sudoers;

  3. Conecte o pendrive que você deseja fazer o backup. Obtenha o UUID da partição dele com o comando "sudo vol_id --uuid /dev/particao_do_pendrive"

  4. Com acesso de root, crie o arquivo /usr/bin/gnome-mount (com permissão de execução) e insira o seguinte script, alterando o valor das variáveis conforme solicitado:
  #!/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

Observações:

  1. Note que é necessário dar permissão de escrita para o usuário que fará o backup no arquivo de log indicado no script.

  2. Caso você use o KDE ou monte seus dispositivos pelo terminal, talvez a substituição do comando /bin/mount por este script possa ter o mesmo efeito (não testado).

  3. Caso você formate o seu pendrive por algum motivo, será necessário atualizar o valor da variável UUID.

Adicionar comentário

* Campos obrigatórios
5000
Powered by Commentics

Comentários

Nenhum comentário ainda. Seja o primeiro!


Veja a relação completa dos artigos de André Proto