Neste cenário, um dos desafios é transportar arquivos e configurações de um micro para o outro de forma prática. Uma das soluções é simplesmente ficar enviando e-mails para você mesmo com os arquivos em que está trabalhando; afinal, os e-mails podem ser acessados de qualquer lugar, sobretudo se você usa o Gmail ou outro webmail. Outra solução é comprar um pendrive ou HD externo e simplesmente ir copiando os arquivos importante manualmente.
O problema com ambas as idéias é que elas exigem intervenção manual. Você precisa selecionar os arquivos e copiá-los manualmente de um PC para o outro. Além de ser tedioso, o processo faz com que você acabe deixando muita coisa para trás.
No Linux, todas as duas configurações, e-mails e (geralmente), também seus arquivos de trabalho ficam salvos na sua pasta home, de forma que ao transportá-la de um micro a outro, você acaba levando junto todas as configurações. Uma dica simples, que muita gente usa, é gerar um arquivo compactado com o home, salvá-lo no pendrive e depois restaurá-lo manualmente na outra máquina. Embora funcione, este é um procedimento manual e (se você tiver um grande volume de arquivos), também demorado.
É o tipo de coisa que você poderia fazer esporadicamente, ao reinstalar o sistema, por exemplo, mas não é algo que você gostaria de fazer duas vezes por dia.
Que tal uma solução que lhe permitisse salvar automaticamente todas as suas configurações e arquivos em um pendrive e restaurá-las em outro micro, com apenas um clique? Neste caso, você só precisaria clicar no ícone para salvar os arquivos ao terminar de trabalhar no micro A, levar o pendrive com você e depois clicar no ícone para restaurar ao plugá-lo no micro B, e vice-versa. Mais prático do que isso impossível. 🙂
Para colocar o nosso projeto de hoje em prática, você vai precisar apenas do rsync, um utilitário de linha de comando que permite fazer cópias incrementais, onde são copiados apenas os arquivos que foram alterados desde a última atualização. Isto torna as cópias brutalmente mais rápidas, permitindo que sejam copiados apenas os 10 MB e arquivos que você modificou da última vez, ao invés dos 2 GB do seu home completo, por exemplo.
Verifique se o pacote “rsync” está instalado nos dois micros. No caso do Ubuntu, Kubuntu, Kurumin e outras distribuições derivadas do Debian, você pode instalá-lo via apt-get (como root):
No Ubuntu, você pode executar o comando como root adicionando o comando “sudo” antes do comando. Em outras distribuições, use o comando “su -” para logar-se como root.
Em segundo lugar, você precisa, naturalmente, de um pendrive. No meu caso, estou usando esta belezinha de 4 GB, mas você pode utilizar pendrives de qualquer capacidade, de acordo com o volume de arquivos salvos no seu home. Pastas de e-mails do Thunderbird e o cache do Firefox, por exemplo, consomem bastante espaço.
Com o pendrive em mãos e o rsync instalado em ambos os micros, vamos ao que interessa.
Em primeiro lugar, você precisa reformatar o pendrive em EXT3. Originalmente os pendrives são formatados em FAT32 (ou FAT16), que não oferece suporte às permissões de acesso e outros atributos usados no Linux.
Para formatar seu pendrive em EXT3, utilize o comando abaixo, substituindo o “/dev/sdb1” pelo dispositivo e partição corretos. Preste atenção para não formatar uma das partições do HD por engano! Na dúvida, use o comando “fdisk -l” (como root), para listar os dispositivos e partições disponíveis no seu micro.
Monte o pendrive e, só por desencargo, certifique-se de que o seu login de usuário terá acesso completo à pasta, modificando as permissões de acesso. Se você usa o usuário “joao” e o pendrive está montado na pasta “/mnt/sdb1”, o comando fica:
Com o pendrive formatado em EXT3, vamos à parte divertida, que é criar os scripts que farão o trabalho pesado. A partir daqui, tudo é feito usando seu login normal de usuário, nada como root.
É importante também que você utilize contas com o mesmo nome nas duas máquinas, caso contrário teremos problemas diversos relacionados com permissões e variáveis em arquivos de configuração. Também é importante fazer um backup dos arquivos, apenas para o caso de você acabar digitando algum dos comandos errado, fazendo com que ele apague tudo ao invés de copiar para o pendrive. ;lembre-se de que a lei de murphy é a única lei da natureza que nunca falha. 🙂
Comece montando o pendrive e criando dois arquivos de texto, chamados “atualizar.sh” e “restaurar.sh“. Como os nomes sugerem, o primeiro servirá para salvar seu home e arquivos dentro do pendrive e o segundo para restaurá-lo na outra máquina.
Marque a permissão de execução para ambos nas propriedades do arquivo, ou, se preferir, use o chmod, via texto:
$ chmod +x restaurar.sh
Dentro do arquivo “atualizar.sh”, vai o seguinte script:
pasta=`mount | grep sd | grep ext3 | tail -n 1 | cut -f 3 -d ” “`
cd $pasta
dialog –yesno “Tem certeza que deseja atualizar os arquivos no pendrive?” 0 0
resp=`echo $?`
if [ “$resp” = “1” ]; then
exit 0
else
mkdir joao
rsync -av –delete /home/joao/ ./joao
sync
fi
Este script é um pouco mais complicado do que precisaria realmente ser, pois incluí algumas precauções. As duas primeiras descobrem e acessam a pasta onde o pendrive está montado (só por precaução) e as quatro seguintes abrem uma janela de confirmação.
O que interessa mesmo são as últimas três linhas, que criam a pasta dentro do pendrive, copiam o home para ela, usando o rsync e sincronizam o buffer do pendrive.
Lembre-se também de substituir todos os “joao” dentro dos scripts pelo seu login de usuário.
Em seguida temos o script “restaurar.sh”, que faz o processo inverso, copiando de volta os arquivos salvos no pendrive. Ele fica com o seguinte conteúdo:
pasta=`mount | grep sd | grep ext3 | tail -n 1 | cut -f 3 -d ” “`
cd $pasta
dialog –yesno “Tem certeza que deseja restaurar o home?” 0 0
resp=`echo $?`
if [ “$resp” = “1” ]; then
exit 0
else
rsync -av –delete ./joao/ /home/joao
sync
fi
Com isso os dois scripts estão prontos. Você pode testar executando-os via terminal, usando os comandos “./atualizar.sh” e “./restaurar.sh”.
Depois de certificar-se de que tudo está correto, falta só o toque final, que é criar dois ícones de atalho dentro do pendrive, que permitirão executar os scripts com um único clique.
Para criar os atalhos no KDE, clique com o botão direito e selecione a opção “Criar novo > Link para Aplicativo”:
Na janela seguinte, escolha um ícone e dê um nome para o atalho:
Na aba “Aplicativo > Comando”, coloque o comando que ele vai executar. Normalmente você colocaria apenas o comando para rodar o programa. No nosso caso é um pouco mais complicado, pois queremos que ele execute um script dentro do próprio pendrive, e não um executável dentro das pastas “/usr/bin” ou “/usr/local/bin”. Precisamos então usar os mesmos comandos que coloquei no início dos scripts, seguido pelo comando “./atualizar.sh”, separados por ponto e vírgula. A linha ficaria:

