Как я могу переместить несколько файлов с жесткими ссылками из коробки 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 Может помочь получить скрипт, который вы можете использовать другим способом?

Другие вопросы по тегам