sábado, 12 de maio de 2018

Compactação de arquivos com xz



Colaboração: Rubens Queiroz de Almeida

Data de Publicação: 10 de maio de 2018

Fonte: www.dicas-l.com.br

Estou muitos anos atrasado com esta dica, fiquei conhecendo hoje o método de compressão XZ.

Antes de falar mais sobre ele, vamos a um teste rápido:



Antes de falar mais sobre ele, vamos a um teste rápido:
$ gzip planilha.csv 
$ ls -lh planilha.csv.gz
-rw-r--r-- 1 queiroz queiroz 24K Mai  7 14:44 planilha.csv.gz
$ xz planilha.csv
$ ls -lh planilha.csv.xz 
-rw-r--r-- 1 queiroz queiroz 20K Mai  7 14:44 planilha.csv.xz



Vejam só, o arquivo compactado com o programa xz ficou 17% menor. Bastante significativo, não?

O comando tar para compactar arquivos utilizando este protocolo é também bastante simples:
tar Jcvf arquivo.tar.xz arquivo(s)

e  para descompactar:
 tar Jxvf arquivo.tar.xz


A diretiva J indica ao comando tar o tipo de compactação que será utilizado.
A diretiva J indica ao comando tar o tipo de compactação que será utilizado.
O pacote pxz utiliza a compressão LZMA em diferentes partes de um arquivo em múltiplos núcleos de processamento (cores) do seu processador. Desta forma a tarefa de compressão é dividida, cada corerecebe um pedaço do arquivo para trabalhar e o processamento é feito em paralelo. O objetivo final do pacote é utilizar todos os recursos computacionais disponíveis para obter a melhor taxa de compressão possível no menor tempo.
O programa xz faz parte do pacote xz-utils e o programa pxz faz parte do pacote pxz.   Para instalar os dois pacotes em sistemas Debian GNU/Linux e derivados, digite:
 sudo apt-get install xz-utils pxz 

sábado, 9 de dezembro de 2017

Linux, você sabe o que é isso?


Por Pedro Cipoli

Fonte https://canaltech.com.br/

Tux, o pinguim mascote do GNU/Linux


Quando se fala em Linux muitas pessoas pensam na imagem de um programador executando dezenas de comandos complicados em uma tela preta semelhante ao finado DOS. Isso seria verdade até alguns anos atrás, mas o sistema evoluiu tanto em seu visual, com suporte a aplicações 3D e ambientes de trabalho cheios de efeitos e uma enorme facilidade de uso, que variações como o Ubuntu e o Linux Mint conquistam cada vez mais usuários que querem fugir das (caras) licenças do Microsoft Windows.

Para explicar um pouco mais desse sistema e suas variações, o Canaltech preparou um artigo bem completo, acompanhe:

Centenas de distribuições para escolher


Quando dizemos GNU/Linux, não estamos falando de um sistema em particular, mas de centenas de variações, cada uma com suas características próprias. O mesmo acontece com o Windows: temos instalado em nossas máquinas o Windows 7 ou o Windows XP, e ambos se referem ao sistema operacional da Microsoft, porém ambos possuem suas diferenças e peculiaridades.

Enquanto o Microsoft Windows atual conta com menos de 20 versões, o GNU/Linux possui nada menos que mil variações, também conhecidas como distros, cada uma com seu conjunto de softwares e configurações para baixar, instalar e testar, até você escolher a que atenderá melhor as suas necessidades. Mas não se preocupe, você não precisará testar todas elas. Abaixo temos uma breve descrição de oito principais distribuições para você observar algumas diferenças:


Ubuntu



Distribuição mais conhecida mundialmente, é a favorita dos usuários iniciantes por sua interface agradável e configurações automáticas, reconhecendo praticamente qualquer equipamento instalado no computador já no momento da instalação. Como o próprio slogan diz, é o "Linux para seres humanos", onde todas as tarefas são realizadas via interface gráfica, como no Windows.
Ubuntu Logo

Linux Mint



Tem ganhado popularidade com o tempo graças as suas interfaces modificadas e efeitos especiais próprios, aliando faclidade de uso, boa performance e um visual bastante atraente. O Linux Mint é talvez a distribuição mais recomendada para quem está vindo do Windows, pois possui uma organização que lembra bastante o sistema da Microsoft.
Linux Mint Logo

