Чем установка -c отличается от cp


20

В чем разница между установкой -c и cp? Большинство установок, как правило, используют install -c, но со страницы руководства это не похоже на то, что она делает что-то отличное от cp (за исключением, может быть, установки разрешений). Когда я должен использовать install -c и когда cp?

Ответы:


18

Одно существенное отличие состоит в том, что cp усекает файл назначения и начинает копировать данные из источника в файл назначения.

install, с другой стороны, сначала удаляет файл назначения.

Это важно, потому что, если целевой файл уже используется, с тем, кто использует этот файл, могут случиться плохие вещи, если у вас cpесть новый файл поверх него. например, перезапись исполняемого файла, который может быть запущен, может дать сбой. Усечение файла данных, который существующий процесс занят чтением / записью, может вызвать довольно странное поведение. Если вы сначала просто удалите файл назначения, как это делает установка, все будет продолжаться, как обычно - удаленный файл фактически не будет удален, пока все процессы не закроют этот файл.


3
Хороший ответ. Но смотрите также cp --remove-destinationв GNU coreutils.
Питер Айзентраут

7

Технически, разница между install -cи в cpтом, что installустанавливает права доступа для целевого файла rwxr-xr-x. cpсохраняет права доступа к исходному файлу за вычетом umask. Такое поведение по умолчанию полезно в разных ситуациях. Очевидно, что со всеми вариантами, которые предлагают cpи installпредлагают в настоящее время, функциональные возможности сошлись.

В настоящее время installобычно используется в make-файлах, cpвезде. Это различие иногда полезно, потому что некоторые операционные системы или системы установки позволяют вам подключиться к installпрограмме для регистрации установленных пакетов. Современные системы управления пакетами делают этот вид устаревшим, но некоторые люди все еще используют его. Кроме того, возможность устанавливать права доступа к целевому файлу в одно и то же время очень удобна.


4

installУтилита, на ее основе, является фантазией cp. Но поскольку инструмент специально устанавливает, он содержит несколько функций, которых cpнет. Мой /usr/bin/installот GNU Coreutils не только копия, но и может изменить завивки / собственность как ARG флаги (экономия chgrp, chown, chmodзаклинания) вариант для полосы отладочной информации (сберегая stripвызов) , а также некоторые харизмы для SELinux контекста.

Это просто обеспечивает удобные действия, полезные для установки программного обеспечения. Ничто не меняет жизнь, все полезно и делает ваши сценарии чище.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.