Монтирование usb -флешки

Вопросы, на которые не получается найти ответ в Arch wiki или на форуме
indeviral
Аватара пользователя
Сообщения: 314
Зарегистрирован: 15.08.2022

#

lnx:не приводит к их порче
Порча файлов происходит из-за системы кэширования. Так как индикатор записи фм по сути показывает прогресс записи в кэш, а потом эти файлы за нное время пишутся на накопитель. Используйте sync при монтировании флэшки это решит проблему, но в некоторых случаях замедлит процесс копирования.

Кстати есть опция recover при монтировании... но от недозаписанных файлов она не спасёт.

имхо, ntfs удобная система сам её много где использую как кроссплатформенную, но она изначально не спроектирована для работы с linux.

Ошибки в тексте-неповторимый стиль автора©

BendalfRU
Сообщения: 254
Зарегистрирован: 07.07.2025

#

ТС в личку сказал что вопрос решен.
lnx
Сообщения: 368
Зарегистрирован: 24.08.2022

#

Вот о том и я задавал вопрос, от общих слов к конкретике - КАК ИМЕННО это сделать? конкретно для нтфс или запретить экширование, черт с ней, производительностью, где-как что включить-прописать-настроить? Или даже вопрос шире - конкретно для всех видов подключаемых по usb устройств хранения\записи отключить напрочь кэширование.
Толку от него ноль. Если после "индикации" конца записи нажать "отмонтирровать" - крутится "ждите записи" = запись.

Версия, подсказываемая гуглом типа nocache cp -a /source /dest неприемлема, ибо требует внимания и понимая пользователей. Жонские компьютеры не из этой категории. Да и мой не использует cp, но rsync или unison. fstab тоже не лучший вариант (поставил на пробу /dev/disk/by-uuid/7137AB8903F3C8D7 /run/media/я/FILM ntfs3 sync,sers,noauto,x-gvfs-show,x-gvfs-name=FILM 0 0) - но ведь для каждой новой флэшки не пропишешь (по большому счету) поименно. Где-то как-то типа удава?
lnx
Сообщения: 368
Зарегистрирован: 24.08.2022

#

что-то в духе из неподведенной итогами дискуссии https://forum.ubuntu.ru/index.php?PHPSE ... msg1563449 + https://www.linux.org.ru/forum/desktop/12997772

АрчВики объясняет, почему в udev нет вопроса монтирования https://wiki.archlinux.org/title/Udev_( ... %B8%D0%B9)

Т.е. надо какой-скрипт и его прописывать в udev
AndAnd
Сообщения: 4
Зарегистрирован: 05.11.2022

#

arch-udev-usb-sync
Точная настройка кэша записи и установление ограничений буфера при подключении USB-накопителя.
indeviral
Аватара пользователя
Сообщения: 314
Зарегистрирован: 15.08.2022

#

lnx:Где-то как-то типа удава?
Через udev однозначно.
Мне кажется оптимально использовать udisks2 у него есть демон которым можно управлять на лету, пишется правило udev что-то такое:
ACTION=="add", SUBSYSTEM=="block", ENV{ID_BUS}=="usb", RUN+="/usr/bin/udisksctl mount --no-user-interaction --options sync --block-device /dev/%k"
Можно так же использовать любой другой управлятор монтированием, просто udisks2 самый универсальный.

Ошибки в тексте-неповторимый стиль автора©

vasek
Сообщения: 610
Зарегистрирован: 31.08.2022

#

В части файла fstab … система спокойно работает и без него … и нет никаких проблем.
Systemd - более подходящее решение для монтирования, поскольку оно позволяет поэтапно устанавливать зависимости при монтировании.

DOC - в современных дистрибутивах Linux systemd управляет монтированием файловых систем через юниты монтирования.

При отсуствии этого файла, он при загрузке создается автоматически, но пустой:
cat /etc/fstab
# Static information about the filesystems.
# See fstab(5) for details.
# <file system> <dir> <type> <options> <dump> <pass>

Ошибки не исчезают с опытом - они просто умнеют

lnx
Сообщения: 368
Зарегистрирован: 24.08.2022

