Como criar links e atalhos no Linux.

A criação de links e atalhos ajuda a chegar mais rápido a arquivos e diretórios (ou pastas) em qualquer ambiente.
Neste texto vou mostrar como realizar a tarefa no ambiente gráfico e no terminal — vale a pena conhecer as duas maneiras.
captura de tela da lista de arquivos no Thunar

Crie atalhos no painel lateral do gerenciador de arquivos

O painel lateral (usualmente, à esquerda) do gerenciador de arquivos já abriga alguns atalhos úteis para a maioria dos usuários.
Você pode adicionar os seus, se quiser.
Para isto, arraste um arquivo ou uma pasta, do painel central para dentro da lista de atalhos no painel lateral.
Veja a figura:

Captura de tela do gerenciador de arquivos Thunar, no Xubuntu
Clique, para ver detalhes.

Saiba como criar atalhos na linha de comando

O comando para criar links, no terminal do Linux, é o ln.
O seu funcionamento é simples e você deve informar, antes de executar, o tipo de atalho, o diretório a ser linkado e o nome do link.
Veja um exemplo de criação de um link simbólico:

ln -s /var/www/html/ site

Os detalhes do comando acima:

  • -s — o tipo de link a ser criado: simbólico.
  • /var/www/html/ — o diretório a ser linkado.
  • site — o nome (à sua escolha) do link.

Tudo que for gravado em site, na verdade, estará sendo gravado em /var/www/html/.
Os links simbólicos têm coloração diferenciada na listagem de um diretório.
Ao dar o comando ls, os links são exibido em anil (ou azul claro).

captura de tela do terminal com listagem de arquivos e diretórios
Clique, para ver detalhes.

Como remover um link

Desde que o link seja simbólico, a operação de remoção só irá afetar o link. O diretório a que o link se refere permanecerá intacto.
Para remover o link, use o comando de remoção de arquivo normal. Para fazer isto, no exemplo dado acima, fica assim:

rm site

Pode verificar. Só o link foi apagado.

Use o gstreamer para fazer resampling de arquivos mp3 no Ubuntu

É possível reduzir ainda mais os tamanhos dos arquivos mp3, com pouca perda da qualidade. A utilidade deste procedimento é fazer com que uma quantidade maior deles caiba em dispositivos reprodutores antigos, com capacidade de armazenamento muito limitada.
Se você não se importa em ouvir toda a sua coleção de músicas em um dispositivo de som, com qualidade de rádio, esta é uma ótima ideia.

iPods mp3 player
Coleção de iPods

No primeiro post sobre este tema mostramos como fazer este trabalho através do LAME.
É claro que a redução tem um custo — a consequente redução da qualidade do áudio do arquivo. A gente aposta na possibilidade de esta queda na qualidade ser imperceptível para a maioria das pessoas e no aproveitamento mais eficiente do espaço na mídia de armazenamento. Houve caso de triplicar a quantidade de arquivos dentro de um pendrive antigo.
Atualmente, temos outras ferramentas que também podem fazer o trabalho e é possível criar um script de automação da tarefa bem menor e mais enxuto do que o do artigo anterior.
Vamos ver aqui como isto é possível.

Instalação das ferramentas de trabalho

Aqui vamos usar o GStreamer para fazer a conversão e resampleamento (resampling) dos arquivos mp3. A principal vantagem dele, em relação ao LAME, é que ele retém as informações id3 dos arquivos. Assim, podemos fazer um único script e menor.
Abra um terminal (Ctrl + Alt + T, no Ubuntu) e digite o comando que segue, para instalar gstreamer-tools:

sudo apt-get install gstreamer-tools

Aguarde alguns minutos enquanto o pacote é instalado e prossiga.

Como criar um script de conversão de arquivos de áudio mp3

Sugiro criar um diretório para scripts e programas no seu /home:

mkdir ~/bin
cd ~/bin

Agora abra o seu editor de textos preferido, copie e cole o script abaixo dentro dele:

#!/bin/bash
#
# gshrink - Um script para resamplear todos os arquivos mp3 do
# diretorio. Este script depende do pacote gstremar-tools
# Os créditos do script original:
# Elder-Geek --> http://elder-geek.blogspot.com.br
######################################################
# Lita os arquivos mp3 no diretorio atual
ls *.mp3 > mp3_list
ls *.MP3 >> mp3_list
# Analisa a lista de arquivos mp3 e substitui os espaços por caracteres de escape
sed -i 's: :\\ :g' mp3_list
# Verifica se o subdiretorio resample já existe. Se não, cria.
if
  test -e ./resample
