Я, конечно, надеюсь, что есть более легкий путь. Тем не менее, если ничего не помогает:
Я никогда не использовал его, но скрипт Python timecopy
(для использования с ошибочными резервными копиями Time Machine) может помочь. Это длинный сценарий, но кажется, что он не только такой длинный из-за Time Machine. И особенно его поддержка неисправных дисков может быть полезна и для вашей поврежденной файловой системы. С его сайта:
Использование инструмента, выполняющего блочное копирование, фактически скопирует ошибку файловой системы на новый диск, который вообще бесполезен. Что нужно, так это способ скопировать файловую систему в новое место, используя традиционное копирование файлов. Единственная проблема заключается в том, что резервные копии Time Machine полны жестких ссылок, которые будут отображаться как обычные файлы и каталоги, а выполнение простой копии файла приведет к огромной трате дискового пространства.
Он поддерживает --dry-run
и --verbose
выводит хорошие команды mkdir
, cp
, ln
и ln -s
.
Сценарий принудительно использует файловую структуру Time Machine Backups.backupdb
. Мне кажется , что изменение srcdb = os.path.join(srcbase, 'Backups.backupdb')
в srcdb = srcbase
, а также изменение dstdb = os.path.join(dstbase, 'Backups.backupdb')
в dstdb = dstbase
, может сделать это пригодным для источников не ТМ.
Затем он обрабатывает каждую подпапку исходной папки, ожидая, что каждая из них будет именем машины, являющейся корнем всех резервных копий для этой машины (обычно одной, если диск не используется для нескольких компьютеров). В каждой подпапке он обрабатывает все, кроме именованных файлов .DS_Store
, Latest
или заканчивающийся на .inProgress
. Но: он не ожидает, что подпапки исходной папки сами будут жесткими ссылками. Если у вас есть жесткие ссылки в исходной папке, то, возможно, вы можете смонтировать диск с дополнительным именем папки. Например: используйте /Volumes/my/mount
вместо /Volumes/mount
, а затем запустите timecopy
для исходной папки /Volumes/my
.
Наконец, он также создаст символическую ссылку с именем Latest
, как и диск Time Machine, для самой последней подпапки. Конечно, вы можете удалить это потом.
Затем вы все равно можете выполнить --dry-run
, или, может быть, вывод --verbose --dry-run
поможет получить скрипт, который вы можете использовать другим способом?