Day: December 7, 2007

Cuidado para não entrar no “cano”

Estava tentando copiar uma partição de 15GB via scp para outro computador, porém quando chegava em 7,5GB a copia dos arquivos parava. Depois de tentar copiar via ethernet, usb e outros, resolvi investigar o que estava acontecendo.

A cópia sempre para após copiar um determinado arquivo, então apaguei este arquivo e vi que a cópia passou a parar no arquivo anterior ao que eu tinha apagado. Então mandei copiar só o diretório onde estava o arquivo que eu havia apagado. Mais uma vez o problema aconteceu.

Então o problema estava isolado, agora seria só descobrir o culpado. Foi fácil, um simples “ls -l” no diretório revelou a raíz do problema:

prw-r–r– 1 alan alan 0 2006-08-19 21:53 uartin

Neste diretório estava o arquivo “pipe” uartin, criado com o comando mkfifo, que servia para comunicação entre dois programas. Quando o scp tentava copiar este arquivo arquivo ele ficava bloqueado esperando que outro programa escrevesse algo neste arquivo.

Após apagar este arquivo a cópia foi concluída corretamente.

Transferência de dados em alta velocidade

Há tempos eu queria um cabo bridge USB-USB para interligar dois computadores em alta velocidade, útil quando queremos fazer backup ou transferir arquivos muito grandes entre computadores.

Encontrei numa loja de informática aqui em Porto Alegre um Cabo Data Link USB 2.0 da marca Clone (chipset Prolific PL2501), mais informações: http://www.clone.com.br/db/detalhes_prod.asp?detalhe=05097
Não pensei duas vezes, comprei sem nem mesmo saber se era compatível com Linux.

Primeira coisa que fiz quando cheguei em casa foi tentar descobrir se era compatível, tudo indicava que eu não teria muito sucesso, pois a informação que encontrei dizia que não funcionava no Linux:
http://www.linuxdriverproject.org/twiki/bin/view/Main/DriversNeeded

Após mais algum tempo pesquisando descubro que este modelo é compatível com o PL2302 que tem suporte a Linux, então resolvi “adicionar suporte” a ele no kernel, editei o arquivo drivers/net/usb/plusb.c e acrescentei o vendor:product do modelo PL2501:

static const struct usb_device_id       products [] = {
{
USB_DEVICE(0x067b, 0x0000),     // PL-2301
.driver_info =  (unsigned long) &prolific_info,
}, {
USB_DEVICE(0x067b, 0x0001),     // PL-2302
.driver_info =  (unsigned long) &prolific_info,
}, {
USB_DEVICE(0x067b, 0x2501),     // PL-2501
.driver_info =  (unsigned long) &prolific_info,
},
{ },            // END
};
Após compilar e iniciar no novo kernel executo: ifconfig usb0 169.254.7.215, wow funcionou.

Configurei o IP no outro computador e executei scp, consegui copiar os arquivos numa velocidade de 25MB/s (25 * 1024 * 1024 bytes/segundo), pode parecer pouco mas é 25 vezes mais rápido que a rede ethernet daqui do laboratório.

Seria muito bom se os sistemas operacionais já viessem com suporte nativo a este cabo. Infelizmente isso não acontece, para usar um computador com Windows 9x ou XP você precisa instalar os drivers que a Clone disponibiliza num CD, se você usa Windows Vista, se fu***deu pois os drivers não funcionam.