cp (Unix)
| cp | |
|---|---|
| Original author(s) | AT&T Bell Laboratories |
| Developer(s) | Various open-source and commercial developers |
| Initial release | November 3, 1971 |
| Operating system | Unix, Unix-like, Plan 9, Inferno, KolibriOS |
| Platform | Cross-platform |
| Type | Command |
| License | coreutils: GPLv3 |
컴퓨팅에서 cp는 파일과 디렉토리 복사를 위한 다양한 유닉스와 유닉스-계열 운영 시스템에서 명령입니다. 그 명령은 파일을 또 다른 파일로 복사하거나, 하나 이상의 파일을 디렉터리로 복사하거나, 전체 디렉터리를 다른 디렉터리로 복사하기 위해 프로그램에 제공된 인수의 유형에 의해 표현된 세 가지 주요 작동의 모드를 가집니다.
유틸리티는 나아가서 수행된 작업을 자세히 설명하기 위해 다양한 명령줄 옵션 플래그를 허용합니다. 두 가지 주요 사양은 POSIX cp와 GNU cp입니다. GNU cp는 POSIX 버전에 비해 많은 추가적인 옵션을 가집니다.[1]
History
cp는 버전 1 유닉스의 일부였습니다.[3] GNU coreutils에 번들된 cp 버전은 Torbjorn Granlund, David MacKenzie 및 Jim Meyering에 의해 작성되었습니다.[4]
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,[5][6] cp, mv, dd에 대해 진행 상황을 보여주는 리눅스 도구.
See also
References
- ^ "GNU Coreutils: cp invocation". www.gnu.org.
- ^ "EFI Shells and Scripting". Intel. Retrieved 2013-09-25.
- ^ McIlroy, M. D. (1987). A Research Unix reader: annotated excerpts from the Programmer's Manual, 1971–1986 (PDF) (Technical report). CSTR. Bell Labs. 139.
- ^ https://linux.die.net/man/1/cp
- ^ https://linux.die.net/man/1/progress
- ^ https://github.com/Xfennec/progress
External links
- – Commands & Utilities Reference, The Single UNIX Specification, Issue 7 from The Open Group
- – FreeBSD General Commands Manual
- – NetBSD General Commands Manual
- – OpenBSD General Commands Manual
- – Solaris 10 User Commands Reference Manual
- – Linux User Commands Manual
- – Plan 9 Programmer's Manual, Volume 1