Comparar arquivos no Ubuntu
Hoje arrumei um bom exemplo para a pergunta pra que usar a linha de comando no meu computador? Para mim a resposta é: para poder usar mini-utilitários e outras traquitanas que você podem ser criadas rapidamente.
Para gravar meus CDs e DVDs eu uso o K3b (que oficialmente é para KDE mas funciona sem problema no Gnome, como a maioria dos programas para KDE). Não sei se por culpa do modelo de gravador ou do software, se eu peço para ele verificar a gravação ao terminar ele dá aquela ejetadinha no disco, puxa de novo e começa a comparar (não lembro se o Nero faz a mesma coisa). Isso nem sempre funciona redondo e o programa acusa erro de leitura.
Não muito a fim de jogar fora a mídia e tentar de novo (perdendo tempo e dinheiro, muquirana que sou) fiz um scriptzeco para comparar todos os arquivos do CD com os originais do HD. Isso é feito com o comando cmp, que apesar do nome “comando” nada mais é do que um programinha-sem-tela. Aliás foi assim que o “Linux” nasceu: com um monte de malucos criando versões abertas dos comandinhos legais do Unix, o projeto GNU.
Como o cmp só compara arquivo por arquivo (cmp a.txt b.txt) eu precisava de uma maneira de ir arquivo por arquivo fazendo a comparação. Assim como Neston existem 1001 maneiras de fazer isso. Em bash, por exemplo, eu faria um loop entre todos os arquivos, etc. etc. Mas como o meu negócio é Ruby resolvi fazer o seguinte:
#! /usr/local/bin/ruby
Dir.new('/media/cdrom0').each do |f|
if !(f =~ /^./)
puts f
puts `cmp /media/cdrom0/#{f} ./#{f}`
end
end
Seis linhas resolvem o meu problema. Imagine fazer isso com interface gráfica. Pode até ser fácil para alguns, mas seria o proverbial matar mosca com tiro de canhão. E eu não poderia publicar assim fácil no meu blog, para quem quiser sair usando. E, claro… como coloquei o código fonte você pode rodar isso com nenhuma ou poucas modificações em outros Unix, no OSX e provavelmente até no Windows.
Bom exemplo do Ruby. Sobre o motivo de um CD ser ejetado antes da comparação, o motivo está nos caches agressivos usados pelos fabricantes. Sem ejetar, a comparação é incorreta porque o buffer recém-gravado é comparado com sua origem. Ejetar limpa o cache e permite uma comparação real.
Sobre o k3b, posso dizer que muito provavelmente deve ser com o seu drive - uso o programa há anos, em 02 distribuições diferentes, com 03 drives diferentes, e nunca tive problema com a verificação do cd.
É por isso que eu uso o GnomeBaker …
Eu procuro não instalar nada “K” no meu ubuntu (questão de gosto e padronização hehehe), mas infelizmente não deu pra fugir do amaroK … o bichim é bom pra caramba …
É Celso, pelo que o Ronaldo falou deve ser o drive mesmo. Vou ver se o k3b tem uma configuração para ser menos apressadinho.
Glacial, o Amarok é hoje daqueles programas indispensáveis. Fora que quando estou usando Windows (e ouvindo músicas no Winamp) me vejo procurando a tecla Windows-C pra dar pause, ehehe.
Eu posso estar enganado, mas acho que o k3b já veio como padrão do Ubuntu, não?
Não lembro se no Drapper era o k3b como padrão. No Edgy vem o gnomeBaker como default.
Voltando ao amaroK, além das globalhotkeys, ele foi o único que trabalhou direito no quesito sync com iPobre. Sem contar com o trilhão de scripts (leia-se: plugins) que tem pra ele.
(Tô no windows porque to no trampo hehehe)