Debian


Reconhecido por sua estabilidade e enorme acervo de softwares compatíveis, o Debian é muitas vezes visto como o "dinossauro" do mundo Linux, pois testa arduamente qualquer modificação antes de implementá-la oficialmente, o que significa que você dificilmente verá um travamento do sistema, porém nem sempre terá a versão mais atual de um software. Por essas características, é recomendada tanto para servidores quanto para usuários comuns que querem um sistema leve, estável e sem bugs.
Debian logo

Open SUSE




Embora não tão conhecido no Brasil, o openSUSE traz o YasT, gerenciador do sistema próprio da distribuição que facilita desde as configurações mais simples até as mais avançadas, como gerenciamento de proxies e compartilhamento de arquivos pela rede.
OpenSUSE logo

Fedora



Voltada para usuários que gostam de ter a última versão de todos os softwares e alterações de sistema, o Fedora é recomendado para usuários médios e avançados que saibam lidar com as possíveis incompatibilidades. Trazendo muitas caraccterísticas do Red Hat Enterprise Linux, distro comercial desenvolvida para servidores, possui excelente suporte a serviços de rede como arquivos, e-mail e web.
Fedora logo

Gentoo



Exigindo um alto nível de conhecimento do usuário, pode-se dizer que não existem dois sistemas Gentoo iguais no mundo, pois ele instala configurações especificas de cada hardware instalado. Se por um lado você consegue o máximo de performance de sua máquina, sem programas desnecessários ocupando a memória, por outro perderá várias horas durante a instalação em seu computador.
Gentoo logo

Dreamlinux



O representante brasileiro da lista traz um recurso muito procurado pelos usuários, que é o visual semelhante ao Mac OS, sistema operacional da Apple. Com vários programas úteis pré-instalados, o Dreamlinux é outro que entra na lista dos GNU/Linux voltados para a facilidade de uso.
Dreamlinux logo

Scientific Linux



Bastante procurado por institutos de pesquisa e laboratórios, o Scientific Linux possui suporte nativo a aplicativos de alta performance e programação paralela, e mesmo voltada para o processamento de grandes quantidades de dados não deixa de lado a interface de usuário amigável e softwares de uso diário, como navegadores, editores de texto e jogos.
Scientific Linux logo

Vários ambientes de trabalho


Cada distribuição possui suas configurações particulares e ambiente de trabalho padrão, o que não significa que você não pode mudá-las depois de instalá-las. Diferentemente do Windows ou do Mac OS, você pode ter vários ambientes instalados e selecioná-los quando for mais conveniente, não precisando ficar preso ao padrão da distribuição.

No GNU/Linux podemos definir tanto o sistema que queremos usar quanto o ambiente de trabalho, então você pode escolher entre o Ubuntu Gnome e Ubuntu KDE, Debian Gnome, KDE ou LXDE e assim por diante. Entre os vários ambientes disponíveis, listamos três dos mais utilizados:


Gnome



Alguns usuários preferem esse ambiente por achar que ele é mais leve e intuitivo, outros alegam que ele é mais sério e por isso recomendado para desenvolvedores de aplicações e ambientes de trabalho, tendo grandes nomes por trás de seu desenvolvimento, como Novell, IBM e HP. Atualmente possui duas versões, que focam em tipos diferentes de usuários: a 2.X e a 3.X. Embora uma seja a evolução da outra, a 2.X traz um ambiente muito mais leve, preferida por configurações de hardware um pouco mais humildes, enquanto a 3.X oferece suporte aos efeitos 3D por padrão, com vários efeitos que agradam os usuários que querem um desktop mais bonito.
Desktop Gnome 2
O Gnome 2, com maior parte de sua interface em 2D


Desktop Gnome 3
Gnome 3, com incorporação de recursos 3D nativos

KDE



Desenvolvido para o usuário que deseja todos os aplicativos prontos para uso logo após a instalação do sistema, o KDE traz um desktop completo como padrão, com navegadores web, gravadores de CD/DVD e players de música e vídeo pré-instalados. Possui também um visual bastante agradável com animações 3D e efeitos transparentes que deixam o visual do seu computador moderno e customizado, o que também exige mais recursos de hardware para funcionar.

Desktop KDE Plasma
KDE Plasma Desktop, completo logo após a instalação



LXDE 



