cp -r -l в MacOS (рекурсивное копирование с сохранением жестких ссылок)
8172
Я пытаюсь скопировать дерево каталогов с рекурсивным сохранением жестких ссылок в файл. Используя gnu cp, это будет работать с флагом -l. Затем cp воссоздает структуру каталогов, но не нужно копировать содержимое каждого файла.
Это предварительное резервное копирование, сначала я хочу сделать дешевую (жестко связанную) копию предыдущей резервной копии, а затем выполнить rsync исходного каталога над этой копией. Грубо говоря:
cp -r -l yesterdays_backup todays_backup rsync -a source_dir todays_backup
К сожалению, cp OSX не поддерживает флаг -l, насколько я могу судить, cpio не поддерживает рекурсивное копирование. Другой альтернативой является pax, но это приводит к копированию всей структуры каталогов:
Должен быть простой / очевидный способ сделать это, но я в настоящее время в тупике ... Есть ли альтернативы cpio и pax? Я хотел бы избежать установки GNU CP.
Я знаю о Timemachine, но он не будет правильно создавать резервные копии зашифрованных каталогов.
использование find вместе с cpio позволяет обойти отсутствие рекурсивного cpio, как описано здесь: (http://www.mikerubel.org/computers/rsync_snapshots/#Incremental), но выглядит не очень элегантно ...
15 лет назад
0
mkdir backups/todays_backup cd backups/yesterdays_backup pax -rwl . ../todays_backup
6
coreutilsПакет легко установить из MacPorts, который содержит команду GNU, cpпереименованную в gcp.
Но, что еще лучше, более новые версии rsync, включая, по крайней мере, версию в OS X 10.5, поддерживают опцию --link-dest, которая должна устранить необходимость в начальном cp -al. Смотрите здесь . Рекомендуется также использовать опцию -E для копирования расширенных атрибутов, списков ACL и т. Д.
0
Jonathan Leffler
Хотя cpioрекурсивное копирование напрямую не поддерживается, вы можете подать точный список файлов, которые вы хотите скопировать, в свой стандартный ввод и добиться эффекта рекурсивного копирования с помощью findконвейера cpio. Это прямо аналогично использованию GNU tarс опциями -T -(что означает чтение списка файлов для резервного копирования из стандартного ввода).
0
Я верю, что то, что вы хотите, также может быть достигнуто с помощью ditto yesterdays_backup todays_backup. По умолчанию dittoвыполняется рекурсивное копирование с сохранением жестких ссылок, списков ACL и расширенных атрибутов.
проблема в том, что копия больше не дешевая, когда цель состоит в том, чтобы создать жесткие ссылки в рамках каталога. То же самое может сохранить их, когда они существуют, но нельзя указывать ссылку вместо создания дубликата.
Florenz Kley 13 лет назад
0
Я не думаю, что то же самое можно сказать, чтобы сохранить жесткие ссылки каталога. Страница man говорит, что это только файл жестких ссылок
Chris F Carroll 7 лет назад
0
0
Florenz Kley
+1 for Pauls's answer. ditto would be an option, but only if used in conjunction with find - it does preserve hard links, but only inside directories.