Backup script para Google Drive no Linux

Com 5Gb de espaço grátis, o Google Drive pode ser uma boa opção para backups simples de servidores pequenos e desktops.

Nós vamos utilizar o [Grive](http://www.lbreda.com/grive/start) para suporte ao Google Drive e um pequeno script que você pode usar para ajustar às suas necessidades.
<!–more–>

## Instalando Grive

*Debian*:

“`bash
apt-get install grive
[/code]

Ubuntu:

Utilizaremos um repositório PPA:

sudo add-apt-repository ppa:nilarimogard/webupd8
sudo apt-get update
sudo apt-get install grive

Preparando

Crie um diretório e entre nele:

mkdir /mnt/GoogleDrive
cd /mnt/GoogleDrive

Execute o comando grive com a opção -a para preparar e ter autorização:

# grive -a
-----------------------
Please go to this URL and get an authentication code:

https://accounts.google.com/o/oauth2/auth?scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.profile+https%3A%2F%2Fdocs.google.com%2Ffeeds%2F+https%3A%2F%2Fdocs.googleusercontent.com%2F+https%3A%2F%2Fspreadsheets.google.com%2Ffeeds%2F&redirect_uri=urn:ietf:wg:oauth:2.0:oob&response_type=code&client_id=22314510474.apps.googleusercontent.com

-----------------------
Please input the authentication code here:

Copie e cole o link no seu navegador, tendo a certeza de estar conectado à conta Google para acessar o Drive que você precisa. Copie e cole de volta o código de autorização, e está feito – a primeira sincronização será feita.

Observação: apenas arquivos “reais” serão sincronizados – o grive não suporta download de arquivos editados no Google Apps.

Script

Este script lê um diretório para sincronizar com o GoogleDrive.

Crie o seguinte script em /SOMEPATH/googledrive-sync.sh e lhe dê permissão de execução (chmod 755 /SOMEPATH/googledrive-sync.sh)

#!/bin/bash
# Google Drive Sync
#
# Author: Rafael Goulart <rafaelgou@gmail.com>
#
# Config BEGIN
# =====================================================================

# Directory to backup
BACKUPDIR=/var/backups

# Google Drive directory
GDRIVEDIR=/mnt/GoogleDrive

# Directory target in remote
TARGETDIR=/backups

# =====================================================================
# Config END

# Create backup dir if not exists
echo Creating ${GDRIVEDIR}/${TARGETDIR} if needed
if [ ! -d "${GDRIVEDIR}/${TARGETDIR}" ]; then mkdir ${GDRIVEDIR}/${TARGETDIR}; fi

# Moving to Gdrive Dir
echo Entering ${GDRIVEDIR}
cd ${GDRIVEDIR}

# Initial sync
echo Initial Google Drive Sync
grive

# Coping new content
echo Copying from ${BACKUPDIR}/* to ${GDRIVEDIR}/${TARGETDIR}/
cp -R ${BACKUPDIR}/* ${GDRIVEDIR}/${TARGETDIR}/

# Showing files copied
echo Files to sync
find ${GDRIVEDIR}/${TARGETDIR}/

# Final sync
echo Final Google Drive Sync
grive

Você tem 3 parâmetros:

  • BACKUPDIR: Diretório para backup – ponha seus arquivos aqui, faça o script para compactar seus arquivos antes – default /var/backups
  • GDRIVEDIR: Diretório Google Drive que você criou antes (onde será syncronizado) – default /mnt/GoogleDrive
  • TARGETDIR: Diretório de destino no lado remoto, será criado para não bagunçar seu Google Drive – default /backups

Ponha este arquivo no crontab:

ln -sf /SOMEPATH/googledrive-sync.sh /etc/cron.dayly/

ou execute manualmente:

/SOMEPATH/googledrive-sync.sh

Alertas e Dicas

  • Esteja atento às limitações do Grive
  • Você pode economizar algum espaço em disco fazendo seu backup diretamente em /mng/GoogleDrive/backups e apenas executando grive após isto. Eu prefiro fazer isto em 2 passos como sugeri, mas isto é com você

Atualização

Caso não exista o comando abaixo (para Ubuntu 12.04)

sudo add-apt-repository ppa:nilarimogard/webupd8

Instale com:

sudo apt-get install python-software-properties
  • Muito bom…

    • I’m not sure I follow your sugoestign, Duncan. The part of the script you are referring to is just part of the original cygwin bat shell written by whoever wrote cygwin. My modification is around getting cygwin to launch my shell script (the part after the -c switch), and then getting that shell script to figure out what directory it is in and change the working directory there.

  • Thanks a lot. It’s work and works great.
    Ubuntu 13.10
    I’ve installed by run
    $> apt-get install grive

    • 4 years agoHello Ray,I used ORCA, but this doesn’t work as expected. Also, most of the time Universal extcrator cannot extract anything from the MSi it doesn’t do a very good job.But I’m glad you posted something concrete. I am going to try this one.Have any idea if the author is going to update the Less MSIe9rables? By the name, I guess it’s a french author Thanks for this tip man. I hoped Microsoft would have given a tool of its own, but Thanks again.Reply

  • Thx.
    What about the bandwidth? If my backups are about 400 GB in size, it will also work with the upload and download of the Google Drive?

  • I ԛuite like reading ann articlе that can make men and women think.
    Also,thank yoou for permitting mme to comment!

    my webpage … [Shop Evo Design](http://colinfitzgibbon.pen.io “Shop Evo Design”)

  • Great manual

    But I recommend better to change in the script a copying procedure to rsync.
    ————————————————-
    # Coping new content
    echo Copying from ${BACKUPDIR}/* to ${GDRIVEDIR}/${TARGETDIR}/
    cp -R ${BACKUPDIR}/* ${GDRIVEDIR}/${TARGETDIR}/
    ————————————————-
    to
    ————————————————-
    # Coping new content
    echo Copying from ${BACKUPDIR}/* to ${GDRIVEDIR}/${TARGETDIR}/
    rsync -auz -r –delete ${BACKUPDIR}/ ${GDRIVEDIR}/${TARGETDIR}/
    ————————————————-

  • Finally i quit my regular job, now i earn a lot of money online you should try too, just search in google – blackhand roulette
    system

  • sgitkene

    Hello, this doesn’t work as easily anymore. Google deprecated the api used here. Maybe you can get it to work with https://github.com/Grive/grive and supply a .deb package for it to easily work? The package in jessie uses the deprecated api and doesn’t work anymore.

  • Daniel Sobrinho

    nice script

  • LeoRS