Voltado para proprietários de máquinas mais antigas com performance mais limitada, uma distribuição com o LXDE como ambiente de trabalho pode ressuscitar aquele seu PC encostado ou mesmo fazer o seu netbook trabalhar com a velocidade de um desktop convencional. A exigência de menos recursos infelizmente sacrifica o visual e aplicações pré-instaladas, mas nem por isso quebra a compatibilidade dos programas que podemos utilizar nele, como o Firefox e o LibreOffice.

Desktop LXDE
LXDE, com menos poder de fogo mas muito mais leve para o sistema

Extraia todo o poder de seu hardware


Um dos grandes motivos de vários usuários gostarem tanto do GNU/Linux é a velocidade. O sistema é muito mais rápido que o Windows (para o mesmo hardware), o que é ótimo tanto para aqueles que possuem um computador com mais de idade quanto para os aficcionados por desempenho extremo. Não é à toa que os maiores supercomputadores do mundo preferem o pinguim como sistema operacional oficial.

Uma das preocupações comuns dos usuários é: "Será que aquele meu dispositivo vai funcionar no Linux?". A resposta é sim. A grande maioria dos drivers de placas wireless, impressoras e outros dispositivos já são configurados automaticamente na instalação, e você pode escolher tanto os fornecidos pelo GNU/Linux quanto os oficiais desenvolvidos pelo fabricante. Por exemplo, as grandes empresas fabricantes de placas de vídeo já disponibilizam versões oficiais de seus drivers para download. Em computadores portáteis, como notebooks e netbooks, o reconhecimento automático de placas de rede sem fio já economiza bastante trabalho se comparado a uma instalação do Windows.

Existem algumas distribuições que rodam até em computadores produzidos há mais de 10 anos, como é o caso do Joli OS, utilizando recursos de computação em nuvem para realizar a maior parte do processamento e ressuscitando aquele computador que você parou de usar há muito tempo por ele simplesmente "não rodar" aqueles novos aplicativos que você queria usar.



Segurança


No Windows estamos acostumados a ter que baixar um programa antivírus e atualizá-lo frequentemente, para não corrermos o risco de termos nossos dados pessoais e bancários roubados. O GNU/Linux possui um sistema de permissões bastante maduro, o que diminui (ou elimina) essa necessidade, mas mesmo assim traz mecanismos de segurança pré-instalados para deixar você sempre tranquilo.

Por ser originalmente desenvolvido para trabalhar em rede, a segurança sempre foi um dos pontos cruciais de seu sucesso nessa área, assim como o acesso a áreas protegidas do sistema, que requerem a senha do administrador para salvar as alterações, resultando em menos bugs causados acidentalmente pelo usuário.



Compatibilidade com programas Windows


Mesmo que o Linux seja um sistema operacional completamente diferente do Windows, isso não significa que você precisa abandonar os programas que mais utiliza. Através do Wine, programa de emulação de software, você pode instalar programas desenvolvidos para Windows dentro do Linux, como o Microsoft Office, Photoshop e até mesmo o Internet Explorer mais recente!

Além disso, existem excelentes programas que possuem versões para os dois sistemas, como o LibreOffice (suíte de escritório), Gimp (editor de imagens), VLC Media Player(reprodutor de vídeos), Audacity (editor de áudio semelhante ao Sound Forge) e o VirtualBox.



E o melhor: tudo de graça!


Dizem que tudo que é bom custa caro, mas o GNU/Linux está ai para provar o contrário. Você pode baixar, instalar e testar quantas distribuições desejar e quantas vezes quiser, pois não é necessário comprar uma licença para utilizar o Linux, já que ele é completamente desenvolvido sobre as diretrizes da licença GNU GPL (GNU General Public License, ou Licença Pública Geral GNU), que garante que ele vai ser sempre gratuito e de código aberto.

Não importa se você deseja utilizá-lo em casa, no escritório ou em algum servidor, a licença não restringe o uso comercial do GNU/Linux. Você pode inclusive fazer modificações em seu código e distribuí-lo para quem quiser, desde que mantenha a mesma licença e permita que outros também façam modificações em seu código.
O Linux é um sistema de código aberto


E você, já usou ou usa Linux? O que acha do sistema?

Este artigo faz parte de nossa biblioteca de conteúdo "Tudo o que você precisa saber sobre o Linux". Não deixe de acessar e conferir todo o conteúdo publicado sobre o Pinguim.

sexta-feira, 1 de dezembro de 2017

Unicamp - Estão abertas as inscrições para o curso de aperfeiçoamento em mineração de dados complexos



Por Zanoni Dias

Data de Publicação: 23 de Novembro de 2017

Estão abertas as inscrições para o Curso de Aperfeiçoamento em Mineração de Dados Complexos, a ser realizado no Instituto de Computação da Unicamp em 2018.

O curso explorará os principais métodos de Análise de Dados, Recuperação de Informação, Mineração de Dados, Visualização de Informação, tratamento de grandes volumes de dados (Big Data), além das mais modernas técnicas de Inteligência Artificial e Aprendizado de Máquina (inclusive Deep Learning).

Mais informações

Por favor, ajudem a divulgar o curso repassando esta mensagem para os seus contatos, e também compartilhando nossos posts nas redes sociais:

sexta-feira, 1 de setembro de 2017

Android não é Linux



Colaboração: Anahuac de Paula Gil

Data de Publicação: 30 de agosto de 2017

Linux é um kernel. O nome do sistema operacional é Android.

Sei que essa discussão é repetitiva e, provavelmente você já ouviu, leu ou até mesmo participou de alguma discussão sobre esse assunto. Mas pense um pouco: se é repetitivo é porque não há consenso. Então me dê uma chance de contar essa história.

O Google criou um sistema operacional livre chamado Android. No início eles não tinham um kernel livre, então usavam um proprietário enquanto se concentraram em todo o resto: sistema de arquivos, shell, editor de texto, compiladores, interface gráfica e muito mais.

Um dia alguém sugeriu o uso do kernel Linux, que permitia ser adaptado para a plataforma de hardware que o Google usava, estava licenciado por GPL e tinha um ótimo desempenho. Os testes foram um sucesso tão grande que eles logo decidiram rebatizar o sistema operacional de Android/Linux. Agradeceram demais ao Linus Torvalds e o mundo todo ficou sabendo.

A medida que o Android/Linux foi se tornando popular a fama de Linus também. Diversos ativistas e usuários entusiasmados começaram a chamar o SO apenas de Linux, porque era mais fácil e bonito. O Google fez campanhas educativas, tentou explicar que não seria correto eliminar o nome Android, afinal de contas eles tinham criado o sistema operacional. Não adiantou nada: os usuários mais fanáticos decidiram. acusaram o Google de interferir na liberdade de escolha do nome e Linus fez um depoimento emocionado onde disse: "As pessoas devem ter a liberdade de chamar o sistema operacional como bem quiserem. Eu chamo de Linux e acho que é absurdo e ridículo que queiram forçar as pessoas a chamá-lo de Android/Linux."

A Linux Foundation decidiu incorporar softwares não livres ao kernel linux para torná-lo mais compatível com os dispositivos disponíveis. Assim o Linux seria ainda mais popular. Deu certo: o Linux agora é o sistema operacional mais usado no mundo, pois está presente em mas de 86% de todos os smartphones do mundo.

É claro que o Google tentou reagir várias vezes, mas falhou. Foi acusado de xiita, de radical e de anti capitalista. Entretanto o argumento mais emblemático é que o se fosse para chamar o sistema operacional de Android/Linux, então seria muito mais justo chamá-lo de Android/Chrome/Maps/Waze/Hangout/Linux.

O que tinha começado como um projeto de software livre chamado Android, conquistou o planeta conhecido como Linux e contém tanto software privativos que nem é mais software livre.

É claro que o kernel é uma parte vital de um sistema operacional, mas a interface gráfica, o sistema de arquivos, o navegador e o editor de textos também são. O sistema operacional é a soma de todos seus componentes e não apenas o de um ou dois mais importantes.

O mercado gosta de determinados nomes e os usa para identificar objetos, definir conceitos e até mesmo para estigmatizar pessoas. Hacker como sinônimo de criminoso cibernético e Gilette para lâmina de barbear, são alguns exemplos. Seja por pressão financeira, campanhas de marketing ou interesses sócio-políticos, sempre há uma razão por trás disso.

Os criadores originais do Android estão convencidos que remover o nome Android é uma estratégia para remover a importância da liberdade do software da cena. Dizendo apenas Linux e mostrando apenas o pinguim, não se passa o recado da liberdade do software para o mercado.

