Sep 20 2007
Como evitar perder dados em pen’s USB no seu Linux
Escrevi este artigo baseado na minha experiência de alguns meses com o Ubuntu Linux 7.04 (Feisty Fawn).
Quando tenho transferido ficheiros para discos usb (memorias Flash, discos ATA, etc.), com alguma regularidade tenho tido a má experiência de perder ficheiros. É uma situação que tem sido um bocado incomoda para mim, e acredito mais ainda a todos os mais novatos que eu do mundo do Linux, que vieram agora depois de anos a sofrer desnecessariamente com o MS Windows, se depararem agora com um problema destes…
A situação se passa quando tentamos transferir ficheiros, e no meio do procedimento pode acontecer uma de varias eventualidades:
- a electricidade ir abaixo;
- a conexão usb (cabo, placas, periféricos, hubs, etc.) não ser a melhor, ou estar demasiado sobrecarregada;
- por descuido ou negligência alguém se esbarrar no cabo ou no disco (esbarrões, tropeções, pontapés, espirros (?), e afins…);
- o sistema por alguma razão ir abaixo ou bloquear (má configuração, problema de hardware, sobrecarga de tarefas, etc.);
- ao tentar ejectar o disco usb depois de centenas de milhar de ficheiros, o eject demorar muito mais tempo que o previsto, ao ponto de acharmos que o sistema bloqueou, e forçarmos um reset ao computador;
- num perfeitamente evitável ataque de stress (que são comuns em alguns muito lamentáveis ambientes laborais), começarmos a partir tudo que vemos pela frente, e lá se vão os discos usb pelo caminho…;
- etc…
E quando vemos por fim, todos os ficheiros que achávamos ter transferido, afinal desapareceram definitivamente, como se tivéssemos arrastado tudo para o lixo e o esvaziássemos…
O problema é que parece que, por questões de performance, quando gravamos ou movemos um ficheiro no Linux, só os dados são transferidos, mas a informação de directório de ficheiros permanece na cache até esses discos serem ejectados ou o computador ser desligado. E claro, pode parecer um procedimento um bocado estúpido termos de ejectar e encaixar a conexão do disco usb toda a vez que transferimos ficheiros, para além do risco de danificarmos o encaixe usb - afinal leis de Murphy existem…
E só agora, depois de perguntar a amigos mais experientes do Linux, que o Eject chama o comando unix ‘eject’, que por sua vez chama o comando ’sync’ antes de permitir a remoção do disco USB. E pelos vistos, o comando ’sync’ permite actualizar os discos com a informação que ainda está na cache, e já deveria estar no disco a muito tempo… (pois, se acontecesse algo, perderíamos tudo que tínhamos transferido…)
A solução temporária e útil que encontrei no Gnome (enquanto as comunidades de desenvolvimento do Gnome e do Linux não encontrarem ideias melhores), é de meter um ícone na barra de ferramentas (um ‘custom launcher’ no ‘panel’ do Gnome)
Fazemos então da seguinte forma:
- com o botão direito em cima do ‘panel’, escolhemos ‘Add to Panel…’ do menu de contexto;
- clicamos então no botão ‘Custom Application Launcher’;
- aparece uma janela chamada ‘Create Launcher’ - em ‘Command:’ metemos ‘gksudo sync’ - podemos meter o mesmo em ‘Name:’ ou algo parecido
- clicando em ‘No Icon’, podemos escolher um ícone à nossa escolha, para um mais rápido reconhecimento visual e clicamos em ‘Ok’
E agora toda a vez que transferirmos ficheiros para discos usb e não os quisermos perder, podemos toda a vez clicar neste botão, sem termos de ejectar permanentemente esses discos, ou entrarmos constantemente ’sudo sync’ na janela da consola. O único pequeno incómodo é de, como este botão utiliza o comando ‘gksudo’, a janela a pedir a password de root poder aparecer com alguma regularidade.
AUTOR: Paulo Silva (Nitrofurano)
Relacionados


(6 voto(s), média: 3.5 de 5) 










































Penso que existe uma opção no mount para que quando fizeres o mount da pen, ele faça o sync automáticamente.
rui,
o mount/umount faz sinc quando solicitados.
a dica aqui é para fazer sinc manualmente sem desmontar a pen.
Da Manpage do Mount
-o
Options are specified with a -o flag followed by a comma separated string of options. Some of these options are only useful when they appear in the /etc/fstab file. The following options apply to any file system that is being mounted (but not every file system actually honors them - e.g., the sync option today has effect only for ext2, ext3, fat, vfat and ufs):
em aditamento ao anterior
sync
All I/O to the file system should be done synchronously. In case of media with limited number of write cycles (e.g. some flash drives) “sync” may cause life-cycle shortening.
realmente a opção -o sync permite fazer isso, mas nos dias que correm é algo complicado.
por exemplo.
o meu mandriva tem o fstab assim:
/dev/sda5 / reiserfs defaults 1 1
/dev/hda2 /mnt/dados vfat umask=0,user,defaults 0 0
/dev/hda1 /mnt/windows ntfs umask=0,user,defaults 0 0
none /proc proc defaults 0 0
/dev/sda6 swap swap defaults 0 0
ou seja, nem tem a opção de mount para as pen’s porque funciona com regras do udev.
não sei como está no *buntu
Verifica que se tens este ficheiro /etc/usbmount/usbmount.conf :
Se sim exite um parametro nesse ficheiro que diz: MOUNTOPTIONS
Colocas lá a opção sync.
desculpa o atraso
não, não tenho esse ficheiro.