LINUX.ORG.RU
Форум — Talks  

Спустя 30 лет, в KDE починили копирование файлов

 , ,


0

2

Привет, чят!

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

Тыц: https://blogs.kde.org/2026/10/27/fixing-kio-copy-to-usb-stick-and-network-filesystems/

Ъ: для этого потребовалось переписать кучу кода, используя странные системные вызовы типа sync_file_range (Linux only, BSD в пролёте) и запилить вообще достаточно сложную эвристику работы с файлами разного размера. И всё для того, ЛОРовец, чтобы ты мог скинуть фоточки на флешку и не просрать данные – фича, которая в Windows была практически из коробки.

Ждём аналогичных изменений в GNOME и прочих XFCE, там этого пока нет.

Не починили, а сломали - так как нарисовали костыль, который 100 пудово где-нить как-нить будет глючить. Если cp в linux работает вот так и нет нормального стандартного cp_sync, значит оно вот такое и заводить задачи про «не работает» надо не в кде, а яфину.

vtVitus ★★★★★
()

Хорошо, а в других ДЕ с этим как? Всегда было сломано и остается сломанным поныне, или всегда работало, а кедоделы - лохи?

thesis ★★★★★
()
Ответ на: комментарий от thesis

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

i7
()
Ответ на: комментарий от vtVitus

Есть, fsync. Но велосипедостроители хотят не этого, они хотят прогресс-бар который показывает скорость копирования в реальном времени. Им пофиг на асинхронный доступ к файлу от других приложений, главное видеть, когда запишутся на диск их байты. Пляски с бубном только вокруг этого. Ну и еще из-за того, что слишком частый вызов fsync будет тормозить систему.

Khnazile ★★★★★
()
Ответ на: комментарий от Khnazile

Ну и еще из-за того, что слишком частый вызов fsync будет тормозить систему.

Как вызов fsync() на файл на флешке будет тормозить систему? Это какая-то очень дерьмовая система, если её операции с флешкой заставляют тормозить. Надо выкинуть её уже на помойку и взять нормальную.

yorshka
() автор топика
Ответ на: комментарий от yorshka

На флешке тормозить не будет, на флешке будет тромозить сама флешка. А fsync будет узким местом на бытрых дисках. Именно по этому в статье написано, что они делают fsync только для файлов больше 16 мб, а для более мелких файлов fsync деграется когда по расчетам kio уже должна быть скопирована вся папка, содержащая эти файлы. Это вся «эвристика».

Khnazile ★★★★★
()
Ответ на: комментарий от yorshka

Надо выкинуть её уже на помойку и взять нормальную.

Дык выкинь и возьми. Какие-то сложности?

cobold ★★★★★
()

В винде тоже самое, вроде все скопировал, но контекстное меню «извлечь» еще некоторое время не срабатывает.

dmitry237 ★★★★★
()

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

legolegs ★★★★★
()
Последнее исправление: legolegs (всего исправлений: 1)

завершался успехом задолго до того, как файл был по-настоящему записан на диск

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

amd_amd ★★★★★
()
Ответ на: комментарий от buddhist

Возможно, у него быстрая флешка и мало памяти

legolegs ★★★★★
()
Ответ на: комментарий от MoldAndLimeHoney

Какой-то время ГОНОМовский HIG говорил что файлы в файловом диалоге ни в коем случае нельзя сортировать по суффиксу/mime — по дате можно, а по типу — это слишком сложно для домохозяек. И то же самое было с переименованием/удалением. Ошибся в имени «новой папки» — будь добр открыть ФМ и удалять из него, из фалового диалога нельзя, он не для этого. Благо, сейчас этой шизофрении больше нет.

thunar ★★★★★
()
Последнее исправление: thunar (всего исправлений: 5)
Ответ на: комментарий от CrX

Ничем не хуже, чем ждать 15 минут завершения cp и при этом не иметь возможности полноценно работать с этим файлом.

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

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

altwazar ★★★★★
()
Ответ на: комментарий от buddhist

«Безопасное извлечение устройства» для тебя шутка?

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

altwazar ★★★★★
()

которая в Windows была практически из коробки

неправда, NT 4.0 на дискеты файл сбрасывала моментально, а потом лампочка дисковода долго горела

ну и сейчас безопасное извлечение есть, но понятно, что смысл в том, что оно хотя бы завершается за разумное время, а не только начинает запись

sergej ★★★★★
()
Последнее исправление: sergej (всего исправлений: 1)
Ответ на: комментарий от altwazar

Технически да, с точки зрения пользователя гораздо хуже.

Я пользователь. С моей точки зрения лучше.

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

Он и так уверен после того, как завершено отмонтирование, либо sync.

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

Минуты, не десятки. Но в любом случае это по прежнему не проблема.

CrX ★★★★★
()
Ответ на: комментарий от CrX

Я пользователь. С моей точки зрения лучше.

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

Он и так уверен после того, как завершено отмонтирование, либо sync.

Приходит человек и просит скинуть ему запись видео с камеры у пользователя линукса, он переносить его на флешку, отмонтирует её, проходит 10 минут, 20, ничего не происходит. И прикинуть примерно можно только наблюдая в цикле за состоянием dirty-кэша, если он ничего другим не засирается.

В винде он уверен, что файлы которые перенеслись на флешку реально уже перенеслись.

Минуты, не десятки. Но в любом случае это по прежнему не проблема.

Видел и больше полутора часа случаи.

altwazar ★★★★★
()
Последнее исправление: altwazar (всего исправлений: 1)
Ответ на: комментарий от altwazar

В винде он уверен, что файлы которые перенеслись на флешку реально уже перенеслись.

Когда я последний раз на винде копировал файлы на флешку, там было так же — до отмонтирования «безопасного извлечения» файлы легко могли быть недописаны, хотя индикатор копирования показывал завершение. Может в новых виндах это изменили.

Видел и больше полутора часа случаи.

Это, должно быть, какие-то очень медленные флешки, даже медленнее тех китайских, с которыми сталкивался я…

CrX ★★★★★
()
Ответ на: комментарий от CrX

Может в новых виндах это изменили.

Не знаю с какого момента это началось, но с 7-рки уже точно файлы не терялись без безопасного извлечения.

Это, должно быть, какие-то очень медленные флешки

Медленные флешки и много оперативки на компе. Но проблема не в них, а в самом процессе. Пользователь вообще не видит, сколько потребуется времени на эту операцию и со стороны выглядит так, будто бы «проводник» завис.

altwazar ★★★★★
()

12309 от таких фокусов не случится?

ratvier ★★
()
Вы не можете добавлять комментарии в эту тему: только для зарегистрированных, score>=50.