...

É claro que você não chama o Android de Linux. É claro que você deve achar essa história um absurdo.

Então saiba que quase tudo que descrevi acima é verdade. E você ajuda a perpetuar o absurdo sempre que se refere a qualquer sistema operacional como Linux.

O nome do sistema operacional livre ou não - Ubuntu, Trisquel, Fedora, Parabola, openSuse, Ututo, Debian - é GNU. Ele foi criado em 1983 por Richard Stallman, que incorporou o kernel Linux em 1992.

Se você acha que as liberdades do software são fundamentais e quer ajudar o Movimento Software Livre de verdade, nunca mais diga que o sistema operacional é linux ou que uma distribuição é linux. É tão absurdo quanto chamar o Android de linux.

Lembre-se: o nome do sistema operacional é GNU.

Saudações Livres!
Me encontre no grupo #ultraGNU do https://riot.im

segunda-feira, 15 de maio de 2017

Raspberry p3 sem audio HDMI slackware-arm

Semana passada resolvi m e aventurar na arquitetura ARM e como muitos novatos esbarrei em um problema comum...  ausência de  de audio tanto no HDMI como no jack.

Após "gugglar" por dias, parecia que nenhuma das opções  resolvia o problema, até que achei um post que finalmente passou a informação correta =)

Em /boot/config.txt, colar as seguintes linhas.


dtparam=audio=on
hdmi_drive=2

 Após reiniciar, tudo funcionou perfeitamente =)


sábado, 22 de abril de 2017

Congelar o HD para recuperar os dados - Mito ou Realidade



Fonte www.dicas-l.com.br

Colaboração: Rubens Queiroz de Almeida

Data de Publicação: 29 de agosto de 2012

Uma história que circula há muitos anos na Internet é que, congelando o seu disco rígido defeituoso, você consegue dar uma nova vida a ele por alguns minutos, o que lhe permitirá recuperar os dados, parcial ou totalmente.

Ao que tudo indica, a técnica funciona mesmo. O Augusto Campos, do Br-Linux.org relatou um caso de sucesso em um artigo que escreveu para a revista Linux Magazine. Não consegui localizar o artigo original, mas que ele existe, existe.

Recentemente li mais um artigo a respeito, chamado Freeze your hard drive to recover data: Myth or reality?.

Reproduzo a seguir, em tradução livre, o conteúdo deste artigo.
Freeze your hard drive to recover data: Myth or reality?

Cerca de 2 semanas atrás, escrevi um artigo, que foi bastante popular, sobre a recuperação do disco rígido (recebi cerca de 20.000 visitas). O artigo abordou algumas soluções para ajudar na recuperação de um disco rígido defeituoso. Enquanto estava pesquisando para escrever este artigo, descobri algumas histórias de pessoas que colocavam o seu disco no freezer para dar-lhe uma vida adicional por um tempo suficiente para recuperar seus dados. Acho que, ao fazer isto, alguns componentes de metal do disco rígido se contraem, colocando de volta no lugar peças defeituosas, viabilizando que tudo volte a funcionar por mais alguns minutos.

O que vocês acham? Mito ou realidade? Parece que um monte de gente concorda que esta solução realmente funciona, então eu decidi testá-la com um disco rígido antigo Maxtor que havia pifado algumas semanas atrás. O HD não contém dados importantes, de modo que perder o disco realmente não seria um problema.

Antes de colocá-lo no congelador, a unidade estava fazendo um barulho estranho (cliques) e o computador exibia esta mensagem:
  Primary hard drive 0 not found, strike F1 to retry boot, F2 to run the setup utility 


Eu retirei o disco rígido do computador, coloquei-o dentro de um saco plástico Ziplock para evitar condensação de humidade.



Em seguida, coloquei-o no freezer e esperei por uma hora.
Finalmente, coloquei o disco de volta no computador, fechei o gabinete e liguei.

SIM! Funciona, o computador inicializou corretamente! Infelizmente, após o login, o Windows travou e eu não consegui fazer mais nada. Tentei rebootar, mas ...



Bem, pelo menos o disco rígido girou por cerca de 2 minutos antes de pifar novamente. Talvez isso não seja o suficiente para me deixar recuperar os dados, mas funcionou por algum tempo. :)

