При передаче файлов большого размера (~ 500-800 МБ) на / с USB-диска в nautilus или при использовании (-ых) cp (с индикатором выполнения из http://chris-lamb.co.uk/ 2008/01/24 / can-you-get-cp-to-дать-a-a-progress-bar-like-wget / ), или при использовании rsync ... сообщаемый прогресс далек от точного. Очевидно, что размер кэша файловой системы по умолчанию в 64-битной версии Ubuntu 11.10 немного больше, чем для 32-битной. Как следствие, кажется, что nautilus или rsync или что-то еще делает копирование, что файл был полностью скопирован, когда на самом деле остается большая часть файла, оставленная для записи, но вся эта часть была кэширована, поэтому программе кажется, что файл был записан (т. е. потому что он есть с точки зрения системных вызовов). Однако фактический выходной файл занимает еще 10-20 секунд, чтобы заполниться. В любом случае можно ли настроить какие-либо из этих частей программного обеспечения, чтобы сообщать о прогрессе в терминах «сколько данных было записано в фактический выходной файл» вместо «сколько данных было записано в операционную систему».
Меня особенно раздражает то, что каждая из этих программ сообщает, что файл был записан, но затем просто зависает, ничего не сообщая. Я подозреваю, что это потому, что системный вызов «write» завершен, но системный вызов «close file» ожидает сброса кэша.
Я также использую Ubuntu 11.10 64-bit. Вы можете использовать команду lsof
для опроса и просмотра, если кэш был записан. Эта команда показывает, какие процессы / команды сохраняют файлы открытыми. Я не уверен, будет ли это работать для кеша USB-флешки.
rsync
передачу файла ~ 2 ГБ mount
показывает команду:
/dev/sdd1 on /media/19D1-8868 type vfat (rw,nosuid,nodev,uid=1001,gid=1001,shortname=mixed,dmask=0077,utf8=1,showexec,flush,uhelper=udisks)
Используемая команда:
rsync -Pr ./testfile /media/19D1-8868/test/
"- P" показывает прогресс. [+1121]
После передачи:
$ lsof +f -- /media/19D1-8868/
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rsync 23132 testme cwd DIR 8,49 4096 33 /media/19D1-8868/test
rsync 23133 testme cwd DIR 8,49 4096 33 /media/19D1-8868/test
rsync 23133 testme 1u REG 8,49 666271744 350 /media/19D1-8868/test/.testfile.2Ejgei
После завершения:
$ lsof +f -- /media/19D1-8868/
Однако я не могу воспроизвести то, что вы говорите с rsync
. Я мог почти мгновенно (через 2-3 секунды) удалить usb с помощью опции «Безопасное удаление».
Кроме того, когда я попытался передать с помощью nautilus
, передача застряла на «2 секунды осталось», пока он не передал весь файл, возможно, включая кэш, потому что светодиодный индикатор USB перестал мигать, и я мог почти мгновенно снова безопасно удалить палка.
mount
в вашем случае?