cp 파일 및 디렉토리 복사
[개념]
cp는 copy의 약어로서 파일이나 디렉토리를 복사할 때 사용하는 명령어 이다.
cp에 특정 옵션을 사용하면 지정한 디렉토리 전체를 복사할 수 있다.
[기본 사용법]
cp [OPTION] ... [-T] SOURCE DEST
또는 : cp [OPTION] ... SOURCE ... DIRECTORY
또는 : cp [OPTION] ... -t DIRECTORY SOURCE...
SOURCE(파일 및 디렉토리)를 DEST(파일 및 디렉토리)로 복사할 수 있고,
여러개의 SOURCE(파일 및 디렉토리)를 디렉토리에 복사할 수 있다.
[테스트1]
A 디렉토리 안에 있는 A.txt 파일을 -> B 디렉토리 안으로 복사한다.
[테스트2]
B디렉토리 안에 있는 A.txt 파일을 -> 같은 디렉토리 안에 B.txt 새로운 파일 이름으로 복사한다.
[유용한 Tip]
(1) -pru : 복사를 하다가 어떠한 이유로 중단을 했다. 기존에 중단되고 쌓여진 복사본이 많을 것이다.
이때 , -u 옵션때문에 원본파일이 복사본 보다 최신이면 복사하지 않으므로 복사 시간을 줄일 수 있다.
(2) -a 옵션과 -dpR 옵션 : -a 옵션과 -dpR 옵션은 동일한 효과가 있다.
특정 디렉토리의 내용을 모두 복사한다면 -rp 또는 -a 옵션을 사용한다.
-a 옵션을 사용하면 -d 옵션의 효과가 더해져서 링크를 보존할 수 있다.
(3) 백업할 때도 cp 옵션을 활용된다.
아래 내용을 backup.sh 파일에 넣어 주기적으로 실행하면 백업을 진행할 수 있다.
- 백업 소스 : /home 디렉토리 전체
- 백업 위치 : /backup/
- 백업 정책
- a : 속성보전 , 링크 복사 , 하위 디렉토리 내용까지 복사한다.
- u : 옵션을 사용하여 추가 , 변경된 파일만 백업한다.
- b : 만약 같은 파일이 있으면 백업 파일을 만든다.
-S : 날짜 : 백업파일-년-월-일 씩의 백업파일을 만든다.
(4) 복사 중 덮어쓸때
복사할 때 대상 경로에 같은 파일이나 디렉토리가 존재하는 경우 덮어쓸지 여부를 확인한다.
-f 옵션을 주어도 덮어쓰지 않고 계속 물어본다면 , alias 설정되어 있기 때문이다. (root 사용자의 경우만 해당)
아래를 보면, /root/.bashrc 파일에 alias 설정되어 있어 동일한 파일 및 디렉토리가 존재할 경우 덮어쓸지 여부를 계속
확인하게 된다.
vi로 확인해 본다.
만약 확인하지 않게 하려면 alias 설정을 제거해야 한다.
[cp와 함께 사용하는 옵션들]
옵션 | 기 능 |
-a | 복사되는 파일의 구성과 속성도 함께 복사한다. -dpR 옵션과 같은 역할을 한다. |
-b | 지우기 전에 백업 파일을 만든다. (파일명에 ~를 붙인 백업 파일 생성) |
-d | 링크를 보존한다. |
-P | 원본 파일의 지정을 경로와 함께 했을 경우에 그 경로 그대로 복사된다. |
-p | 원본 파일의 소유자 , 그룹 , 권한 , 시간정보들이 그대로 보존되어 복사된다. |
-f | 복사되기로 지정된 이름의 파일이 이미 존재할 경우 그냥 덮어 쓴다. |
-i | 파일이 이미 존재할 경우 덮어 쓸 것인지 확인을 받는다. |
-l | 파일을 복사하지 않고 하드 링크를 생성한다. |
-r/-R | 모든 서브 디렉토리 , 즉 하위경로와 파일들까지 모두 복사한다. |
-s | 파일을 복사하지 않고 심볼릭 링크를 생성한다. |
-S 꼬리말 | 백업 옵션을 사용할 경우 백업 파일에 "~" 대신 붙일 꼬리말을 지정한다. |
-u | 원본이 복사본 보다 최신이거나 복사본에 원본 파일 및 디렉토리가 없을 경우 복사 |
-v | 현재 진행되는 작업을 표시해 준다. |
그 밖에 옵션은 "cp --help" 또는 "man cp"로 확인할 수 있다.