При переносе умеренно больших файлов (~ 500-800 МБ) на / с USB-диска в nautilus или с использованием (s) cp (с индикатором выполнения из http://chris-lamb.co.uk/ 2008/01/24 / can-you-get-cp-to-give-a-progress-bar-like-wget / ) или при использовании rsync ... достигнутый прогресс далеко не точный. Очевидно, размер кэша файловой системы по умолчанию в ubuntu 11.10 64bit довольно немного больше, чем для 32 бит. Как следствие, представляется, что nautilus или rsync или все, что делает копирование, что файл был полностью скопирован, когда на самом деле имеется большая часть файла, оставленного для записи, но вся эта часть была кэширована, поэтому появляется программа, в которой был записан файл (т. е. потому что он имеет, с точки зрения системных вызовов). Однако фактический выходной файл занимает 10-20 секунд, чтобы фактически заполнить. В любом случае, нужно настроить любую из этих программ, чтобы сообщить о прогрессе с точки зрения «сколько данных было записано в фактический выходной файл», а не «сколько данных было записано в операционную систему».
Мое особое раздражение заключается в том, что каждая из этих программ сообщает, что файл был написан, но затем просто зависает какое-то время, ничего не сообщая. Я подозреваю, что это связано с тем, что системный вызов «write» завершился, но системный вызов «закрыть файл» ждет, пока кеш не будет сброшен.
Я также использую ubuntu 11.10 64-bit. Вы можете использовать команду lsof
для опроса и посмотреть, был ли кеш написан. Эта команда перечисляет, какие процессы / команды хранят файлы. Я не уверен, что он будет работать для кеша usb stick.
rsync
файлом ~ 2gb 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" показывает прогресс.
lsof при передаче:
$ 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, когда это делается:
$ lsof +f -- /media/19D1-8868/
Однако я не могу воспроизводите то, что вы говорите с помощью rsync
. Я мог почти мгновенно (2-3 секунды) удалить USB с помощью опции «Безопасное удаление».
Кроме того, когда я попытался перевести с nautilus
, передача застряла до «2 секунд влево», пока он передал весь файл, возможно, включая кеш, потому что светодиодный индикатор usb переставал мигать, и я мог снова почти мгновенно безопасно удалить палку.
mount
в вашем случае?