then
  echo "diretorio/arquivo resample ja existe - apagar? (S/n)"
  read reply
  if
    [ "$reply" != "n" ]
  then
    rm -r resample
    mkdir resample
  else
    exit
  fi
else
  mkdir resample
fi
# Resampleia cada mp3 e grava as tags
# CBR bitrate bitrate=128
# VBR quality quality=9
  cat mp3_list |while read song
do
  echo "$song"
  gst-launch filesrc location= \"$song\" ! decodebin2 ! audioconvert ! lamemp3enc target=bitrate bitrate=128 ! id3v2mux ! filesink location=\"resample/$song\"
done
#clean up
if
  test -e mp3_list
then
  rm mp3_list
fi
if
  test -e tag2.txt
then
  rm tag2.txt
fi
exit

Uma última dica

Para quem fez backup de todos os seus CD’s e guardou cada coletânea e álbum em pastas diferentes, recomendo executar o script dentro de cada pasta de arquivos mp3 – o que vai criar um subdiretório adicional resample com os mesmos arquivos da pasta pai, só que resampleados e reduzidos, prontos para ir pra qualquer lugar.

Como reduzir o tamanho do arquivo de audio mp3

O caso aqui é o de reaproveitar todo e qualquer aparelho reprodutor de mp3, ou cartões de memória velhos e, sobretudo, com espaço para armazenamento muito limitado. Eu, mesmo, tinha um pendrive “guerreiro” de 256 Mb, que devia estar próximo dos 7 anos de uso — simplesmente não lembro de quando o comprei. Mas funciona bem em uma caixa de som com entrada USB.
Recentemente, converti uma coleção inteira de CDs para mp3, como cópia de segurança. Agora, para ouvir no dia a dia, não preciso de arquivos de 320 kbps – 128 kbps, ou menos, podem ser o suficiente.

MP3 Logo
MP3 Logo

Se você tem um iPod ou celular antigo, com espaço insuficiente para armazenar músicas, fazer um downsampling nelas pode ser uma solução — é possível triplicar a quantidade de músicas que cabem no dispositivo.
OBS.:A segunda parte deste artigo ensina a fazer esta tarefa com o gstreamer-tools.

Ferramentas necessárias para reduzir o tamanho do arquivo mp3

Os aplicativos necessários para realizar esta tarefa são o python-mutagen e o lame. Ambos podem ser baixados e usados livremente.
No Ubuntu, você pode instalar os dois primeiros via terminal (Ctrl + Alt + T), assim:

sudo apt-get install lame python-mutagen

Como converter os arquivos mp3

Você deve ter centenas de arquivos para converter, não apenas um, eu sei… — mas eu quero mostrar como tudo funciona. Sinta-se livre para pular esta parte, se quiser, apressadinho(a). 😉
Dentro do terminal aberto, digite o seguinte comando para resamplear a sua música (adapte o comando à sua situação, substituindo os nomes dos arquivos):

lame -V5 --vbr-new --resample 44.1 arquivo_original.mp3 arquivo_resampleado.mp3

Aguarde alguns intantes, enquanto os arquivos são processados e, depois, compare os tamanhos.

reduzir o tamanho do mp3
Clique para ampliar a tela

Depois de concluído o trabalho, verifique os tamanhos dos arquivos.
Parece que vai dar pra reviver o antigo cartão de memória, ou não?
Como resamplear arquivos mp3
Clique para ampliar

Problemas que você pode ter com a conversão

Temos dois problemas com este método, por mais eficiente que ele seja:

  • O LAME não copia as tags id3 pro arquivo de origem — em outras palavras, na hora em que estiver tocando, o display do seu aparelho não vai mostrar as informações da música (nome, cantor, álbum etc) – o que pode ser um problema menor para quem vai tocá-las em um aparelho sem visor;
  • Como eu imagino que você tenha centenas de músicas para converter, todo este trabalho braçal não tem sentido.

Como converter muitos arquivos mp3

Para fazer o resampling de uma quantidade brutal de arquivos, o ideal é usar um script.
O Linerd do TuxTweaks, ensina a montar um este script que automatiza a nossa tarefa.
Em verdade, vos digo que serão 2 scripts. O primeiro lê todos os arquivos do diretório a partir do qual está sendo executado e os repassa pro segundo script, que faz o resampling e copia as tags id3. Todos os arquivos do diretório atual serão copiados para um segundo, chamado resample, criado pelo script.
A recomendação, aqui, é que você crie uma pasta (diretório) só para scripts e programas seus:

