Snow flake

[command] cp 명령어 본문

Programming/Linux

[command] cp 명령어

MAYSON 2022. 10. 23. 16:38

cp 명령어는 Copy의 약자로, 파일이나 디렉토리를 복사하는 명령어입니다. 복사시에는 경로를 지정하거나 원본과 같은 파일이나 디렉토리이지만 이름을 다르게 지정해 복사하는 것도 가능합니다.

# 사용법
cp [복사할 경로/파일, 디렉토리] [복사될 경로/파일, 디렉토리]

# 현재 위치한 디렉토리 내 home.jsp 파일을 현재 경로에 new_home.jsp 파일로 복사
cp home.jsp new_home.jsp

# /home/oracle 디렉토리를 /home/ora19 디렉토리로 복사
cp /home/oracle /home/ora19

# home 내부의 select.sql 파일을 /home/sqlfiles 내부에 복사
cp /home/select.sql /home/sqlfiles/select.sql

사용법 자체는 간단하지만 중복되는 이름의 파일이 있을 경우 복사여부를 묻거나 하는 경우가 빈번하기 때문에 옵션과 함께 사용합니다.

# cp 옵션

# -a : 원본 파일의 속성, 링크 정보까지 그대로 복사
cp -a banana.txt new_banana.txt

# -b : 복사 될 파일이 동일한 이름으로 해당 위치에 이미 존재 할 경우, 백업파일을 생성
cp -b overlap.tar overlap.tar

# -f : 원본파일에 제한이 걸려있을 경우 무시하고 강제로 복사함
cp -f /home/oracle/ora19 /home/oracle/ora21

# -i : 복사 될 파일이 동일한 이름으로 해당 위치에 이미 존재 할 경우, 복사여부를 물어봄(덮어씌우기)
cp -i apple.jsp apple.jsp

# -p : 복사 될 파일이 원본파일과 동일한 mod, 소유자, 그룹권한, 시간정보를 가지게함
cp -p /home/user01 /home/user02

# -r : 원본이 하위 디렉토리, 파일을 가지고 있을때 모두 복사함
cp -r /home /home/backup_home

이 외에도 사용가능한 옵션은 몇 가지 더 있지만, 자주 사용하는 옵션은 -f -p -r 을 많이 사용합니다.

 

rm 명령어와 동일하게 사용에 주의해야 합니다. 동일한 경로에 동일한 파일명을 덮어씌워 복사해 새로 생성한다는 것은 기존에 있던 파일을 삭제해버리고 새롭게 생성한다는 말과 같은 것이기 때문에 복구가 어렵습니다. 개인 테스트시에 스냅샷으로 캡쳐를 떠놓는다고 하더라도, 파일의 복사나 삭제시에는 항상 심사숙고 하시길 바랍니다.

# -rp : 하위 디렉토리, 파일을 모두 복사하고(r), 원본파일의 소유자, 그룹권한, 시간정보를 가지게함(p)
cp -rp /home/oracle /home/backup_oracle

-r 옵션과 -p 옵션을 함께 사용하여 원본 파일에 포함된 하위 디렉토리, 파일을 포함해 권한이나 최종수정시간을 포함해 완벽에 가깝게 복사하는 경우가 많습니다. 보통은 mv 명령어로 원본파일을 가공하거나, 옮길 때 만약의 변수를 제외하고자 백업을 만들어두는 형식으로 사용합니다.

 

백업 개념이 아니라 동일하게 복사를 한 뒤, 복사 된 디렉토리나 파일에 mv 명령어로 테스트를 해도 되겠죠?

 

한 줄의 커맨드로 복수의 디렉토리나 파일을 한 경로에 복사하거나, Asterisk(*, 아스타리스크)를 활용해 모든 디렉토리, 파일을 복사할 수도 있습니다.

# 복수의 디렉토리, 파일을 복사
# cp [원본 파일1] [원본 파일2] [원본 파일3] [복사 될 경로]
cp index.jsp home.jsp oracle.zip /home/oracle

# 현재 위치에 있는 모든 디렉토리, 파일을 /u01 디렉토리 내부에 복사
cp * /u01

# /u01 디렉토리 내부의 모든 파일을 /home 경로에 복사
cp /u01/* /home

'Programming > Linux' 카테고리의 다른 글

[command] id 명령어  (0) 2022.10.25
[command] mv 명령어  (0) 2022.10.24
[command] rm 명령어  (0) 2022.10.11
[command] touch 명령어와 TIMESTAMP  (0) 2022.10.09
[command] mkdir 명령어  (1) 2022.10.06
Comments