#

AndAnd: arch-udev-usb-sync
Точная настройка кэша записи и установление ограничений буфера при подключении USB-накопителя.
Спасибо, но, согласитесь, можно было сразу так - https://aur.archlinux.org/packages/arch-udev-usb-sync, минуя пустое действие по дополнительнму поиску.
Установил, перечитал правила. Сам тоже посмотрел - выглядит обнадеживающе разумно (вот только точно ли корректно избежит отключения sync для старых машин, с системным диском sd*? - это условие ACTION), действия таковы -
KERNEL!="sd[a-z]|sd[a-z][0-9]", GOTO="usb_limit_write_cache_end"
ENV{ID_USB_TYPE}!="disk", GOTO="usb_limit_write_cache_end"
ACTION!="add|change", GOTO="usb_limit_write_cache_end"
PROGRAM+="/usr/bin/uname -r"
RESULT=="4*|5*|6.1.*", ENV{ID_FS_USAGE}=="filesystem", ENV{UDISKS_MOUNT_OPTIONS_DEFAULTS}+="sync", ENV{UDISKS_MOUNT_OPTIONS_ALLOW}+="sync", GOTO="usb_limit_write_cache_end"
RESULT!="4*|5*|6.1.*", ATTRS{bDeviceClass}!="09", ATTRS{speed}=="10000", RUN+="/usr/bin/udev-usb-sync %k %s{speed}", GOTO="usb_limit_write_cache_end"
RESULT!="4*|5*|6.1.*", ATTRS{bDeviceClass}!="09", ATTRS{speed}=="5000",  RUN+="/usr/bin/udev-usb-sync %k %s{speed}", GOTO="usb_limit_write_cache_end"
RESULT!="4*|5*|6.1.*", ATTRS{bDeviceClass}!="09", ATTRS{speed}=="480",   RUN+="/usr/bin/udev-usb-sync %k %s{speed}", GOTO="usb_limit_write_cache_end"
RESULT!="4*|5*|6.1.*", ATTRS{bDeviceClass}!="09", ATTRS{speed}=="12",    RUN+="/usr/bin/udev-usb-sync %k %s{speed}", GOTO="usb_limit_write_cache_end"
LABEL="usb_limit_write_cache_end"
Распространю "среди своих", посмотрим на результат.
lnx
Сообщения: 368
Зарегистрирован: 24.08.2022

#

Несколько дней пробую. Сознательно выдергиваю, многократно, без нажатия кнопки Отключить. Покамест без потерь. Пожалуй, это рабочее решение.
lnx
Сообщения: 368
Зарегистрирован: 24.08.2022

#

Нет, не спасает. Сделал флэшку юсб. Залил на нее файлов на 30гб. Долго не трогал, очень. Копирование давно закончилось, вынул не нажимая кнопки Извлечь. И в результате файловая система повреждена.
ntfsfix /dev/sda1
Mounting volume... $MFTMirr does not match $MFT (record 3).
FAILED
Attempting to correct errors... 
Processing $MFT and $MFTMirr...
Reading $MFT... OK
Reading $MFTMirr... OK
Comparing $MFTMirr to $MFT... FAILED
Correcting differences in $MFTMirr record 3...OK
Processing of $MFT and $MFTMirr completed successfully.
Setting required flags on partition... OK
Going to empty the journal ($LogFile)... OK
Checking the alternate boot sector... OK
NTFS volume version is 3.1.
NTFS partition /dev/sda1 was processed successfully.
# ntfsfix -b /dev/sda1
Mounting volume... OK
Processing of $MFT and $MFTMirr completed successfully.
Checking the alternate boot sector... OK
NTFS volume version is 3.1.
Going to un-mark the bad clusters ($BadClus)... No bad clusters...OK
NTFS partition /dev/sda1 was processed successfully.
# mount /dev/sda1 /mnt/
# ll /mnt/
итого 20

При этом в консоли оно монтируется. В файловом манагере можно дойти до места и все увидеть (сменив в консоли владельца). Т.о. вопрос становится еще шире - в случае ntfs надо ще и права назначать 666 или 777.
Ответить