Как правильно сохранять данные Time Machine из HFS+

Time Machine это штатная система резервного копирования на комьютерах с macOS. Она создает снимки файловой системы на внешний накопитель по заданному расписанию. Очень часто эти снимки хранятся на диске с файловой системой HFS+.

В этой статье мы рассмотрим особенности хранения данных Time Machine и как эти особенности отражаются на процессе восстановления данных.

Хардлинки в HFS+

Для хранения данных Time Machine активно использует хардлинки. Хардлинк или жесткая ссылка (hard link) — это способ разместить один и тот же файл в разных каталогах.

Рассмотрим на примере. Допустим есть два файла: «\folder1\file1.txt» и «\folder2\file2.txt». И допустим, что один из них является хардлинком другого. Тогда:

  •  оба отображаются как полноценные файлы штатными средствами ОС и в большинстве программ
  • если изменить содержимое одного файла, то автоматически изменится содержимое и второго, поскольку информация о размещении на диске у них одна и та же
  • если удалить любой из этих файлов, то на второй это никак не повлияет.

Отметим также, что хардлинков на один и тот же файл может быть больше одного и что существуют хардлинки не только на файлы, но и на каталоги, идея там такая же.

В дереве каталогов и файлов есть два формально разных файла, но благодаря механизму жестких ссылок они ссылаются на одно и то же размещение на диске

Хардлинки есть не только в HFS+, но и, например, в NTFS. А вот в FAT32 их нет. Детали реализации могут отличаться, но концептуально механизм работает одинаково.

В силу особенностей реализации в HFS+ используется модель, когда есть один файл-оригинал и один или более второстепенных файлов-хардлинков. Файлы-оригиналы хранятся в HFS+ Private Data и имеют имена вроде iNode1234567. Например, у вас есть файл file1.txt и вы создаете на него жесткую ссылку file2.txt, то в итоге вы получите 2 хардлинка (file1.txt и file2.txt) и один файл-оригинал в каталоге HFS+ Private Data.

Модель жестких ссылок в HFS+ предполагает наличие специального файла-оригинал в служебном каталоге HFS+ Private Data. Файлы-хардлинки ссылаются на свой файл-оригинал.

В каталоге .HFS+ Private Directory Data_ хранятся оригиналы для каталогов. Механизм тот же.

Служебные каталоги в корне файловой системы HFS+

Как в HFS+ хранятся данные Time Machine

Теперь, когда мы знаем что такое хардлинки, можно рассказать о том, как хранит данные Time Machine.

В зависимости от настроек детали могут отличаться, но если для хранения данных Time Machine используется раздел с HFS+, то в его корне можно найти каталог «Backups.backupdb» или с именем, внутри которого есть слова Time Machine. Далее либо сразу, либо в подкаталоге с именем пользователя лежит набор каталогов называнный по маске ГГГГ-ММ-ДД-ччммсс (год, месяц, день, часы, минуты, секунды).

На внешнем накопителе в корне есть каталог Backups.backupdb. В нем подкаталог User’s iMac, в котором хранятся каталоги с версиями файловой системы основного компьютера в разные моменты времени.

 

Если открыть один из таких каталогов, то там будет резервная копия файловой системы, сделанная в момент времени, указанный в имени. Очевидно, что подавляющее большинство файлов не меняется так часто, как создаются эти копии. Time Machine не копирует файлы, которые не менялись. Она создает на них хардлинки. Это значительно экономит время создания снимка и место, которое он занимает. Хотя, с точки зрения восстановления данных, лучше бы данные честно копировались.

Хардлинки используются не только в каталоге Time Machine, но в нем они используются особенно часто.

Работа с хардлинками в Data Extractor

Главное что нужно знать о работе с хардлинками HFS+ в Data Extractor — это что выполняется переход к файлу-оригиналу:

  • если на хардлинке запустить метод построения карты, то построится карта файла-оригинала
  • если в процессе сохранения встретится хардлинк, то под его именем будут сохранены данные файла-оригинала. Т.е. в файловой системе-приемнике это будет уже обычный файл.

Это удобно, поскольку, например, процесс восстановления данных с проблемных накопителей никак не меняется: построили карту необходимых данных, запустили вычитывание, сохранили данные.

Но тут есть и подводные камни связанные с раздуванием объема данных:

  • у одного файла-оригинала может быть несколько десятков хардлинков. Для каждого хардлинка в карту будут добавляться цепочки файла-оригинала. Поэтому карта всех файлов может в десятки раз превышать объем диска.

    На скриншоте карта каталога Time Machine. Цепочки упорядочены по физическому началу. Благодаря этому хорошо видно, что одна и та же цепочка встречается очень много раз. Она относится к одному и тому же файлу, но к разным снимкам ФС. Из-за многократного дублирования объем карты более 1.5Тб, хотя объем диска всего 1Tб.

  • такая же ситуация с сохранением. Каждый хардлинк сохраняется как отдельный файл. Поэтому для сохранения всего потребуется значительно больше места, чем было на оригинальном диске.

Как обойти эти проблемы:

  • не сохранять и не строить карту каталога Time Machine (\Backups.backupdb), если данные Time Machine клиенту не нужны (внешние накопители часто используются не только для Time Machine). Также можно пропустить служебные каталоги HFS+ Private Data и .HFS+ Private Directory Data_
  • сохранять и/или строить карту только одного снимка из каталога Time Machine, например, самого последнего
  • для карты можно использовать метод сжатия карты, чтобы увидеть реальный объем, который необходимо вычитывать.

    Карта каталога Time Machine после сжатия. Теперь ни одна цепочка не повторяется. Объем карты уменьшился с 1.5Тб до 127Гб. 

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (2 голосов, средний: 5,00)
Загрузка...

Об авторе Александр Леоненко

Разработчик Data Extractor и Data Extractor RAID Edition
Запись опубликована в рубрике Data Extractor с метками , , , , , . Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *