Как работает видимое хранилище на диске Time Machine?

У меня произошел сбой компьютера, и мне пришлось заменить свой компьютер на новый. У меня есть резервная копия Time Machine, которую я хочу использовать для восстановления большого количества файлов, но я не хочу выполнять полное восстановление системы. Моя старая установка была немного грубой, а версия ОС устарела, поэтому я хочу новую, чистую установку ОС/приложения. Я не хочу использовать Помощник, потому что мне нужен более точный контроль над файлами, которые я копирую. Я знаю, как использовать функцию «Обзор других дисков», скрытую в настройках Time Machine, но это боль.

Мой вопрос о том, что вы видите, когда просматриваете диск в Finder или Terminal. В нем перечислены резервные копии по дате и времени, а также ярлык «Последние». Я знаю, что Time Machine делает полную копию каждый раз при резервном копировании. Насколько я понимаю, он не копирует diff при каждом запуске, а просто записывает новую копию любых файлов, которые изменились с момента последней резервной копии (например, diff каталога).

Что же тогда на самом деле видит пользователь, когда переходит к определенной папке с заданной отметкой времени? Представляет ли OSX файловую систему таким образом, что эти папки выглядят как представление на момент времени? Могу ли я просто относиться к ним как к таковым, не используя дурацкую анимированную, убивающую все остальное на экране программу Time Machine?

Ответы (1)

Вы можете безопасно восстановить файлы с помощью Finder или командной строки ( rsyncили другого), если не хотите использовать анимацию Time Machine.


Причина, по которой требуется объяснение: технически система использует жесткие ссылки. Итак, если вы создадите на рабочем столе три новых файла с именами A, B и C, а затем сделаете три резервных копии. Вот что происходит:

  1. Первая резервная копия копирует новые файлы в правильное место на резервном диске (в домашнюю папку вашего пользователя для моментального снимка времени — или /Volumes/Drive/Backups.backupdb/mac_name/2011-07-03-123456/Mac HD/ Пользователи/вы/рабочий стол/A и B и C .
  2. При следующем резервном копировании обнаруживается, что файл не изменился, и создается жесткая ссылка в каталоге рабочего стола следующего интервала резервного копирования, указывающая на исходный файл в первой резервной копии.
  3. Теперь измените файл B и сделайте резервную копию. Будет одна копия A , C - каждая с количеством ссылок, равным трем (три интервала имеют эту версию), и будет две версии B , одна версия с количеством ссылок 1 и одна версия с количеством ссылок 2.

Теперь файл «существует» в обоих каталогах с числом ссылок, равным 2. Любая операция копирования копирует правильные биты в новое место, и если вы удалите одну копию (Time Machine предотвращает это с помощью списков контроля доступа) файла A, она уменьшится . количество ссылок на файл и удалить его из списка папок, где вы его удалили.

В конце концов, когда количество ссылок на файл равно 1, удаление удаляет как данные, так и запись для файла.

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


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

Я как раз собирался опубликовать что-то подобное, а потом увидел ваш ответ. Ну ладно, можно просто +1 и все. :)
Чтобы поблагодарить вас @ user3439894, я откопал коварный ответ на обход ТМ и связал его...
Разве нет xattr и некоторых ACL, которые должны быть очищены после выполнения rsync? Особенно в папках, которые IIRC не позволит вам ничего удалить, пока все не будет убрано.