install -c와 cp의 차이점은 무엇입니까


20

install -c와 cp의 차이점은 무엇입니까? 대부분의 설치는 install -c를 사용하는 경향이 있지만 매뉴얼 페이지에서는 cp와 다른 역할을하는 것처럼 들리지 않습니다 (설정된 권한 제외). 언제 install -c를 사용해야하고 언제 cp를 사용해야합니까?

답변:


18

한 가지 중요한 차이점은 cp가 대상 파일을 자르고 소스에서 대상 파일로 데이터 복사를 시작한다는 것입니다.

반면에 install은 대상 파일을 먼저 제거합니다.

대상 파일이 이미 사용중인 경우 cp새 파일 이 있는 경우 해당 파일을 사용하는 사람에게 나쁜 일이 발생할 수 있기 때문에 중요 합니다. 예를 들어 실행중인 실행 파일을 덮어 쓰지 못할 수 있습니다. 기존 프로세스에서 읽기 / 쓰기 작업이 많은 데이터 파일을 자르면 꽤 이상한 동작이 발생할 수 있습니다. 대상 파일을 먼저 제거하면 설치와 마찬가지로 정상적으로 진행됩니다. 모든 프로세스가 해당 파일을 닫을 때까지 제거 된 파일이 실제로 제거되지 않습니다.


3
좋은 대답입니다. 그러나 cp --remove-destinationGNU coreutils 도 참조하십시오 .
Peter Eisentraut

7

기술적 차이 install -ccpinstall세트에게 상기 표적 파일의 권한 rwxr-xr-x. cp소스 파일의 권한에서 umask를 뺀 권한을 유지합니다. 이러한 기본 동작은 다른 상황에서 유용합니다. 분명히, 현재 cpinstall제공 하는 모든 옵션을 통해 기능이 수렴되었습니다.

요즘 install은 일반적으로 cp다른 곳 에서 makefile에 사용됩니다 . 일부 운영 체제 또는 설치 시스템을 사용하면 install프로그램에 연결 하여 설치된 패키지를 등록 할 수 있기 때문에 이러한 구분이 유용 합니다. 현대의 패키지 관리 시스템은 이런 종류의 구식을 사용하지 않지만 일부 사람들은 여전히 ​​사용합니다. 또한 동일한 이동으로 대상 파일 권한을 설정할 수있는 가능성이 매우 편리합니다.


4

기본적으로 install유틸리티는 환상적 cp입니다. 그러나 도구가 구체적으로 설치되므로 몇 가지 기능이 포함되어 cp있지 않습니다. 내 /usr/bin/installGNU의로 coreutils에서뿐만 아니라 복사,뿐만 아니라 인수 플래그 (절약 등의 파마 / 소유권을 변경할 수 있습니다 chgrp, chown, chmod호출) 스트립 디버그 정보 (구원의 옵션 strip호출) 또한 SELinux에 컨텍스트에 대한 몇 가지 모조.

소프트웨어 설치에 유용한 편리한 조치 만 제공합니다. 인생은 바뀌지 않으며, 모두 유용하며, 스크립트를 깔끔하게 만듭니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.