Observação: Um dia depois, coloquei o disco rígido de volta no congelador por 24 horas. Desta vez, o disco funcionou por mais 20 minutos.

Se você não quer correr o risco de perder dados e se você tem medo de tentar fazer isso, é melhor usar os serviços de especialistas.

Fonte do original em inglês: Freeze your hard drive to recover data: Myth or reality?

terça-feira, 21 de fevereiro de 2017

Escrevendo scripts de backup



Colaboração: Carlos E. Morimoto



Durante a década de 70, vários utilitários foram desenvolvidos para fazer backup de arquivos armazenados em servidores Unix. Os computadores da época eram muito limitados, por isso os utilitários precisavam ser simples e eficientes, e deveriam existir meios de agendar os backups para horários de pouco uso das máquinas.

Sugiram então utilitários como o tar e o gzip e mais tarde ferramentas como o rsync. Estes utilitários eram tão eficientes que continuaram sendo usados ao longo do tempo. Por incrível que possa parecer, são usados sem grandes modificações até os dias hoje.

Naturalmente, existem muitos utilitários amigáveis de backup, como o Amanda (para servidores) e o Konserve (um utilitários mais simples, voltado para usuários domésticos). Mas, internamente, eles continuam utilizando como base o o dump, tar, gzip e outros trigenários.

Mais incrível ainda, é que estes utilitários possuem uma penetração relativamente pequena. A maior parte dos backups ainda são feitos através de scripts personalizados, escritos pelo próprio administrador. E, novamente, estes scripts utilizam o tar, gzip, rsync e outros.

É justamente sobre estes scripts personalizados que vou falar aqui. Vamos começar com alguns exemplos simples:

Para compactar o conteúdo de uma pasta, usamos o tar combinado com o gzip ou bzip2. O tar agrupa os arquivos e o gzip os compacta. Os arquivos compactados com o gzip usam por padrão a extensão "tar.gz", enquanto os compactados com o bzip2 usam a extensão "tar.bz2". O bzip2 é mais eficiente, chega a obter 10% ou mais de compressão adicional, mas em compensação é bem mais pesado: demora cerca de 3 vezes mais para compactar os mesmos arquivos. Você escolhe entre um e outro de acordo com a tarefa.

O comando para compactar uma parta é similar ao "tar -zxvf" que usamos para descompactar arquivos. Para compactar a pasta "arquivos/", criando o arquivo "arquivos.tar.gz", o comando seria:
  $ tar -zcvf arquivos.tar.gz arquivos/ 
O "c" indica que o tar deve criar um novo arquivo e o "v" faz com que exiba informações na tela enquanto trabalha. Se preferir comprimir em bz2, muda apenas a primeira letra; a invés de "z" usamos "j":
  $ tar -jcvf arquivos.tar.bz2 arquivos/ 


Estes comandos seriam ideais para fazer um backup completo, de uma ou várias pastas do sistema, gerando um arquivo compactado que poderia ser armazenado num HD externo, gravado num DVD ou mesmo transferido via rede para outro servidor.

Imagine agora um outro cenário, onde você precisa fazer backup dos arquivos de uma pasta de trabalho diariamente. Os arquivos gerados não são muito grandes e você tem muito espaço disponível, mas é necessário que os backups diários feitos em arquivos separados e sejam guardados por um certo período, de forma que seja possível recuperar um arquivo qualquer a partir da data.

Ao invés de ficar renomeando os arquivos, você poderia usar um pequeno script para que os arquivos fossem gerados já com a data e hora incluída no nome do arquivo:
  DATA=`date +%Y-%m-%d-%H.%M`
  cd /mnt/backup
  tar -zcvf trabalho-"$DATA".tar.gz /mnt/hda6/trabalho/


A primeira linha do script cria uma variável "DATA", contendo o resultado do comando " date +%Y-%m-%d-%H.%M". O comando date retorna a data e hora atual, como em "Sex Set 16 12:36:06 BRST 2005". A saída padrão dele não é muito adequada para usar em nomes de arquivos, por isso usamos as opções para alterar o formato de saída, de forma que o resultado seja "2005-09-16-12.37" (ano, mês, dia, hora, minuto, segundo). Usamos este valor no nome do arquivo com o backup, de forma que cada vez que você chame o script, seja gerado um arquivo com a data e hora em que foi gerado, sem a possibilidade de dois arquivos saírem com o mesmo nome.

