«Ошибка ввода / вывода» при доступе к каталогу

Я хочу перечислить и удалить содержимое каталога на съемном жестком диске. Но я испытал «Ошибка ввода / вывода»:

$ rm pic -R rm: cannot remove `pic/60.jpg': Input/output error rm: cannot remove `pic/006.jpg': Input/output error rm: cannot remove `pic/008.jpg': Input/output error rm: cannot remove `pic/011.jpg': Input/output error $ ls -la pic ls: cannot access pic/60.jpg: Input/output error -????????? ? ? ? ? ? 006.jpg -????????? ? ? ? ? ? 006.jpg -????????? ? ? ? ? ? 011.jpg 

Мне было интересно, в чем проблема?

Как я могу восстановить или удалить каталог pic и весь его контент?

Моя ОС – Ubuntu 12.04, а съемный жесткий диск имеет файловую систему ntfs. Другие каталоги, не содержащие или внутри pic На съемном жестком диске, работают нормально.


Добавлено:

Последняя часть вывода dmesg после того, как я попытался перечислить содержимое каталога:

 [19000.712070] usb 1-1: new high-speed USB device number 2 using ehci_hcd [19000.853167] usb-storage 1-1:1.0: Quirks match for vid 05e3 pid 0702: 520 [19000.853195] scsi5 : usb-storage 1-1:1.0 [19001.856687] scsi 5:0:0:0: Direct-Access ST316002 1A 0811 PQ: 0 ANSI: 0 [19001.858821] sd 5:0:0:0: Attached scsi generic sg2 type 0 [19001.861733] sd 5:0:0:0: [sdb] 312581808 512-byte logical blocks: (160 GB/149 GiB) [19001.862969] sd 5:0:0:0: [sdb] Test WP failed, assume Write Enabled [19001.865223] sd 5:0:0:0: [sdb] Cache data unavailable [19001.865232] sd 5:0:0:0: [sdb] Assuming drive cache: write through [19001.867597] sd 5:0:0:0: [sdb] Test WP failed, assume Write Enabled [19001.869214] sd 5:0:0:0: [sdb] Cache data unavailable [19001.869218] sd 5:0:0:0: [sdb] Assuming drive cache: write through [19001.891946] sdb: sdb1 [19001.894713] sd 5:0:0:0: [sdb] Test WP failed, assume Write Enabled [19001.895950] sd 5:0:0:0: [sdb] Cache data unavailable [19001.895953] sd 5:0:0:0: [sdb] Assuming drive cache: write through [19001.895958] sd 5:0:0:0: [sdb] Attached SCSI disk [19113.024123] usb 2-1: new high-speed USB device number 3 using ehci_hcd [19113.218157] scsi6 : usb-storage 2-1:1.0 [19114.232249] scsi 6:0:0:0: Direct-Access USB 2.0 Storage Device 0100 PQ: 0 ANSI: 0 CCS [19114.233992] sd 6:0:0:0: Attached scsi generic sg3 type 0 [19114.242547] sd 6:0:0:0: [sdc] 312581808 512-byte logical blocks: (160 GB/149 GiB) [19114.243144] sd 6:0:0:0: [sdc] Write Protect is off [19114.243154] sd 6:0:0:0: [sdc] Mode Sense: 08 00 00 00 [19114.243770] sd 6:0:0:0: [sdc] No Caching mode page present [19114.243778] sd 6:0:0:0: [sdc] Assuming drive cache: write through [19114.252797] sd 6:0:0:0: [sdc] No Caching mode page present [19114.252807] sd 6:0:0:0: [sdc] Assuming drive cache: write through [19114.280407] sdc: sdc1 < sdc5 > [19114.289774] sd 6:0:0:0: [sdc] No Caching mode page present [19114.289779] sd 6:0:0:0: [sdc] Assuming drive cache: write through [19114.289783] sd 6:0:0:0: [sdc] Attached SCSI disk 

Ошибки ввода / вывода при попытках доступа к файловой системе обычно означают аппаратные проблемы.

Введите dmesg и проверьте последние несколько строк вывода. Если диск или соединение с ним не работают, это будет отмечено там.

EDIT Вы монтируете его через ntfs или ntfs-3g ? Насколько я помню, унаследованный драйвер ntfs не имел стабильной поддержки записи и был в значительной степени оставлен, когда выяснилось, что ntfs-3g был значительно более стабильным и безопасным.

Как утверждает Садхур, это, вероятно, вызвано проблемами аппаратного обеспечения диска, а выход dmesg – подходящее место для проверки этого.

Вы можете выполнить сканирование поверхности вашего диска с помощью Linux /sbin/badblocks /dev/sda .

Проверьте страницу руководства для более тщательных тестов на основные исправления (перемещение блоков). Все это файловая система – агностик, поэтому она безопасна даже с файловой системой NTFS, поскольку она работает на уровне «поверхности диска».

Я лично сделал это, чтобы работать ежемесячно от cron. Конечно, вам нужно проверить, получаете ли вы почту cron в своем почтовом ящике (что часто не так по умолчанию). Эти письма попадают в /var/mail/$USER или аналогичные.

Я создал /etc/cron.d/badblocks :

 30 4 * * 3 root [ -x /sbin/badblocks ] && [ $(date +\%d) -le 7 ] && /sbin/badblocks /dev/sda 

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

Решение, которое работает для меня, – это понизить версию ntfs-3g версии 2014 года до версии 2012 года. Это должно решить проблему с доступом к разделу ntfs. В конечном итоге это не решение, потому что в конце концов вам нужно будет запустить последнюю версию.

Больше информации здесь

Я просто хотел добавить свое решение в этот поток для других – я немного поработал над своей системой, когда мой источник питания не удался – я, должно быть, повторно подключил кабели SATA в неправильном порядке, когда я их переключил, все снова работало – Не знаю, почему загрузочный диск должен быть на определенном порту SATA, во всяком случае, может быть ответом для кого-то другого.

Никто не упомянул, что делать, если инструменты Linux не работают, и доступен только Mac, но не Windows.

Можно установить на OS X с помощью Paragon NTFS

В моем случае gparted сказал, чтобы найти компьютер с ОС Windows, которого нигде не было. Но Mac был вокруг, для которого это замечательное программное обеспечение доступно. Установили пробную версию, выполнили проверку , затем восстановили – и voilà!

Я просто хотел поделиться своим опытом: на FreeBSD 10.3 я смонтировал внешний жесткий диск с помощью

 $ sudo ntfs-3g /dev/da0s1 /media 

Внутри жесткого диска я сделал mkdir для создания каталога, а затем переместил некоторые файлы к нему, конечно, с помощью команды mv . Наконец, я сделал следующую команду:

 $ sudo sync 

Затем я установил жесткий диск на Linux-машине с ядром 4.4.0-78-generic. Теперь, когда я перечисляю содержимое жесткого диска, каталог, созданный на FreeBSD с именем Jeff , показан ниже:

 $ ls -lhrtci ls: cannot access 'Jeff': Input/output error total 20K ? d????????? ? ? ? ? ? Jeff 

введите описание изображения здесь

Кроме того, при попытке удалить каталог Jeff я получаю следующее сообщение об ошибке:

 $ sudo rm -f -R Jeff rm: cannot remove 'Jeff': Input/output error 

введите описание изображения здесь

Я не мог избавиться от каталога Jeff на машине Linux, поэтому я использовал машину FreeBSD и снова установил жесткий диск на FreeBSD. Но команды ls , cd и rm на FreeBSD генерируют ту же Input/output error . Похоже, была ошибка в пакете FreeBSD ntfs-3g .