Как настроить запись данных для мгновенного запуска?

12

Если я отредактирую файлы на моем pendrive, а затем просто удалю его физически, данные не будут записаны. Я должен нажать «извлечь», и поэтому светодиод начинает мигать, и данные начинают записываться.

Как я могу это изменить, чтобы данные мгновенно записывались при изменении?

обновление: Ubuntu 11.10

В Ubuntu 11.10 я написал файл правил (из ответа @enzotib ) и работает, но выдает следующее сообщение при попытке извлечь / размонтировать:

введите описание изображения здесь

(Должен ли я начать еще один вопрос для Ubuntu 11.10?)

Том Брито
источник
2
Производительность будет меньше, поскольку кэш записи больше не используется. Правильно размонтируйте разделы, используя опции извлечения / размонтирования, иначе вы потеряете данные.
Лекенштейн
4
Вы можете использовать эту syncопцию при монтаже раздела. Это не рекомендуется, так как это значительно увеличивает количество операций записи в дисковод.
организовать
2
@arrange, как ubuntu делает автомонтирование, есть ли способ установить это syncкак значение по умолчанию, поэтому мне не нужно делать это каждый раз в терминале? И я знаю, что это резко увеличит количество записей, но это то, чего я хочу. Благодарность!
Том Брито
1
См. Askubuntu.com/questions/30762/…
организовать
@arrange видел это, но это все еще не полный ответ ...
Том Брито

Ответы:

8

После вопроса (и ответа), который @arrange показывает в своем комментарии, давайте создадим новый файл

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

и запишите в него следующее содержимое (см. udev :: Mount в / media; используйте метку раздела, если имеется )

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"

Я сделал несколько небольших изменений в отношении того, что сообщается на сайте

  • добавил syncопцию кENV{mount_options}
  • изменил gid=100параметр uid=1000,gid=1000, где число относительно вашего используемого идентификатора и идентификатора группы, как возвращено id -uиid -g

Второй делает вас владельцем всех файлов в смонтированном разделе, поэтому проблем с разрешениями не возникает. Очевидно, что это не тот случай, когда более чем один пользователь должен получить доступ к файлам, но это может быть обработано другими способами.

Для файловых систем, отличных от Windows, владелец и группа являются метаданными в файловой системе и не могут быть изменены с помощью опции монтирования.

Новое правило немедленно активируется ( udev использует inotify для обнаружения новых и измененных файлов правил).

Как вы можете видеть, смонтированный диск не открывается автоматически в окне файлового менеджера, и этого трудно достичь, учитывая, что процесс монтирования принадлежит пользователю root и не имеет доступа к графическому сеансу входа в систему. Но диск находится на вашем рабочем столе, поэтому простой двойной щелчок откроет его.

К сожалению, я не могу заставить рабочий стол щелкнуть правой кнопкой мыши по размонтированию для работы, но это не большая проблема: имея syncопцию на месте, вы можете просто отключить устройство, а правило udev позаботится об удалении записи /proc/mountsи удалении монтирования. точка.

enzotib
источник
Я не мог обойтись написанием этого практического руководства, спасибо за то, что сделал это;) И я также не мог заставить пользователя размонтировать работу, похоже, что usersопция действительна только в fstabфайле ... Это не так проблема здесь ("синхронизация"), но для общего практического руководства это было бы.
организовать
Спасибо за ответ. К сожалению, после выполнения описанного, я не мог создавать, редактировать или удалять любые файлы на Pendrive. Кроме того, больше не открывается окно автоматически, когда я его подключаю. Любая идея?
Том Брито
Кстати, я посчитал, что введенное вами расширение «.rule» неверно, и я использовал то же самое из других файлов в этой папке: «.rules».
Том Брито
В документации не говорится о конкретных расширениях для использования. Кстати, я неправильно скопировал с сайта, так что лучше использовать .rulesна всякий случай. В остальном смотрите отредактированный ответ.
энзотиб
Эй, я сейчас на Ubuntu 11.10, и там другое поведение. Пожалуйста, посмотрите мое обновление.
Том Брито