Witaj na Forum Linuxiarzy
Zanim zalogujesz się, by pisać na naszym forum, zapoznaj się z kilkoma zasadami savoir-vivre'u w dziale Administracja.
Wiadomości z problemami zamieszczone w wątku "Przywitaj się" oraz wszelkie reklamy na naszym forum będą usuwane.

Pamięci USB (zapis)

Zaczęty przez Bercik, Luty 10, 2026, 05:15:43 PM

Poprzedni wątek - Następny wątek

Bercik

Witajcie kochani, tak mnie naszło właśnie, bo kopiowałem sporo plików na pendrive, potem na dysk USB, no ogólnie na pamięć przenośną USB i naszło mnie takie pytanie:
Czemu do diabła, po zakończeniu paska postępu, dopóki nie zastosowałem "wysuń bezpiecznie" to plików tam nie ma? Pliki dość duże (po kilka GB), zapewne siedzą w buforze, mimo zakończenia kopiowania, kopiuje je w tle i nie pozwala wysunąć.

Nie rzadko mam potrzebę kopiuj wklej, pasek mija i odłączyć i do następnego kompa podpiąć, a tu pusto.
Przecież to bez sensu jest. Na macOS taka funkcja istnieje w sumie do wszystkiego ale tam inaczej działa, bo wybierając wysuń mija dosłownie chwila (kilka sekund) i mogę odpinać - tu nie, potrafi mielić tym pendrivem długo.

Jak się tego pozbyć, bo przecież to idiotyczne :) Niech zapisuje bezpośrednio na pamięć a nie w bufor i dopiero.

Da się to jakoś sensownie zrobić?
Jak coś działa, to znaczy że tego nie dotykałem...

linux4ever

@Bercik Pewnie to opcja wbudowana w kernelu.

Zobacz to:

CytatWyłączenie buforowania (write caching) USB w systemie Linux pozwala na bezpieczniejsze odłączanie pamięci przenośnych, ponieważ dane są zapisywane natychmiastowo, a nie w pamięci RAM. Należy jednak pamiętać, że drastycznie obniży to prędkość zapisu na urządzeniach USB
.
Oto główne sposoby na wyłączenie buforowania zapisu dla pamięci USB:
1. Użycie polecenia hdparm (tymczasowe)
Możesz wyłączyć buforowanie dla konkretnego urządzenia za pomocą narzędzia hdparm.

    Zidentyfikuj urządzenie: Użyj polecenia lsblk lub fdisk -l, aby znaleźć nazwę urządzenia (np. /dev/sdb).
    Wyłącz buforowanie:
    bash

sudo hdparm -W 0 /dev/sdX

Gdzie /dev/sdX to twoje urządzenie USB.

2. Reguła udev (trwałe dla wszystkich USB)
Aby automatycznie wyłączać buforowanie przy podłączaniu jakiegokolwiek dysku USB, utwórz regułę udev.

    Utwórz plik reguły:
    bash

sudo nano /etc/udev/rules.d/99-usb-sync.rules

Wklej poniższą treść (wymaga zainstalowanego hdparm):
udev

ACTION=="add|change", KERNEL=="sd[a-z]", ENV{ID_USB_TYPE}=="disk", RUN+="/usr/bin/hdparm -W 0 /dev/%k"

Reguła ta sprawia, że po podłączeniu urządzenia typu "disk" przez USB, buforowanie jest automatycznie wyłączane.
Przeładuj reguły:
bash

sudo udevadm control --reload-rules

 

3. Montowanie z opcją sync (trwałe dla konkretnego nośnika)
Możesz zamontować pamięć USB z opcją sync, która wymusza synchroniczny zapis (brak buforowania).

    Przykład montowania:
    bash

sudo mount -o sync /dev/sdX1 /mnt/usb

Alternatywa flush: Użycie opcji flush zamiast sync w pliku /etc/fstab wymusza zapisanie danych, gdy urządzenie przechodzi w stan bezczynności.

4. Wyłączenie uśpienia USB (jeśli problemem jest zrywanie połączenia)
Jeśli "buforowanie" powoduje błędy przy wybudzaniu dysku, można wyłączyć usypianie USB:
bash

sudo modprobe usbcore autosuspend=-1

Aby było to trwałe, dodaj usbcore.autosuspend=-1 do parametrów startowych jądra w /etc/default/grub.
Podsumowanie
Dla większości użytkowników najbezpieczniejszym sposobem na uniknięcie utraty danych jest używanie polecenia sync w terminalu przed fizycznym odłączeniem dysku, co wymusza zapisanie buforowanych danych.

Debian MATE  &Endevour OS Cinnamon

Bercik

Dzięki @linux4ever, też poszperałem trochę i wynik mam taki:
ACTION=="add", SUBSYSTEMS=="usb", ENV{ID_FS_USAGE}=="filesystem", ENV{UDISKS_MOUNT_OPTIONS}="sync"
Wtedy nie tykam dysków, tylko pamięci USB...
W teorii powinno działać i na malutkich plikach działa, zobaczymy jak na większych :)
Jak coś działa, to znaczy że tego nie dotykałem...

Bercik

Niestety, nie działa to.
Niby sync jest, a jak kopiuję np iso, to pasek szybko znika (wpada w bufor) i mimo klikniecia wysuń, zapisuje sobie dalej (jak wyjmiesz pendrive, to plik jest niekompletny)...
Jak coś działa, to znaczy że tego nie dotykałem...

CDeB


Bercik

Jak coś działa, to znaczy że tego nie dotykałem...

Zobacz najnowsze wiadomości na forum