mkdir ~/bin
cd ~/bin

Copie o texto do script abaixo e cole-o dentro do seu editor de textos preferido. Salve-o como mp3shrink dentro do diretório criado para isto ~/bin

#!/bin/bash
#
# mp3shrink - Um script para resamplear todos os arquivos mp3
# em um diretorio. Este script chama o cptag que precisa
# estar no diretorio do mp3shrink. O cptag depende do lame
# e do mid3v2 (mid3v2 se encontra no pacote do python-mutagen
# É aconselhavel que os scripts fiquem no diretório  
# ~/bin.
######################################################

# Lita os mp3 no diretorio atual
ls *.mp3 > mp3_list
ls *.MP3 >> mp3_list

# Analisa os arquivos mp3 e substitui os espaços em branco por barras de escape.
sed -i 's: :\\ :g' mp3_list

# Verifica a existencia do diretorio resample. Cria um se nao existir
if
   test -e ./resample
then
   echo "diretorio/arquivo resample ja existe. deseja remover? (S/n)"
   read reply
   if
     [ "$reply" != "n" ]
   then
     rm -r resample
     mkdir resample
   else
     exit
   fi
else
   mkdir resample
fi

# Resampleia cada arquivo mp3 e grava as tags atraves do script cptag
cat mp3_list |while read song
do
   echo "$song"
   ~/bin/cptag "$song"
done

# fazendo a limpeza .... 
if
   test -e mp3_list
then
   rm mp3_list
fi
if
   test -e tag2.txt
then
   rm tag2.txt
fi
exit

Feito isto, crie o arquivo cptag, também dentro do diretório ~/bin. Segue o código:

#!/bin/bash
#
#cptag - Um script que resampleia arquivos mp3 com o LAME
#        e copia as tags id3v2 do original pro novo.
#
#####################

# Le as tags id3 e grava no arquivo
mid3v2 -l "$1" > tag2.txt

# Resampleia o arquivo de audio

lame -V5 --vbr-new --resample 44.1 "$1" "resample/$1"

# ajusta o valor da variavel 'title'
if
   grep TIT2= tag2.txt > /dev/null  #testa se a tag title existe
then
   title=`grep TIT2= tag2.txt | sed "s:TIT2=::"`
   echo $title
else
   echo "A tag title nao existe."
fi

# Ajusta a variavel 'album'
if
   grep TALB= tag2.txt > /dev/null  #testa se a tag album existe
then
   album=`grep TALB= tag2.txt | sed "s:TALB=::"`
   echo $album
else
   echo "A tag album nao existe."
fi

# Ajusta a variavel 'artista'
if
   grep TPE1= tag2.txt > /dev/null  #Testa se a tag artista existe
then
   artist=`grep TPE1= tag2.txt | sed "s:TPE1=::"`
   echo $artist
else
   echo "A tag artista nao existe."
fi

# Ajusta o valor da variavel 'track'
if
   grep TRCK= tag2.txt > /dev/null  # Testa se a tag track existe
then
   track=`grep TRCK= tag2.txt | sed "s:TRCK=::"`
   echo $track
else
   echo "A tag track nao existe."
fi

# Ajusta a variavel 'genre'
if
   grep TCON= tag2.txt > /dev/null  # Testa se a taf genre exsite
then
   genre=`grep TCON= tag2.txt | sed "s:TCON=::"`
   echo $genre
else
   echo "A tag genre nao existe."
fi

# Grava as tags no arquivo
mid3v2 -t "$title" -A "$album" -a "$artist" -T "$track" -g "$genre" "resample/$1"

exit

Agora, você precisa tornar estes dois scripts executáveis:

cd ~/bin
chmod u+x mp3shrink cptag

Feito!
Agora vá para o diretório em que se encontram todos os mp3 que você deseja resamplear e execute:

mp3shrink

O script vai guardar os novos arquivos em um subdiretório chamado resample. Dê uma olhada!
Divirta-se!

4 comandos fatais e proibidos pro Linux.

