Для этого у
GNU install есть опция -C (--compare):install -C -m 0755 ./build/myapp ./bin/myapp
Перед установкой
install сравнит исходный и существующий файлы. Если содержимое и заданные атрибуты совпадают, файл назначения вообще не будет изменён.Это принципиально отличается от обычного копирования поверх файла:
cp ./build/myapp ./bin/myapp
Даже если результат сборки идентичен предыдущему, лишняя перезапись может изменить метаданные файла и запустить всё, что следит за его изменением.
С
install -C это удобно убрать прямо из Makefile или скрипта локального развёртывания:install -C -m 0755 build/myapp /usr/local/bin/myapp
Причём
install одновременно умеет выставлять права, поэтому отдельный chmod после копирования не требуется:install -C -m 0644 config.ini /etc/myapp/config.ini
🔥
install -C полезен там, где одна и та же сборка устанавливается много раз: неизменившийся файл остаётся нетронутым, а копирование и выставление прав сводятся к одной команде.🚪 Linux Ready | #совет
