.png)
У меня есть взломанный iPod Touch и пакет afc2add. Когда я подключаю его к своему ноутбуку с Ubuntu, он автоматически монтирует каталог Media моего iPod, а также папки общего доступа к файлам приложения. Когда я использую Nautilus для передачи файла в папку Media, пиковая скорость составляет около 5 МБ/с. Однако, когда я использую терминал для копирования файла в папку ~/.gvfs/Matt's iPod
[в Nautilus он отображается как "Matt's iPod"], я видел, как она поднималась только до 2 МБ/с.
Может ли кто-нибудь подсказать, почему cp-команда для файла работает более чем в два раза медленнее, чем использование графического интерфейса Nautilus?
Кстати, я могу сказать, насколько быстро идет копирование с терминала, у меня есть скрипт с pv [В двух словах, это: pv $1 > $2
], и он идет примерно 1,5 МБ/с. Поэтому я также попробовал cp, и установил цикл для du
файла каждую секунду, и он подскочил где-то на 2 МБ каждую секунду.
решение1
Nautilus проходил бы через меньшее количество уровней косвенности, что могло бы объяснить разницу.
Nautilus — это собственное приложение gvfs, поэтому оно напрямую взаимодействует с бэкэндами gvfs.
В отличие от этого, cp
общается с ядром черезПРЕДОХРАНИТЕЛЬФайловая система смонтирована в ~/.gvfs
, которая обрабатывается процессом gvfs-fuse-daemon
, который в свою очередь общается с бэкэндами gvfs. Несоответствия импеданса между API POSIX и gvfs могут быть причиной менее эффективных передач.
Аналогичного результата можно добиться в командной строке, используя gvfs-copy
команду из gvfs-bin
пакета, скопировав ее в соответствующий URL-адрес.