O próximo passo é fazer com que este script de backup seja executado diariamente de forma automática, o que pode ser feito usando o cron.

Em primeiro lugar, salve os comandos num arquivo de texto, que vamos chamar de "backup.sh" e transforme-o num executável usando o comando "chmod +x backup.sh".

Para que ele seja executado automaticamente todos os dias, copie-o para dentro da pasta "/etc/cron.daily" e certifique-se que o serviço "cron" esteja ativo:
  # cp -a backup-sh /etc/cron.daily
  # /etc/init.d/cron start 
Se preferir que o script seja executado apenas uma vez por semana, ou mesmo uma vez por hora, use as pastas "/etc/cron.weekly" ou a "/etc/cron.hourly". Por padrão, os scripts dentro da pasta "/etc/cron.daily" são executados pouco depois das 6 da manhã (o horário exato varia de acordo com a distribuição), para alterar o horário, edite o arquivo "/etc/crontab", alterando a linha:
  25 6 * * * root test -x /usr/sbin/anacron || run-parts --report /etc/cron.daily 


O "25 6" indica o minuto e a hora. Se quiser que o script seja executado às 11 da noite, por exemplo, mude para "00 23".

Neste exemplo usei a pasta "/mnt/backup" para salvar os arquivos. Esta pasta pode ser o ponto de montagem de um HD externo ou de um compartilhamento de rede por exemplo. O seu script pode conter os comandos necessários para montar e desmontar a pasta automaticamente.

Imagine, por exemplo, que o backup é sempre feito na primeira partição de um HD externo, ligado na porta USB, que é sempre detectada pelo sistema como "/dev/sda1". O script deve ser capaz de montar a partição, gravar o arquivo de backup e depois desmontá-la. Se por acaso o HD não estiver plugado, o script deve abortar o procedimento. Para isso precisamos verificar se o HD realmente foi montado depois de executar o comando "mount /dev/sda1 /mnt/sda1". Existem muitas formas de fazer isso, uma simples é simplesmente filtrar a saída do comando "mount" (que mostra todos os dispositivos montados) usando o grep para ver se o "/mnt/sda1" aparece na lista. Se não estiver, o script termina, caso esteja ele continua, executando os comandos de backup:
  mount /dev/sda1 /mnt/sda1
  montado=`mount | grep /mnt/sda1`
  
  if [ -z "$montado" ]; then
    exit 1
  else
    DATA=`date +%Y-%m-%d-%H.%M`
    cd /mnt/backup
    tar -zcvf trabalho-"$DATA".tar.gz /mnt/hda6/trabalho/
    umount /mnt/sda1
  fi 


A partir daí, sempre que você deixar o HD externo plugado no final do expediente, o backup é feito e estará pronto no outro dia. Se esquecer de plugar o HD num dia, o script percebe e não faz nada.

Se preferir que o script grave o backup num DVD, ao invés de simplesmente salvar numa pasta, você pode usar o "growisofs" para gravá-lo no DVD. Neste caso, vamos gerar o arquivo numa pasta temporária e deletá-lo depois da gravação:
  DATA=`date +%Y-%m-%d-%H.%M`
  rm -rf /tmp/backup; mkdir /tmp/backup; cd /tmp/backup
  tar -zcvf trabalho-"$DATA".tar.gz /mnt/hda6/trabalho/
  growisofs -speed=2 -Z /dev/dvd -R -J /tmp/backup/trabalho-"$DATA".tar.gz
  rm -rf /tmp/backup 


O "-speed=2" permite que você especifique a velocidade de gravação do DVD, o "-Z" cria uma nova seção no DVD, é possível usar o mesmo disco para gravar vários backups (se o espaço permitir) usando a opção "-M" a partir da segunda gravação, que adiciona novas seções no DVD, até que o espaço se acabe.

O "/dev/dvd" indica o dispositivo do drive de DVD. A maioria das distribuições cria o link /dev/dvd apontando para o dispositivo correto, mas, em caso de problemas, você pode indicar diretamente o dispositivo correto, como, por exemplo, "/dev/hdc". As opções "-R -J" adicionam suporte às extensões RockRidge e Joilet.

Se o cron for configurado para executar o script todos os dias, você só precisará se preocupar em deixar o DVD no drive antes de sair.

