cp 명령어 옵션 및 실행 시 일괄 덮어쓰기 설정 | yes, \(역슬래쉬) 2가지 설정

cp 명령어로 여러 파일을 복사하면 파일마다 덮어쓸지 묻는 확인이 나와 작업이 멈춥니다. cp 명령어는 Copy의 약자로 파일과 디렉토리를 복사하며, 이 글에서는 기본 사용법과 옵션, 확인 없이 일괄로 덮어쓰는 방법 2가지를 정리했습니다.
cp 명령어는 목적지에 같은 이름의 파일이 있으면 묻지 않고 덮어씁니다. 이를 막기 위해 [alias cp=’cp -i’]가 설정되어 있어, 덮어쓰기 전에 확인을 묻게 됩니다.
✅ 기본 사용 방법
기본 사용법은 아래와 같습니다.
cp -[옵션] <복사할 파일 또는 디렉토리> <목적지 경로 또는 파일 또는 디렉토리 경로>복사할 대상을 먼저 적고, 목적지나 새 이름을 그 뒤에 적습니다.

# 파일 > 파일 복사
cp file1 file2
# 파일 > 디렉토리 내 복사
cp file1 dir1/
# 2개 파일 > 디렉토리 내 복사
cp file1 file2 dir1/ testuser]# cp dir1/ dir2/
cp: -r not specified; omitting directory 'dir1/'
디렉토리 복사는 -r 또는 -R, 혹은 -a 옵션을 써야 합니다.
- -r/-R : 디렉토리와 하위 내용 재귀 복사
- -a : 속성 유지하며 재귀 복사 (내부에 -r 포함)
✅ cp 명령어 일괄 덮어쓰기 설정 2가지 방법
cp 명령어를 실행하면 [overwrite]를 묻는데, cp에 [cp -i] 별칭(alias)이 설정되어 있기 때문입니다.
cp -a
cp: overwrite 'messages_ori'? y
~]# alias cp
alias cp='cp -i'파일이 한두 개면 괜찮지만 여러 파일을 복사할 때는 파일마다 답해야 해서 번거롭습니다.
이럴 때는 아래 두 가지 방법으로 확인 없이 덮어쓸 수 있습니다.
yes | cp -ar /home/ ./첫 번째는 [yes |]를 앞에 붙이는 방법으로, 확인마다 y가 자동으로 입력되어 그대로 복사됩니다. 두 번째는 명령어 앞에 역슬래쉬[\]를 붙이는 방법으로, 별칭을 거치지 않고 원래 cp 명령어가 실행됩니다.
\cp -ar /home/ ./✅ cp 명령어 옵션 & 시뮬레이터
| 옵션 | 설명 | |
|---|---|---|
| -a | --archive원본 파일의 권한, 소유자, 그룹, 시간정보 등 모두 유지하며 복사[권한, 소유자, 그룹, 시간정보 등 모두 보존] + [-d : 심볼릭 링크 자체를 복사] + [-R : 디렉토리 재귀 복사] | |
| -b | 복사 대상이 이미 존재할 경우, 기존 파일을 백업 후 복사 | |
| -d | 원본이 심볼릭 링크일 경우, 링크 자체를 복사 | |
| -f | 대상 파일이 있을 경우 강제로 삭제하고 복사 | |
| -i | --interactive덮어쓰기 전에 사용자에게 확인 요청alias cp='cp -i' | |
| -l(소문자) | 하드 링크 형태로 복사 | |
| -P | 심볼릭 링크를 따라가지 않고 링크 그대로 복사 | |
| -p | 원본의 소유자, 그룹, 권한, 시간 정보를 그대로 보존 | |
| -r, -R | 디렉토리를 재귀적으로 복사 (하위 디렉토리와 파일까지 포함)-r 옵션은 POSIX 비표준이며 심볼릭 링크나 장치 파일 처리에 문제가 생길 수 있음. | |
| -s | 심볼릭 링크 형태로 복사 (원본을 절대 경로로 지정해야 함) | |
| -u | 대상 파일이 더 최신이거나 동일한 경우 덮어쓰지 않음 | |
| -v | 복사 진행 상황 출력 (verbose)복사가 완료되었다는 메시지를 보여주는 옵션 | |
| -x | 원본과 대상 파일의 파일 시스템이 다를 경우에는 복사하지 않는다. |
🔲 -a 옵션: 원본파일 속성 유지 & 하위 디렉토리(&파일) 복사
원본 파일의 속성을 유지하면서 하위 디렉토리까지 복사할 때는 [-a] 옵션만으로 충분합니다. 다만 스크립트나 자동화 도구에서 [-r]을 명시적으로 요구하는 경우가 있어, [-r]이나 [-R] 옵션을 함께 쓰기도 합니다.
testuser]# cp -a dir1 dir2
testuser]# ll dir*
dir1:
total 0
-rw-r--r-- 1 root root 0 Jun 8 14:11 file1
-rw-r--r-- 1 root root 0 Jun 8 14:15 file2
dir2:
total 0
-rw-r--r-- 1 root root 0 Jun 8 14:11 file1
-rw-r--r-- 1 root root 0 Jun 8 14:15 file2
testuser]# [-d : 심볼릭 링크 자체를 복사]+[-R : 디렉토리 재귀 복사]+[--preserve=all]
| --preserve=all 이 포함하는 항목 | 설명 |
|---|---|
| mode | 파일 권한 (rwx 등) |
| ownership | 소유자(user)와 그룹(group) |
| timestamps | 마지막 수정 시간 등의 타임스탬프 |
| links | 하드링크 개수 (같은 inode 공유 유지) |
| context | SELinux 보안 컨텍스트 |
| xattr | 확장 속성 (파일에 부가적으로 저장되는 메타데이터) |
| all | 위의 모든 항목을 한 번에 포함하는 축약형 |
🔲 -u 옵션: 추가 및 변경된 파일만 복사
- 대상 경로에 같은 이름의 파일이 없거나, 원본이 더 새로울 경우에만 복사
- 백업이나 동기화 시 자주 사용
testuser]# cp -u file1 file2
testuser]# ll file*
-rw-r--r-- 1 root root 0 Jun 8 14:11 file1
-rw-r--r-- 1 root root 0 Jun 8 14:30 file2
ℹ️ 제휴 안내
본 사이트의 콘텐츠에는 제휴 링크가 포함되어 있습니다. 방문자가 이 링크를 통해 상품 또는 서비스를 구매하면 본 사이트는 판매처로부터 수수료를 지급받습니다. 이 과정에서 구매자가 지불하는 금액(이벤트 할인 시 금액이 내려갑니다↓)은 오르지 않습니다. 게시된 가격·할인·재고 정보는 작성 시점 기준이며 실제와 다를 수 있으므로, 구매 전 판매처에서 최종 확인하시기 바랍니다. 상품 선정과 평가는 자체 기준에 따라 작성되며, 수수료 지급 여부가 소개 순서나 평가 내용에 영향을 주지 않습니다.