본문 바로가기

리눅스-기초명령어/파일 시스템 관리

CP

파일 복사하기

 

사용법

cp [옵션] [원본파일 혹은 디렉토리] [복사할 파일 혹은 디렉토리]

 

옵션

옵션 설명
-i 복사할 파일이 이미 존재할 경우, 덮어쓰기 여부를 묻는다. 
alias에 등록된 cp의 기본값.
-b 복사할 파일이 이미 존재할 경우, 백업파일을 생성한다.
-f 복사할 파일이 이미 존재할 경우, 강제로 기존 파일을 삭제하고 복사한다.
-r 하위 디렉토리까지 전부 복사한다.
-p 원본파일의 소유자, 그룹, 권한 등의 정보까지 모두 복사한다.
-v 복사 진행상황을 출력한다.
-n 대상 디렉토리의 기존 파일을 덮어쓰는 것을 방지한다. 대신 대상 디렉토리에 아직 존재하지 않는 파일만 복사한다

 

예시

  • 기본 : 파일을 복사한다.
[root@Linux ~]# touch hello.txt
# 실습을 위해 hello.txt 파일을 생성
[root@Linux ~]# cp hello.txt bye.txt
[root@Linux ~]# ls
hello.txt  bye.txt

 

  • 복수의 파일 복사 : 마지막 경로가 디렉토리여야한다.
[root@Linux ~]# cp bye.txt hello.txt /var/tmp/
# 복사할 파일을 복수로 지정할 때는 도착지를 하나의 디렉토리로 지정
[root@Linux ~]# cd /var/tmp
[root@Linux tmp]# ll
total 8
-rw-r--r--. 1 root root  1 Apr 26 12:09 bye.txt
-rw-r--r--. 1 root root  6 Apr 26 12:09 hello.txt

 

  • -i : 복사될 파일이 이름이 이미 존재할 경우, 사용자에게 덮어 쓰기 여부를 묻는다.
[root@Linux ~]# touch dumpA dumpB
# 실습을 위해서 A B 파일 생성
[root@Linux ~]# cp -i dumpA dumpB
cp: overwrite 'dumpB'? n

 

  • -b : 복사될 파일이 이름이 이미 존재할 경우, 백업파일을 생성한다.
[root@Linux ~]# echo "Hi" > dumpA
[root@Linux ~]# echo "Hello" > dumpB
[root@Linux ~]# cp -b dumpA dumpB
cp: overwrite 'dumpB'? y

[root@Linux ~]# ls
dumpA  dumpB  dumpB~
[root@Linux ~]# cat *
Hi
Hi
Hello

# B 파일은 A 파일로 덮어씌워지고 백업파일인 B~가 생성된다.

 

  • -f : 복사 될 파일이 이미 존재 할 경우, 강제로 기존 파일을 지우고 복사.
[root@Linux ~]# echo "Hi" > dumpA
[root@Linux ~]# echo "Hello" > dumpB
[root@Linux ~]# cp -f dumpA dumpB
cp: overwrite 'B'? n

# -f옵션을 줘도 덮어쓰기 여부를 물어봄
[root@Linux ~]# alias
alias cp='cp -i'
...
# alias에 cp -i가 cp의 기본값으로 등록되어있다.
[root@Linux ~]# \cp -f A B 

# 명령어 앞에 \를 붙여 alias를 무시
[root@Linux ~]# cat *
Hi
Hi
# 질문하지 않고 파일을 덮어쓴다.

 

  • -r : 하위 디렉토리까지 모두 복사한다.
[root@linux ~]# mkdir -p tempA/tempB 
# 실습을 위해 A디렉토리에 B하위 디렉토리 생성
[root@linux ~]# ls *
tempA:

tempB

[root@Linux ~]# cp -r tempA tempA-
[root@linux ~]# ls *
tempA:

tempB

tempA-:
tempB

 

'리눅스-기초명령어 > 파일 시스템 관리' 카테고리의 다른 글

ln  (0) 2023.08.31
rm  (2) 2023.08.31
mv  (1) 2023.08.31
mkdir  (0) 2023.08.31
touch, file  (0) 2023.08.31