Как я могу переместить несколько файлов с жесткими ссылками из коробки Linux на мой Mac OS X и сохранить жесткие ссылки?
У меня есть rsnapshot
резервное копирование, которое мне нужно удалить из поврежденной файловой системы Linux. Мне нужно сохранить внутренние жесткие ссылки. я пробовал rsync -H
и используя более новыйrsync
и ни один не сохраняет жесткие ссылки на OS X.
Я пытался получить rsync -H
работает, и я изолировал его к смонтированной файловой системе. Я могу сохранить жесткие ссылки, копируемые локально (HFS в HFS), но это не сохраняет, когда я пытаюсь rsync
отключение монтирования файловой системы SMB или монтирования файловой системы AFP. Есть ли какой-нибудь вариант монтирования для получения OS X rsync
подчиняться -H
?
Любой совет будет принята с благодарностью.
2 ответа
Поскольку проблема, по-видимому, заключалась в том, что rsync в OSX не идентифицирует и не сохраняет жесткие ссылки из подключенного источника EXT2, вместо этого мне удалось запустить демон rsync на исходной коробке linux и использовать rsync на моем Mac для подключения к этому демону. Похоже, правильно сохранить внутренние жесткие ссылки таким образом.
Для этого на обеих машинах должен быть установлен rsync, причем один из них работает в режиме демона. В моем случае это был источник.
Вам также необходимо отредактировать rsyncd.conf на стороне демона, чтобы определить "модуль" (причудливое имя для "пути"), который будет источником или целью.
- Наконец, вы используете измененный синтаксис со стороны, не являющейся демоном, для ссылки на демон: user@host::module. Таким образом, копирование из демона может быть: rsync -r user@host::module ~/foo
Для более подробной информации, Google 'rsync' и / или 'rsync daemon'
Я, конечно, надеюсь, что есть более легкий путь. Тем не менее, если ничего не помогает:
Я никогда не использовал это, но timecopy
Сценарий Python (для использования с ошибочными резервными копиями 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
Может помочь получить скрипт, который вы можете использовать другим способом?