Concluindo, clique no botão “Opções Avançadas” e marque a opção “Executa no terminal”:
Com isto o atalho está pronto :). Faça o mesmo com o “restaurar.sh” e terminamos.
A partir de agora, você só precisa montar o pendrive e usar os dois atalhos para atualizar e restaurar os arquivos. A primeira cópia vai demorar, pois o rsync precisará copiar todos os arquivos, mas as seguintes serão bem rápidas.
Preste atenção no volume de arquivos armazenados no home, já que o total não pode ultrapassar a capacidade do pendrive. No Konqueror você pode ver as propriedades da pasta clicando com o botão direito sobre ela.
Mais uma dica é que, depois de restaurar os arquivos, você precisará sempre reiniciar o ambiente gráfico, pressionando “Ctrl + Alt + Backspace” para que as novas configurações sejam carregadas. Você deve fazer isso logo depois de executar o “restaurar.sh”
Para usar esta dica, o ideal é que você utilize a mesma distribuição nos dois micros, já que ao usar distribuições diferentes você notará pequenos glitches, devido a diferenças nas configurações e programas instalados, embora o grosso continue funcionando perfeitamente.
Você pode ainda personalizar os dois scripts a gosto, de forma que o backup inclua também outras pastas.
Se, além do home você quer que os scripts salvem e restaurem o conteúdo da pasta “/mnt/hdb2/trabalho”, por exemplo, o conteúdo dos scripts ficaria:
- atualizar.sh:
pasta=`mount | grep sd | grep ext3 | tail -n 1 | cut -f 3 -d ” “`
cd $pasta
dialog –yesno “Tem certeza que deseja atualizar os arquivos no pendrive?” 0 0
resp=`echo $?`
if [ “$resp” = “1” ]; then
exit 0
else
mkdir joao
rsync -av –delete /home/joao/ ./joao
mkdir trabalho
rsync -av –delete /mnt/hdb2/trabalho/ ./trabalho
sync
fi
- restaurar.sh:
pasta=`mount | grep sd | grep ext3 | tail -n 1 | cut -f 3 -d ” “`
cd $pasta
dialog –yesno “Tem certeza que deseja restaurar o home?” 0 0
resp=`echo $?`
if [ “$resp” = “1” ]; then
exit 0
else
rsync -av –delete ./joao/ /home/joao
rsync -av –delete ./trabalho/ /mnt/hdb2/trabalho
sync
fi