Como configurar para gravar dados para pendrive instantaneamente?

12

Se eu editar os arquivos no meu pendrive e depois removê-lo fisicamente, os dados não serão gravados. Eu tenho que clicar em "ejetar" e o led começa a piscar, e os dados começam a ser gravados.

Como posso alterar isso, para que os dados sejam gravados instantaneamente quando alterados?

atualização: Ubuntu 11.10

No Ubuntu 11.10, escrevi o arquivo de regras (da resposta @enzotib ) e funciona, mas envia a seguinte mensagem quando tento ejetar / desmontar:

insira a descrição da imagem aqui

(devo começar outra pergunta para o Ubuntu 11.10?)

Tom Brito
fonte
2
O desempenho será menor, pois o cache de gravação não será mais usado. Desmonte corretamente partições usando as opções de ejeção / desmontagem ou você perderá dados.
Lekensteyn 14/09/11
4
Você pode usar a syncopção ao montar a partição. Isso não é recomendado, pois aumenta drasticamente o número de gravações no pendrive.
organize
2
@arrange como o ubuntu faz o automount, existe uma maneira de colocar isso synccomo padrão, então eu não preciso fazer isso em um terminal todas as vezes? E eu sei que isso aumentará drasticamente o número de gravações, ainda é o que eu quero. Obrigado!
Tom Brito
1
Consulte askubuntu.com/questions/30762/…
organize
@arrange viu, mas ainda não é uma resposta completa ...
Tom Brito

Respostas:

8

Após a pergunta (e resposta) que @arrange mostra em seu comentário, vamos criar um novo arquivo

/etc/udev/rules.d/11-media-by-label-auto-mount.rules

e escreva nele o seguinte conteúdo (consulte udev :: Mount em / media; use o rótulo da partição, se houver )

KERNEL!="sd[a-z][0-9]", GOTO="media_by_label_auto_mount_end"

# Import FS infos
IMPORT{program}="/sbin/blkid -o udev -p %N"

# Get a label if present, otherwise specify one
ENV{ID_FS_LABEL}!="", ENV{dir_name}="%E{ID_FS_LABEL}"
ENV{ID_FS_LABEL}=="", ENV{dir_name}="usbhd-%k"

# Global mount options
ACTION=="add", ENV{mount_options}="relatime,sync"
# Filesystem-specific mount options
ACTION=="add", ENV{ID_FS_TYPE}=="vfat|ntfs", ENV{mount_options}="$env{mount_options},utf8,uid=1000,gid=1000,umask=002"

# Mount the device
ACTION=="add", RUN+="/bin/mkdir -p /media/%E{dir_name}", RUN+="/bin/mount -o $env{mount_options} /dev/%k /media/%E{dir_name}"

# Clean up after removal
ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/umount -l /media/%E{dir_name}", RUN+="/bin/rmdir /media/%E{dir_name}"

# Exit
LABEL="media_by_label_auto_mount_end"

Fiz algumas pequenas modificações em relação ao relatado no site

  • adicionou a syncopção paraENV{mount_options}
  • modificou a gid=100opção para uid=1000,gid=1000, onde o número é relativo ao seu ID usado e ID do grupo, conforme retornado por id -ueid -g

O segundo faz de você o proprietário de todos os arquivos na partição montada, para que nenhum problema de permissão possa surgir. Obviamente, esse não é o caso se mais de um usuário acessar os arquivos, mas isso pode ser tratado de outras maneiras.

Para sistemas de arquivos que não são do Windows, o proprietário e o grupo são metadados no sistema de arquivos e não podem ser alterados por uma opção de montagem.

A nova regra fica imediatamente ativa (o udev usa o inotify para detectar arquivos de regras novos e modificados).

A unidade montada não é aberta automaticamente em uma janela do gerenciador de arquivos, como você pode ver, e isso é difícil de alcançar, uma vez que o processo de montagem é de propriedade da raiz e não tem acesso à sua sessão gráfica de logon. Mas a unidade está na área de trabalho, então um simples clique duplo a abrirá.

Infelizmente, não consigo fazer com que a área de trabalho seja desmontada com o botão direito do mouse para funcionar, mas esse não é um grande problema: com a syncopção em vigor, você pode simplesmente desconectar o dispositivo, e a regra do udev se encarrega de remover a entrada /proc/mountse remover a montagem. ponto.

enzotib
fonte
Não consegui escrever esse tutorial, obrigado por fazê-lo;) E também não consegui fazer o usuário desmontar o trabalho, parece que a usersopção é válida apenas no fstabarquivo ... Isso não é um problema aqui ("sincronização"), mas para um tutorial geral seria.
organize
Obrigado por responder. Infelizmente, depois de fazer o descrito, não consegui criar, editar ou excluir nenhum arquivo no pendrive. Além disso, não é mais abrir a janela automaticamente quando eu a conecto. Qualquer ideia?
Tom Brito
A propósito, considerei que a extensão que você digitou ".rule" está incorreta e usei o mesmo dos outros arquivos dessa pasta: ".rules".
Tom Brito
A documentação não fala sobre extensões específicas a serem usadas. A propósito, copiei errado do site, por isso é melhor usar .rulespara estar seguro. Para o resto, veja a resposta editada.
enzotib 22/09/11
Ei, eu estou no Ubuntu 11.10 agora, e há um comportamento diferente. Por favor, veja minha atualização.
Tom Brito