sábado, 13 de setembro de 2008

Clonando HD com Linux

Serei breve, mas espero que ajude em situações chatas de clonagem de HD.
No windows tem-se Ghost, tem também para Linux e todo esse blábláblá..
Mas vamos ao que interessa, se você precisa fazer poucas clonagens e não está afim de ler enormes tutoriais sobre ferramentas mais complicadas, ou se só possui um terminal, pois bem, vamos de Shell mesmo..

Fiz isso usando Ubuntu 8.04, para copiar uma instalação dele para outras maquinas, diferentes versões e distribuições possivelmente se comporte de forma pouco diferente.

Primeiro, ligue os dois HDs (cuidado para deixar Master / Slave se usando ATA) a ser instalado e dê boot pelo live cd do Ubuntu. Use o particionador de sua preferência, mas creio que usando o Ubuntu, irá usar o GParted :-)
Deixe particionado seguindo as estruturas do HD que vai ser copiado. Ou seja, se no HD "original" tiver uma partição primária ext3, uma extendida composta por uma lógica ext3 e uma swap; deixe seu HD "novo" configurado da mesma maneira para facilitar a cópia, mas creio que se quiser usar ext2, reserFS na nova não terá problemas, apenas têm que ficar atento nos próximos passos.
Coloque a flag "boot" na partição onde ficará o SO (e deve ser partição primária).

Uma observação, os HDs não precisam ser do mesmo tamanho! Só use o bom senso, se tiver mais dados no original do que caberia no novo não perca tempo tentando copiar né =P

Feito o particionamento, monte as partições do HD de origem e as partições equivalentes no HD destino (não monte a SWAP xD). Pode montar usando o navegador de arquivos, ou, caso necessario pelo terminal:
mount -t [tipo] [origem] [ponto de montagem]
onde [tipo] provavelmente seja ext3,
[origem] algo como
/dev/sda1/
[ponto de montagem] crie alguma pasta e coloque seu caminho aqui

Feita a montagem das partições, vamos a cópia:
Abra um terminal como superusuario, "sudo su",
vamos fazer uma cópia que mantenha as permissões e dados dos arquivos do HD original, para isso um "cp -a" resolve
cp -a [origem]/* [destino]
exemplo:
rm -rf /media/disk-1/*
cp -a /media/disk/* /media/disk-1/
neste exemplo, o comando rm foi feito para certificar de limpar a partição destino antes da copia, após isso serão copiados todos os dados da partição montada em /media/disk e gravados na partição montada /media/disk-1.
Faça a cópia de outras partições se necessário.

Reinicie a maquina com apenas o HD destino, bootando pelo live cd (cuidado com os jampers de master slave se não usar Sata!).
Monte a partição raiz do HD destino, e edite o fstab, use o Vim ou o Gedit :)
ex: vim /media/disk/etc/fstab

Troque /media/disk pelo local onde foi montada a partição =P
Edite de acordo com seu particionamento atual, deixando os locais como "/dev/sda1" por exemplo, ao invés do código de endereço do HD, pois já que não se trata do mesmo HD, usar este endereço causará falha. Caso necessario, entre como superusuário num terminal e use fdisk -l, que lhe listará as partições do HD.

Pronto, a clonagem está quase terminada, falta apenas reinstalar o gerenciador de boot grub, portanto ainda não desligue a máquina e nem desmonte a partição, pois do jeito que está, quando tentar bootar por este HD o grub vai apresentar falha.

mount /dev /media/disk/dev --bind
mount /sys /media/disk/sys --bind
mount /proc /media/disk/proc --bind
chroot /media/disk/
grep -v rootfs /proc/mounts > /etc/mtab

grub-install /dev/sda
##Clonagem completa e bootavel##

obs: troque /media/disk pelo ponto de montagem (só para lembrar né)
troque sda por outro dispositivo caso necessario, talvez sdb, sdc, veja no fdisk -l para garantir.

Tome muito cuidado com clonagens para não destruir os dados do HD original. Apesar de ser um procedimento seguro, por falta de atenção pode-se perder os dados, aconselho um backup do que realmente for importante.
Este modo de cópia evita ter que refazer a instalação do sistema todo de novo, além de configurações. O tempo varia de acordo com a quantia de dados a ser transrida, obvio né? xD
Testando, levei cerca de meia hora para copiar os dados dos HDs e mais alguns minutos para instalar o grub [considere que ficar reiniciando por live cd leva mais tempo =/]
Considero este apenas um procedimento alternativo ao uso do comando dd
dd if=[origem] of=[destino]
pois o comando dd realiza cópia bit a bit, copiando inclusive bits que vazios, clonando até a parte não usada do HD, o que leva muuuito mais tempo que um simples cp.

sexta-feira, 18 de julho de 2008

Editando imagem com Shell

//Um post de verdade agora =]

Pode soar estranho, mas o Shell possui ferramentas de edição de imagens também.
Não é como usar o GIMP, afinal a edição é na linha de comando. Mas ajuda em muito para edições simples e repetitivas.
Imagine-se tendo que inverter as cores, ou alterar a resolução de uma imagem.
Simples: abre o GIMP e altera. Tudo certo.
Mas e se essa quantia for de 500 imagens, vai realmente abrir as 500 com o GIMP e editar uma a uma oO, quanto tempo hein? e dale paciência =]

Pois bem, com o pacote imagemagick alguns truque podem ser feitos poupando um bom tempo que seria desperdiçado em sua vida x]

Resolvendo as dependências: Basta instalar o pacote imagemagick
Quem usa Debian / Ubuntu e afins:
aptitude install imagemagick

Este pacote nos fornece diversas ferramentas, não entrarei em detalhes pois é só uma apresentação, em todo o caso use o manual =)
Dentre as ferramentas básicas temos a indentify
identify

que nos fornece dados da imagem, como diretório, qualidade (jpg, png, gif..), resolução.
A mais usada creio que seja a ferramenta convert. É nela que fica o trabalho de "brincar" com a imagem sem nem olhar para a imagem em questão. Como seus recursos são muitos, para aplicações específicas leia o manual: man convert.
Coisas simples como alterar a qualidade, passando de jpg para gif, por exemplo, bastaria:
convert [imagem origem].jpg [imagem destino].gif

Mas o interessante dessa brincadeira toda é combinar essas ferramentas ao shell.
Munido das estruturas do ShellScript podemos fazer serviços redundantes, como foi meu caso para diminuir a resolução de mais de 200 fotos para poupar espaço.
Um exemplo: supondo que tenha um diretório com somente imagens em alta resolução e queira diminuir todas p uma resolução mais fraca como 640 x 480 (VGA, ideal pra web), basta usar algo como:
#!/bin/bash
mkdir ../reduzidas/
qt=$(ls -l)
for i in $(seq 2 $qt)
do
imagem=
$(ls -l | sed -n ${i}p | cut -d' ' -f8-)
convert - size 640x480 "$imagem" "../reduzidas/$imagem"
done

Onde neste caso seria criado o diretório ../reduzidas com uma cópia em baixa resolução de todas as imagens.
#:EOF
:

quinta-feira, 17 de julho de 2008

1° post

Alpha do blog =]

testando layout, que por sinal será coisa da amy de fazer pq não tenho técnica (bom gosto) para essas coisas..

Em breve teremos um release =P

Até o/