rsync: сравнить каталоги с символическими ссылками

Я наткнулся на это, когда искал двойную загрузку FreeBSD 11.0 и Ubuntu 16.04 с использованием Ubuntu GRUB 2, все под EFI.

В конечном итоге у меня возник ряд проблем с прямой загрузкой, но я успешно загрузил FreeBSD по цепочке. Простой цепной загрузчик +1 у меня не работал, и я использовал следующее:

menuentry "FreeBSD 11.0 chainload" {
    insmod part_gpt
    insmod fat
    root = hd0,7
    chainloader /efi/boot/bootx64.efi
}

, за которым следовало update-grub . Возможно, я пропустил что-то простое, что заставило бы приведенные выше ответы работать для efi.

7
19.03.2017, 18:02
1 ответ

Использование обычных команд с символическими ссылками очень сложно. Команда find справляется с ними довольно хорошо. Таким образом, ключ в том, чтобы использовать find, и я бы предложил использовать быструю CRC или криптографическую хеш-функцию в зависимости от ваших потребностей.

Так что что-то вроде этого должно работать (вы можете делать дополнения по мере необходимости)

find -L www -type f -exec cksum {} \; | cut -d ' ' -f1-2 | md5sum

Если вы хотите криптографическую поддержку ваших контрольных сумм,

find -L www -type f -exec sha256sum {} \; | cut -d ' ' -f1 | sha256sum

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

Примечание. Это не удастся, если символическая ссылка не является относительной и если две системы не имеют точно такого же пути, что может произойти, если символическая ссылка указывает за пределы каталога, в котором вы работаете find.

0
27.01.2020, 20:20

Теги

Похожие вопросы