¿Cómo configurar para grabar datos para pendrive instantáneamente?

12

Si edito los archivos en mi pendrive y luego lo elimino físicamente, los datos no se grabarán. Tengo que hacer clic en "expulsar", por lo que el LED comienza a parpadear y los datos comienzan a grabarse.

¿Cómo puedo cambiar esto para que los datos se graben instantáneamente cuando se cambian?

actualización: Ubuntu 11.10

En Ubuntu 11.10 escribí el archivo de reglas (de @enzotib answer), y funciona, pero da el siguiente mensaje cuando intento expulsar / desmontar:

ingrese la descripción de la imagen aquí

(¿Debo comenzar otra pregunta para Ubuntu 11.10?)

Tom Brito
fuente
2
El rendimiento será menor ya que la caché de escritura ya no se usa. Desmonta correctamente las particiones usando las opciones de expulsión / desmontaje o perderás datos.
Lekensteyn
44
Puede usar la syncopción al montar la partición. Sin embargo, esto no se recomienda, ya que aumenta drásticamente el número de escrituras en la memoria USB.
organizar el
2
@arrange como ubuntu hace el montaje automático, ¿hay alguna manera de poner esto synccomo predeterminado, por lo que no necesito hacer esto en un terminal cada vez? Y soy consciente de que aumentará drásticamente el número de escrituras, aún así es lo que quiero. ¡Gracias!
Tom Brito
@arrange lo vio, pero aún no es una respuesta completa ...
Tom Brito

Respuestas:

8

Siguiendo la pregunta (y respuesta) que @arrange muestra en su comentario, creemos un nuevo archivo

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

y escriba en él el siguiente contenido (vea udev :: Mount under / media; use la etiqueta de partición si está presente )

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"

He hecho algunas pequeñas modificaciones con respecto a lo informado en el sitio web

  • agregó la syncopción aENV{mount_options}
  • modificó la gid=100opción a uid=1000,gid=1000, donde el número es relativo a su id de uso e id de grupo, según lo devuelto por id -uyid -g

El segundo lo convierte en el propietario de todos los archivos en la partición montada, por lo que no puede surgir ningún problema de permiso. Obviamente, este no es el caso si más de un solo usuario debe acceder a los archivos, pero esto se puede manejar de otras maneras.

Para los sistemas de archivos que no son de Windows, el propietario y el grupo son metadatos en el sistema de archivos y no se pueden cambiar mediante una opción de montaje.

La nueva regla se activa inmediatamente ( udev usa inotify para detectar archivos de reglas nuevos y modificados).

La unidad montada no se abre automáticamente en una ventana del administrador de archivos, como puede ver, y esto es difícil de lograr, dado que el proceso de montaje es propiedad de root y no tiene acceso a su sesión gráfica de inicio de sesión. Pero el disco está en su escritorio, por lo que un simple doble clic lo abrirá.

Desafortunadamente, no puedo hacer que el escritorio haga clic derecho para desmontar para trabajar, pero esto no es un gran problema: tener la syncopción en su lugar, simplemente puede desconectar el dispositivo, y la regla de udev se encarga de eliminar la entrada /proc/mountsy quitar el montaje. punto.

enzotib
fuente
No pude escribir este tutorial, gracias por hacerlo;) Y tampoco pude hacer que el usuario desmontara para trabajar, parece que la usersopción solo es válida en el fstabarchivo ... Esto no es un problema aquí ("sincronización"), pero sería un procedimiento general.
organizar el
Gracias por responder. Desafortunadamente, después de hacer lo descrito, no pude crear, editar o eliminar ningún archivo en el pendrive. Además, ya no se abre automáticamente la ventana cuando la conecto. ¿Alguna idea?
Tom Brito
Por cierto, consideré que la extensión que escribiste ".rule" es incorrecta, y utilicé el mismo de los otros archivos en esa carpeta: ".rules".
Tom Brito
La documentación no habla sobre extensiones específicas para usar. Por cierto, copié mal del sitio, por lo que es mejor usarlo .rulespara estar seguro. Para el resto, vea la respuesta editada.
enzotib
Hola, estoy en Ubuntu 11.10 ahora, y hay un comportamiento diferente. Por favor, mira mi actualización.
Tom Brito