Há comandos que são extremamente danosos pro seu sistema operacional Linux, se executados inadvertidamente.
Felizmente, nenhum deles pode ser executado sem privilégios administrativos — mas você deve ser cuidadoso, mesmo assim.
Captura_de_tela-Breaking.Bad.S01E04.avi-1Se o seu objetivo é o aprendizado, o ambiente mais seguro para testar estes e muitos outros comandos é o virtual. Aprenda a criar uma máquina virtual e vá brincar com segurança dentro dela.

O comando que apaga tudo

A função do comando rm é remover arquivos — e ele pode remover diretórios inteiros também, sem pedir qualquer confirmação.
Ao executar o comando rm -rfv /, com privilégios de root todos os arquivos e diretórios do seu sistema serão eliminados.
Veja o que ele faz:

  • r — indica a recursividade. Todos os arquivos do diretório atual e seus subdiretórios sofrerão a ação do comando;
  • f — indica a ‘forçabilidade’. Todos os arquivos serão forçosamente removidos, independente de suas permissões;
  • v — liga a ‘verbosidade’. Torna tudo mais lindo ao exibir os arquivos à medida em que são eliminados no seu terminal;
  • / — indica o local em que a operação ocorrerá. Neste caso, a raiz. É isto que torna o comando todo tão perigoso;

Se você executar a linha sem privilégios administrativos, só os arquivos nos quais você tem permissão de escrita serão afetados.

Como executar uma fork bomb

Esta é uma das formas de se fazer um ataque de negação de serviços, que consiste em, basicamente, saturar os recursos de um servidor ao ponto de torná-lo indisponível.
A fork bomb apresentada a seguir faz com que o Linux ou o Unix opere definindo uma função, chamada ‘:’ e que refira-se a si mesma duas vezes – em background e foreground:

: (){ : | : & };:

No Linux, o administrador pode prevenir este tipo de ataque com o comando ulimit que impõe restrições à quantidade de processos simultâneos por usuário.

Formatar uma partição

Qualquer instalação decente do Linux estará distribuída em várias partições. O comando:

mkfs.ext4 /dev/sdaX</code>

vai aplicar uma formatação completa à partição /dev/sdaX.
Formatar um disco completamente, desta forma, pode ser útil no caso de se estar repassando a máquina para uma outra pessoa.

Escrever diretamente no disco rígido

Ao enviar a saída de um comando diretamente pro endereço do dispositivo de disco rígido não é apenas desaconselhável. É uma ação muito perigosa e danosa pro sistema de arquivos, em sua máquina.
Pode ser feito da seguinte forma:

ls > /dev/sda

Há várias outras formas de se danificar um sistema Linux/Unix — e, na maior parte delas, é necessário ter privilégios especiais para ter sucesso.
Distribuições Linux voltadas para usuários com menor nível de conhecimento costumam vir com algumas configurações que previnem a maior parte dos acidentes.

Seja responsável! 😉

Como fazer backup do seu banco de dados MySQL?

Cluster (Imagem: WikiMedia.)
Cluster (Imagem: WikiMedia.)

A segurança em TI, começa com as cópias de segurança (os backups):

  1. Sempre faça Backup de tudo o que é importante
  2. Teste frequentemente os seus backups — poucas coisas, em sua vida, serão tão frustrantes quanto, ao tentar se recuperar de um desastre, descobrir que não foram feitos adequadamente ou se corromperam
  3. Armazene adequadamente — mantenha as cópias de segurança longe do local em que se encontram os dados originais, para que não corram riscos de sofrer o mesmo incidente (roubo, incêndio, sabotagem etc).

Nenhum ‘esquema’ de segurança está completo se o foco for apenas a prevenção dos eventos sinistros. Política de segurança vai além da prevenção — uma vez que as possibilidades de ser vítima de invasão e acidentes são reais — por isso é fundamental ter um plano eficaz para uma rápida recuperação. Se os danos são inevitáveis, ter um plano B, C… pode minimizar significativamente os prejuízos.

Você é blogueiro? Tem um website ou portal?

Donos de sites e blogueiros têm razões adicionais para se preocupar com backup de todos os seus posts. O provedor pode tirar do ar e remover de seus servidores todo o seu trabalho, se acreditar que termos do seu contrato foram violados.
Veja como se colocar do lado seguro.

O nosso cenário

