개요
리눅스 환경에서 가장 기본적이면서도 중요한 파일 및 디렉터리 복사 명령어인 cp의 핵심 사용법을 정리합니다. 단순 복사뿐만 아니라 디렉터리 재귀 복사, 파일 속성 보존(-a), 최신 파일 업데이트(-u), 자동 백업 옵션까지 실무에서 필수적인 패턴을 다룹니다.
기본 파일 복사와 상세 진행 과정 확인 (-v, -i)
cp 명령어 실습을 위한 원본 및 대상 디렉터리를 생성하고 작업 경로로 이동하기 위해 mkdir -p ~/cp_practice/src ~/cp_practice/dest && cd ~/cp_practice 명령어를 실행합니다.

복사 실습에 사용할 테스트 텍스트 파일을 생성하기 위해 echo "Ubuntu cp command tutorial" > src/sample.txt 명령어를 실행합니다.

cp 명령어는 파일이나 디렉터리를 지정한 경로로 복사하는 리눅스의 기본 명령어입니다.-v 옵션을 추가하면 어떤 파일이 어느 경로로 복사되었는지 진행 과정을 터미널에 상세히 출력합니다.
⚙️ [주요 옵션]
-v : 파일 복사 진행 과정을 터미널 화면에 상세히 출력합니다.-i : 대상 파일이 이미 존재할 경우 덮어쓸지 여부를 확인하는 대화형 메시지를 표시합니다.-r : 디렉터리와 그 내부의 모든 하위 파일을 재귀적으로 복사합니다.-p : 원본 파일의 소유자, 그룹, 권한, 수정 시간 등 속성을 그대로 보존하며 복사합니다.-a : 원본 파일의 모든 속성과 링크 구조를 유지하며 복사하는 아카이브 모드를 실행합니다.-u : 대상 파일이 없거나 원본 파일이 더 최신인 경우에만 복사를 수행합니다.-b : 덮어쓰기 전 대상 파일의 백업본을 생성합니다.

대상 경로에 파일이 올바르게 복사되었는지 확인하기 위해 ls -l dest/sample_copy.txt 명령어를 실행합니다.

파일 갱신에 따른 복사 동작을 확인하기 위해 원본 파일의 내용을 변경하는 echo "Updated content" > src/sample.txt 명령어를 실행합니다.

-u 옵션을 추가하여 원본 파일이 대상 파일보다 최신인 경우에만 덮어쓰도록 복사를 수행합니다.
수정된 원본 파일이 더 최신 상태이므로 정상적으로 복사가 진행되었음을 터미널 메시지를 통해 확인할 수 있습니다.

디렉터리 전체 재귀 복사 및 속성 보존 (-r, -a)
디렉터리 구조를 시각적으로 확인하기 위해 apt-get update -qq && apt-get install -y tree 명령어로 관련 패키지를 설치합니다.

디렉터리 복사 실습을 위해 하위 설정 및 로그 폴더를 포함하는 project 디렉터리를 생성합니다.

복사 대상 파일 구성을 위해 설정 파일 app.env를 생성하고 내용을 작성합니다.

복사 실습에 포함될 로그 파일 app.log를 생성하고 텍스트를 입력합니다.

-r 옵션을 사용하여 project 디렉터리와 내부의 모든 하위 파일 및 폴더를 project_backup 경로로 재귀 복사합니다.

-a 옵션을 사용하여 원본 파일의 권한, 소유권, 타임스탬프 등의 메타데이터를 그대로 보존하며 project_archive 디렉터리로 복사합니다.

복사 작업이 정상적으로 수행되었는지 확인하기 위해 tree -L 3 ~/cp_practice 명령어로 3단계 깊이의 디렉터리 구조를 확인합니다.

최신 파일 갱신(-u)과 안전한 자동 백업 복사
자동 백업 및 파일 갱신 복사 실습을 진행할 대상 디렉터리를 생성하기 위해 mkdir -p ~/cp_practice/backup_demo/dest 명령어를 실행합니다.

복사 테스트에 사용할 원본 설정 파일 config.json을 생성하고 초기 내용을 입력하기 위해 echo "Version 1.0" > ~/cp_practice/backup_demo/config.json 명령어를 실행합니다.

생성한 원본 config.json 파일을 대상 디렉터리 경로로 복사합니다.
기본 cp 명령어를 사용하여 원본 파일과 동일한 이름으로 대상 경로에 초기 복사를 완료합니다.

파일 수정 시점에 따른 갱신 복사 동작을 확인하기 위해 1초 대기 후 원본 파일의 내용을 새로운 버전으로 수정합니다.

-u 옵션과 -v 옵션을 사용하여 원본 파일이 대상 파일보다 최신인 경우에만 덮어쓰도록 복사를 진행합니다.
수정된 원본 파일의 수정 시간이 더 최신 상태이므로 대상 파일에 정상적으로 덮어쓰기가 수행되었음을 터미널 메시지를 통해 확인할 수 있습니다.

--backup=numbered 옵션을 사용하여 덮어쓰기 전 기존 대상 파일을 번호 형태의 백업 파일로 자동 생성하며 복사를 수행합니다.
실행 결과 기존 대상 파일이 config.json.~1~ 백업본으로 보존된 후 새로운 내용으로 복사되었음을 확인할 수 있습니다.

백업 및 복사 결과가 대상 디렉터리에 정상적으로 반영되었는지 확인하기 위해 ls -la ~/cp_practice/backup_demo/dest 명령어를 실행합니다.
새롭게 복사된 config.json과 함께 이전 상태를 보존한 config.json.~1~ 백업 파일이 함께 존재하는 것을 확인할 수 있습니다.

다중 파일 일괄 복사와 대상 디렉터리 지정 (-t)
다중 파일 복사 실습을 진행할 목적지 디렉터리를 생성하기 위해 mkdir -p ~/cp_practice/bulk_demo/target 명령어를 실행합니다.

일괄 복사 테스트에 사용할 여러 개의 샘플 로그 파일을 생성하기 위해 touch ~/cp_practice/bulk_demo/report1.log ~/cp_practice/bulk_demo/report2.log ~/cp_practice/bulk_demo/report3.log 명령어를 실행합니다.

-t 옵션을 사용하여 목적지 디렉터리를 먼저 지정하고 와일드카드(*) 패턴에 해당하는 모든 로그 파일을 한 번에 복사합니다.-v 옵션이 적용되어 각 파일이 대상 디렉터리로 복사되는 진행 과정이 터미널에 상세하게 출력됩니다.

대상 디렉터리에 모든 로그 파일이 올바르게 복사되었는지 확인하기 위해 ls -l ~/cp_practice/bulk_demo/target 명령어를 실행합니다.
복사 대상이었던 세 개의 로그 파일이 목적지 경로에 정상적으로 존재하는 것을 확인할 수 있습니다.

모든 실습을 마친 후 사용했던 테스트 디렉터리와 임시 파일들을 깔끔하게 정리하기 위해 rm -rf ~/cp_practice 명령어를 실행합니다.

지금까지 우분투에서 기본 파일 복사부터 속성과 권한을 유지하는 백업 옵션까지 cp 명령어의 핵심 활용법을 간단하게 살펴보았습니다.
알려드린 다양한 옵션들을 상황에 맞게 활용하여 더욱 안전하고 효율적인 파일 관리를 진행해보시기 바랍니다.