Как проверить, что все файлы в файловой системе могут быть прочитаны без ошибок?
Я использую внешний жесткий диск с файловой системой ext4 для создания резервных копий. Используемое мной программное обеспечение для резервного копирования (faubackup) копирует файловую иерархию 1:1 в папку с меткой времени на жестком диске и создает инкрементные резервные копии таким образом, что жестко связывает новые копии файлов, содержимое которых не изменилось на один и тот же файл. в соответствующей подпапке предыдущей резервной копии. Поскольку у меня недавно был диск с резервной копией, я хочу убедиться, что все записанные файлы действительно могут быть прочитаны без ошибок ввода-вывода, поэтому я знаю, что могу положиться на свою резервную копию.
Один из способов сделать это - прочитать весь раздел, например, dd
это /dev/null
, Однако размер диска составляет 3 ТБ, и на это потребуется около 7 часов (через USB 3.0).
Другой способ будет использовать e2fsck
с -c
вариант, но это также занимает много лет.
Я думаю, что должна быть возможность ускорить процесс, не проверяя весь диск, а только файлы, которые составляют лишь часть от общего размера диска. Это может быть сделано, например, путем записи всех файлов в архив tar, который не записан на диск, но отправлен /dev/null
, Здесь проблема заключается в жестком связывании: если я скажу 10 инкрементных резервных копий, хранилище для этого опять-таки является лишь частью диска, но кажется, что оно примерно в 10 раз больше.
Мой вопрос: есть ли способ читать только файлы на диске, и только по одному в каждом наборе файлов, жестко связанных с одним и тем же пространством хранения? Или есть способ сделать e2fsck -c
или что-то подобное проверяют только используемые части файловой системы (выделенные блоки)?
1 ответ
GNU tar не копирует содержимое жестко связанных файлов несколько раз. Прочтите первый ответ на этот вопрос или официальную документацию по этой теме. Вы можете проверить это, отправив вывод (архив) tar через wc : tar cf - -C <mountpoint of your disk> . | wc -c
и проверьте размер архива в байтах (вы можете сравнить это с результатом с помощью параметра tar --hard-dereference
).