Відповіді:
Важливою відмінністю є те, що cp скорочує цільовий файл і починає копіювати дані з джерела у файл призначення.
інсталяція, з іншого боку, спочатку видаляє цільовий файл.
Це важливо, тому що якщо файл призначення вже використовується, погані речі можуть трапитися, коли хто використовує цей файл у випадку, якщо над ним cp
з'явиться новий файл. наприклад, перезапис виконуваного виконуваного файлу може не вдатися. Обрізання файлу даних, до якого існуючий процес зайнятий читанням / записом, може спричинити досить дивну поведінку. Якщо ви просто вилучіть цільовий файл спочатку, як це робиться при встановленні, все продовжується як звичайно - видалений файл фактично не видаляється, поки всі процеси не закриють цей файл.
Технічно різниця між install -c
і cp
полягає в тому, що install
встановлює дозволи на цільовий файл rwxr-xr-x
. cp
зберігає дозволи вихідного файлу за вирахуванням umask. Ці поведінки за замовчуванням корисні в різних ситуаціях. Очевидно, що з усіма варіантами, які cp
і install
пропонують сьогодні, функціонали зблизилися.
У наш час install
зазвичай використовується в makefiles, і cp
скрізь. Ця відмінність іноді корисна, оскільки деякі операційні системи або інсталяційні системи дозволяють підключитись до install
програми для реєстрації встановлених пакетів. Сучасні системи управління пакетами роблять цей вид застарілим, але деякі люди все ще використовують його. Також дуже зручною є можливість встановлення дозволів на цільові файли в одному русі.
install
Утиліта, на її основі, є фантазією cp
. Але оскільки інструмент спеціально встановлюється, він містить кілька функцій, яких cp
немає. Мій /usr/bin/install
від GNU Coreutils не тільки копія, але і може змінити завивки / власність як ARG прапори (економія chgrp
, chown
, chmod
заклинання) варіант для смуги налагоджувальної інформації (зберігаючи strip
виклик) , а також деякі харизми для SELinux контексту.
Він просто забезпечує зручні дії, корисні для встановлення програмного забезпечення. Жоден не змінюється життя, всі корисні та роблять ваші сценарії більш чистими.
cp --remove-destination
основні елементи GNU.