среда, 3 июня 2015 г.

Apple Time Machine и лечение при работе с сетевыми устройствами

Столкнулся со следующей проблемой. У меня есть компьютер Apple Mac, который периодически делает копии жесткого диска с помощью системы Time Machine. TM может делать копии на различные устройства, но мне больше всего подходит использование NAS в качестве сетевого хранилища копий. Периодически (по-умолчанию каждый час) Mac связывается с NAS, монтирует удаленный диск и делает резервные копии. Емкость диска NAS позволяет хранить полную копию диска Mac и множество инкрементальных копий.

Все шло замечательно, но каждый месяц, при попытке создать очередную копию, Mac стал писать следующее:

Программа Time Machine завершила проверку резервных копий. Для повышения надежности программа Time Machine должна создать новую резервную копию

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

  1. Полная резервная копия для 1ТБ диска создается (и копируется на сетевое устройство) почти сутки.
  2. Утрачивается история изменений за предыдущий период, что снижает возможность восстановления избранной информации.

Как видим, перспектива делать полные копии каждый месяц не может радовать. Стал искать решение. После некоторых усилий, вышел на статью Fix Time Machine Sparsebundle NAS Based Backup Errors

Далее хочу описать последовательность действий, которая мне помогла.

Открываем консоль и переходим в режим рута:

su -

Меняем флаги для  образа Time Machine. Здесь я воспользовался функцией автодополнения в терминале, после того, как набрал /Volumes

chflags -R nouchg /Volumes/timemachine/mac.sparsebundle

В приведенной команде Volumes - это каталог для монтирования внешних файловых систем, а timemachine - это название NAS-диска, на котором хранятся копии.

Выполняем присоединение диска с копиями из образа

hdiutil attach -nomount -noverify -noautofsck /Volumes/timemachine/mac.sparsebundle

и видим что-то похожее на

/dev/disk7           GUID_partition_scheme
/dev/disk7s1         EFI
/dev/disk7s2         Apple_HFS

Здесь стоит отметить номер диска в системе (в примере 7) и далее его использовать.

Далее проверяем и восстанавливаем файловую систему на примоединенном диске:

fsck_hfs -drfy /dev/disk7s2

После того, как пройдет некоторое время и управление вернется в терминал, мы можем посмотреть файл журнала

tail -f /var/log/fsck_hfs.log

И найти в нем строки вроде The volume was repaired successfully

Отсоединяем диск

hdiutil detach /dev/disk7s2

Правим plist-файл на сетевом устройстве:

vim /Volumes/timemachine/mac.sparsebundle/
com.apple.TimeMachine.MachineID.plist

-  удаляем строки

<key>RecoveryBackupDeclinedDate</key>
<date>{whatever-the-date}</date>


- в строках

<key>VerificationState</key>
<integer>2</integer>


Меняем 2 на 0

Все. После проделанных операций у меня снова стали создаваться инкрементальные копии.


1 комментарий:

  1. 1. -noverify уже не работает.
    2. Вместо fsch_hfs надо использовать diskutil repairVolume.
    3. Легче всего смонтировать диск Finder-ом.

    ОтветитьУдалить