Самый быстрый способ проверить одинаковость содержимого корневых папок?

Вам нужна строка shebang, если исполняемый файл не может быть запущен ядром. Ядро может запускать машинный код только в определенном формате(ELF в большинстве вариантов Unix )или иногда в других форматах (, например. в Linux вы можете зарегистрировать исполняемые форматы через binfmt _misc). Если исполняемый файл нуждается в интерпретаторе , то ядро ​​должно знать, какой интерпретатор вызывать. Вот для чего нужна строка shebang .

Если ваш скрипт использует синтаксис fish, его первая строка должна быть

#!/usr/bin/env fish

(Вместо этого вы можете использовать абсолютный путь, но тогда вам придется изменить скрипт, если вы хотите запустить его на машине, где исполняемый файл fishнаходится в другом месте, например. /usr/bin/fishпротив /usr/local/bin/fish.)

Если ваш скрипт использует синтаксис sh, используйте

#!/bin/sh

(Все современные системы Unix имеют POSIX sh по адресу /bin/sh, поэтому вам не нужно env.)

Если ваш сценарий имеет синтаксис bash (, который представляет собой sh плюс некоторые расширения bash -), используйте

#!/usr/bin/env bash

В Linux на практике #!/bin/bashтакже будет работать.

Все это не зависит от того, из какой оболочки вы вызываете скрипт. Важно только то, на каком языке написан сценарий.

1
16.03.2021, 14:55
2 ответа

Другой способ сделать это — запустить rsync --dry-run. Это проверит оба дерева и выведет различия.

rsync --dry-run --checksum source destination

или вы можете положиться на быстрый метод rsync(мод -время и размер ).

rsync --dry-run source destination

или решить, какую контрольную сумму использовать среди доступных методов, с помощью --checksum-choice. Кроме того, если вам нужна дополнительная информация о различиях, вы можете добавить --itemize.

Обратите внимание, что подсчет полной контрольной суммы для каждого файла неизбежно будет медленным, так как вам придется читать их целиком.

2
18.03.2021, 22:25

Используйте hardlink -vn. См. http://manpages.ubuntu.com/manpages/bionic/man1/hardlink.1.html. hardlinkпроверяет идентичные файлы и связывает их, но использование -nvпросто перечисляет идентичные файлы.

1
18.03.2021, 22:25

Теги

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