Neste post, vou mostrar como usar o comando mysqldump para fazer guardar cópias de segurança dos dados armazenados no seu servidor. Se você não se sente à vontade com comandos em modo texto, pode usar uma excelente ferramenta web, chamada phpMyAdmin, que faz o mesmo trabalho com alguns cliques.
Vamos usar algumas variáveis em meio aos comandos, para tentar torná-los mais compreensíveis. Se você não souber como preencher algumas destas variáveis, consulte o administrador do banco de dados. Veja quais são:

  • dbname — o nome do banco de dados
  • dbuser — o nome de usuário que vai acessar o banco. Em alguns casos, vamos usar o root (administrador)
  • dbpass — a senha do usuário do banco
  • dbhost — o servidor em que se encontra o banco. Em uma instalação local, normalmente é localhost

Como fazer backup do banco de dados com o mysqldump

O mysqldump é uma ferramenta eficiente para fazer backup do seu banco de dados na linha de comando, no servidor local ou remoto (via SSH). Ele cria um arquivo .sql com os comandos DROP, CREATE e INSERT. Veja como usar o comando mysqldump como root:

mysqldump -u root -p dbname > backup.sql

No exemplo acima, direcionamos uma cópia integral do banco de dados dbname pro arquivo backup.sql. Todos os comandos sql necessários para a criação de uma nova versão daquele banco, estão incluídos em backup.sql.
Para copiar mais de um banco de dados, separe seus nomes com espaços:

mysqldump -u root -p dbname1 dbname2 dbname3 > backup.sql

Se você quiser fazer backup de todos os bancos de dados do servidor, usar o parâmetro --all-databases torna tudo mais fácil:

mysqldump -u root -p --all-databases > backup-de-tudo.sql

Nota: O comando mysqldump bloqueia o banco de dados enquanto trabalha. Portanto, ele deixa os usuários sem acesso, enquanto está sendo executado. Em casos de bancos de dados muito extensos, ele pode demorar para ser concluído. O bom senso manda avisar os usuários com antecedência e não fazer backups demorados em horários de pico.

Como comprimir o arquivo de backup

Há vários motivos para comprimir o seu arquivo de backup:

  • arquivos de texto .sql grandes, atingem excelentes taxas de compressão;
  • quando comprimidos, podem ser enviados de um ponto a outro na rede muito mais rápido, consumindo muito menos banda;
  • você pode armazenar uma quantidade maior de cópias de segurança em uma mídia física (CD, DVD ou BluRay) ou em uma conta na nuvem.
    • Veja como é fácil realizar este processo, usando o exemplo anterior:

      mysqldump -u root -p --all-databases | gzip -9 > backup-de-tudo.sql.gz 

      Usamos o aplicativo gzip, presente na maioria das distro Linux, com o nível de compressão máximo (9), neste exemplo.
      Para descompactar, posteriormente, use o gunzip:

      gunzip backup-de-tudo.sql.gz

      Como restaurar o backup feito com mysqldump

      Não esqueça de substituir as variáveis pelos valores adequados, a seguir:

      mysql -u dbuser -pdbpass dbname < backup.sql

      Nota: A senha deve ser digitada “grudada” ao parâmetro -p.
      Para restaurar um arquivo de backup comprimido, faça assim:

      gunzip < backup.sql.gz | mysql -u dbuser -pdbpass dbname

      Se você deseja inserir os dados de backup.sql em um banco de dados já existente:

      mysqlimport -u dbuser -pdbpass backup.sql

      Como fazer um backup local e restaurar no servidor remoto

      Aqui, vou descrever o meu modo preferido de fazer backups. O problema é que nem sempre ele é aplicável — alguns provedores proíbem conexões, de fora, ao banco de dados. Ou seja, só aceitam conexões no localhost ou de dentro da sua própria rede. Quando isto ocorre, você recebe a seguinte mensagem ao tentar se conectar:

      mysqldump: Got error: 1045: Access denied for user ... 

      Neste caso, o correto é se conectar ao provedor primeiro. Depois, ao banco de dados. Clique aqui, para saber como se conectar ao MySQL, em um servidor remoto via SSH.
      Uma vez conectado, o mysqldump pode ser usado para realizar o serviço. Veja como:

      mysqldump -u dbuser-local -pdbpass-local dbname-local | mysql -u dbuser-remoto -pdbpass-remoto --host=dbhost-remoto -C dbname-remoto

      Nota: Fique atento, para usar os nomes e senhas corretos. Os valores e nomes locais são possivelmente diferentes dos valores remotos.
      Enfim, muito mais pode ser escrito sobre backups e, com toda certeza, há muitas outras formas de realizá-los para bancos de dados MySQL. O importante, mesmo, é fazê-los com frequência. Não se esqueça disto.