컴퓨팅에서 cp는 파일과 디렉토리 복사를 위한 다양한 유닉스와 유닉스-계열 운영 시스템에서 명령입니다. 그 명령은 파일을 또 다른 파일로 복사하거나, 하나 이상의 파일을 디렉터리로 복사하거나, 전체 디렉터리를 다른 디렉터리로 복사하기 위해 프로그램에 제공된 인수의 유형에 의해 표현된 세 가지 주요 작동의 모드를 가집니다.
유틸리티는 나아가서 수행된 작업을 자세히 설명하기 위해 다양한 명령줄 옵션 플래그를 허용합니다. 두 가지 주요 사양은 POSIX cp와 GNU cp입니다. GNU cp는 POSIX 버전에 비해 많은 추가적인 옵션을 가집니다.
그 명령은 EFI 셸에서도 사용할 수 있습니다.
History
cp는 버전 1 유닉스의 일부였습니다. GNU coreutils에 번들된 cp 버전은 Torbjorn Granlund, David MacKenzie 및 Jim Meyering에 의해 작성되었습니다.
Operating modes
cp는 세 가지 주요 작동의 모드를 가집니다. 이들 모드는 호출 시 프로그램에 제공된 인수의 유형과 개수에서 추론됩니다.
- 프로그램이 파일에 대한 경로 이름의 둘의 인수를 가질 때, 프로그램은 첫 번째 파일의 내용을 두 번째 파일에 복사하고, 필요하면 두 번째 파일을 생성합니다.
- 프로그램이 파일의 경로 이름에 대한 하나 이상의 인수를 갖고 디렉토리에 대한 경로의 인수 다음에 올 때, 프로그램은 각 소스 파일을 대상 디렉토리에 복사하며, 아직 존재하지 않는 임의의 파일을 생성합니다.
- 프로그램의 인수가 두 디렉토리의 경로 이름일 때, cp는 소스 디렉토리의 모든 파일을 대상 디렉토리로 복사하며, 필요한 파일 또는 디렉토리를 생성합니다. 이 작동 모드는 디렉토리의 재귀 복사를 나타내기 위해 추가 옵션 플래그, 전형적으로 r을 요구합니다. 만약 대상 디렉터리가 이미 존재하면, 원본이 대상으로 복사되지만, 만약 대상이 존재하지 않으면 새로운 디렉터리가 생성됩니다.
Usage
한 파일을 또 다른 파일에 복사하기:
cp [-fHip][--] sourcefile targetfile
파일(들)을 디렉토리에 복사하기:
cp [-fHip] [--] sourcefile... targetdirectory
디렉토리를 디렉토리에 복사하기 (-r 또는 -R이 사용되어야 합니다):
cp -r|-R [-fHip] [--] sourcedirectory... targetdirectory
Option flags
- f (force) – 만약 파일이 쓰기 작업을 위해 열리지 않으면, 대상 파일의 제거를 지정합니다. 제거는 cp 명령에 의해 수행된 임의의 복사보다 먼저 수행됩니다.
- H (dereference) – 목적지가 대상에 대한 심볼릭 링크가 아닌 대상 파일을 가지도록 파일에 있도록 cp 명령이 심볼릭 링크 (symlinks)를 따르도록 만듭니다.
- i (interactive) – 덮어쓸 파일 이름을 묻는 메시지가 나타납니다. 이것은 TargetDirectory 또는 TargetFile 매개변수가 SourceFile 또는 SourceDirectory 매개변수에 지정된 파일과 이름이 같은 파일을 포함하면 발생합니다. 만약 y (또는 y에 동등한 로케일)를 입력하면, cp 명령이 계속됩니다. 임의의 다른 답변은 cp 명령이 파일을 덮어쓰는 것을 방지합니다.
- p (preserve) – p 플래그는 해당 대상에 있는 각 소스 경로의 다음 특성을 유지합니다: 마지막 데이터 수정 시간 및 마지막 접근 시간, 소유권 (이를 수행할 권한이 있는 경우에만), 및 파일 권한 비트를 유지합니다.
- R or r (recursive) – 디렉토리를 재귀적으로 복사합니다.
Examples
현재 디렉토리에 파일의 사본을 생성합니다:
cp prog.c prog.bak
이것은 prog.c를 prog.bak에 복사합니다. 만약 prog.bak 파일이 존재하지 않으면, cp 명령이 그것을 만듭니다. 만약 그것이 존재하면, cp 명령은 해당 내용을 prog.c 파일의 내용으로 대체합니다.
현재 디렉터리에 있는 두 개의 파일을 또 다른 디렉터리로 복사합니다:
cp jones smith /home/nick/clients
이것은 파일 jones를 /home/nick/clients/jones에 복사되고 smith를 /home/nick/clients/smith에 복사합니다.
파일을 새로운 파일에 복사하고 원본 파일과 결합된 수정 날짜, 시간 및 접근 제어 목록을 유지합니다.
cp -p smith smith.jr
이것은 smith 파일을 smith.jr 파일에 복사됩니다. 현재 날짜 및 시간 스탬프로 파일을 생성하는 대신 시스템은 smith.jr 파일에 smith 파일과 같은 날짜 및 시간을 제공합니다. smith.jr 파일은 역시 smith 파일의 접근 제어 보호도 상속합니다.
모든 파일과 하위디렉터리를 포함하여 하나의 디렉터리를 또 다른 디렉터리로 복사합니다:
cp -R /home/nick/clients /home/nick/customers
이것은 모든 파일, 하위 디렉터리 및 해당 하위디렉터리의 파일을 포함하여 디렉터리 clients를 디렉터리 customers/clients에 복사됩니다. 일부 유닉스 시스템은 디렉토리 경로의 종료에 따라 이 모드에서 다르게 동작합니다. GNU 시스템에서 cp -R /home/nick/clients/ /home/nick/customers를 사용하면, 그것은 예상대로 작동합니다; 어쨌든, BSD 시스템에서, 그것은 디렉토리 clients 자체 대신 "clients" 디렉토리의 모든 contents를 복사합니다. 같은 것은 만약 소스 디렉토리의 경로가 . 또는 .. (후행 슬래시 포함 또는 제외)로 끝나면 GNU와 BSD 시스템 둘 다에서 발생합니다.
존재하는 파일에 대한 파일의 복사는 업데이트 모드에서 존재하는 파일을 엶으로써 수행되며, 따라서 쓰기 허가권을 요구하고 대상 파일이 원래 가지고 있던 권한을 유지하는 파일 inode를 보존합니다.
Related Unix commands
- cpio – 전체 디렉토리 구조를 한 위치에서 또 다른 위치로 복사합니다
- tar – 파일의 아카이브를 생성합니다
- link – 파일 또는 디렉토리에 대한 링크를 생성하기 위한 시스템 호출
- ln – 파일 또는 디렉토리에 대한 링크를 생성합니다
- mv – 파일 또는 디렉토리를 이동합니다
- rm – 파일 또는 디렉토리를 제거합니다
- unlink – 파일 또는 디렉토리를 제거하기 위한 시스템 호출
- chmod – 파일 또는 디렉토리에 대한 모드 (일명 허가권)을 변경합니다
- chown – 파일 또는 디렉토리에 대한 소유자를 변경합니다
- chgrp – 파일 또는 디렉토리에 대한 그룹을 변경합니다
- uucp – 유닉스에서 유닉스로 복사합니다
- scp – SSH를 통한 보안 복사
- progress, cp, mv, dd에 대해 진행 상황을 보여주는 리눅스 도구.
External links
- cp – Commands & Utilities Reference, The Single UNIX Specification, Issue 7 from The Open Group
- cp(1) – FreeBSD General Commands Manual
- cp(1) – NetBSD General Commands Manual
- cp(1) – OpenBSD General Commands Manual
- cp(1) – Solaris 10 User Commands Reference Manual
- cp(1) – Linux User Commands Manual
- cp(1) – Plan 9 Programmer's Manual, Volume 1