Outro grande aliado na hora de programar backups é o rsync. Ele permite sincronizar o conteúdo de duas pastas, transferindo apenas as modificações. Ele não trabalha apenas comparando arquivo por arquivo, mas também comparando o conteúdo de cada um. Se apenas uma pequena parte do arquivo foi alterada, o rsync transferirá apenas ela, sem copiar novamente todo o arquivo.

Ele é uma forma simples de fazer backups incrementais, de grandes quantidades de arquivos, ou mesmo partições inteiras, mantendo uma única cópia atualizada de tudo num HD externo ou num servidor remoto. Este backup incremental pode ser atualizado todo dia e complementado por um backup completo (para o caso de um desastre acontecer), feito uma vez por semana ou uma vez por mês.

Para instalar o rsync, procure pelo pacote "rsync" no gerenciador de pacotes. No Debian instale com um "apt-get install rsync" e no Mandriva com um "urpmi rsync".

Para fazer um backup local, basta informar a pasta de origem e a pasta de destino, para onde os arquivos serão copiados:
  $ rsync -av /mnt/hda6/trabalho /mnt/backup/ 


A opção "-a" (archive) faz com que todas as permissões e atributos dos arquivos sejam mantidos, da mesma forma que ao criar os arquivos com o tar e o "v" (verbose) mostra o progresso na tela.

A cópia inicial vai demorar um pouco, mais do que demoraria uma cópia simples dos arquivos. Mas, a partir da segunda vez a operação será muito mais rápida.

Note que neste comando estamos copiando a pasta "trabalho" recursivamente para dentro da "/mnt/backup", de forma que seja criada a pasta "/mnt/backup/trabalho". Adicionando uma barra, como em "/mnt/hda6/trabalho/", o rsync copiaria o conteúdo interno da pasta diretamente para dentro da "/mnt/backup".

Se algum desastre acontecer e você precisar recuperar os dados, basta inverter a ordem das pastas no comando, como em:
  $ rsync -av /mnt/backup/trabalho /mnt/hda6/trabalho/ 


O rsync pode ser também usado remotamente. Originalmente ele não utiliza nenhum tipo de criptografia, o que faz com que ele não seja muito adequado para backups via Internet. Mas, este problema pode ser resolvido com a ajuda do SSH, que pode ser utilizado como meio de transporte. Não é a toa que o SSH é chamado de canivete suíço, ele realmente faz de tudo.

Neste caso o comando ficaria um pouco mais complexo:
  $ rsync -av --rsh="ssh -C -l tux" /mnt/hda6/trabalho \
  tux@192.168.0.1:/mnt/backup/ 


Veja que foi adicionado um parâmetro adicional, o --rsh="ssh -C -l tux", que orienta o rsync a utilizar o SSH como meio de transporte. O "-C" orienta o SSH a comprimir todos os dados (economizando banda da rede) e a se conectar ao servidor remoto usando o login tux (-l tux). Naturalmente, para que o comando funcione é preciso que o servidor esteja com o SSH habilitado, e você tenha um login de acesso.

Em seguida vem a pasta local com os arquivos, o endereço IP (ou domínio) do servidor e a pasta (do servidor) para onde vão os arquivos.

Para recuperar o backup, basta novamente inverter a ordem do comando, como em:
  $ rsync -av --rsh="ssh -C -l tux" tux@192.168.0.1:/mnt/backup/ \
  mnt/hda6/trabalho 


Originalmente, você vai precisar fornecer a senha de acesso ao servidor cada vez que executar o comando. Ao usar o comando dentro do script de backup, você pode gerar uma chave de autenticação, tornando o login automático. Esta opção é menos segura, pois caso alguém consiga copiar a chave (o arquivo .ssh/id_rsa dentro no home do usuário), poderá ganhar acesso ao servidor.

De qualquer forma, para usar este recurso, rode o comando "ssh-keygen -t rsa" (que gera a chave de autenticação) usando o login do usuário que executará o script de backup, deixando a passprase em branco. Em seguida, copie-o para o servidor, usando o comando:
  $ ssh-copy-id -i ~/.ssh/id_rsa.pub tux@192.168.0.1 
A partir daí, o script de backup pode ser executado diretamente, através do cron, pois não será mais solicitada a senha.