이 튜토리얼에서는 리눅스 cp 명령어를 사용하는 방법을 배웁니다. cp는 한 디렉터리에서 다른 디렉터리로 파일을 복사하는 기본 명령어입니다.
리눅스는 많은 개발자들이 선호하는 플랫폼입니다. 리눅스를 처음 접한다면 머지않아 파일을 한 곳에서 다른 곳으로 복사해야 할 일이 생길 것입니다. 이 글에서는 리눅스 cp 명령어의 기본 사용법과 함께 알아두면 유용한 팁과 트릭까지 자세히 소개합니다.
cp 명령어란?
cp 명령어의 목적은 아주 단순합니다. 바로 파일과 폴더를 한 위치에서 다른 위치로 복사하는 것입니다.
이 명령어는 리눅스 시스템에 연결된 모든 파일 시스템에서 동작하며, 원본 파일은 그대로 유지하면서 복사본의 이름 변경이나 덮어쓰기 등 다양한 선택지를 제공합니다.
매뉴얼 페이지에 따르면 cp 명령어의 기본 문법은 다음과 같습니다.
cp [OPTIONS] SOURCE DESTINATION
cp 명령어 주요 옵션
복사 명령어를 입력할 때, 이미 존재하는 파일을 어떻게 처리할지, 디렉터리 내용까지 포함할지 등을 지정할 수 있습니다. 자주 사용되는 옵션은 다음과 같습니다.
-b: 백업(backup) — 각 대상 파일의 백업본 생성
-f: 강제(force) — 기존 대상 파일을 열 수 없는 경우 삭제 후 다시 시도
-i: 대화형(interactive) — 덮어쓰기 전에 확인 요청
-n: 덮어쓰기 금지(no-clobber) — 기존 파일을 덮어쓰지 않음
-p: 속성 보존(preserve) — 권한, 소유권, 타임스탬프 유지
-r: 재귀(recursive) — 디렉터리와 그 하위 내용 전체 복사
-u: 업데이트(update) — 원본 파일이 대상보다 새롭거나 대상 파일이 없을 때만 복사
-v: 상세 출력(verbose) — 진행 중인 작업 내용 표시
cp로 파일·디렉터리 복사하기: 실전 예제
단일 파일 복사
cp 명령어 뒤에 원본 경로와 대상 경로를 공백 하나로 구분하여 입력하면 됩니다.
cp /path/to/source/file.txt /path/to/destination/file.txt
디렉터리와 하위 내용 전체 복사
cp 명령어에 -r(재귀) 옵션을 붙이고, 원본 디렉터리 경로와 대상 디렉터리 경로를 공백으로 구분하여 입력합니다. 원본 디렉터리 전체가 원래 이름 그대로 대상 디렉터리로 복사됩니다.
cp -r /path/to/source_directory /path/to/destination_directory
여러 개의 파일 또는 디렉터리 복사
여러 파일을 대상 디렉터리로 복사하려면 파일들을 공백으로 구분하여 나열하면 됩니다. 마지막에 지정된 경로가 대상으로 처리됩니다.
cp source_file_1.txt source_file_2.txt path/to/destination_directory
마찬가지로 -r(재귀) 옵션을 함께 사용하면 여러 디렉터리도 한 번에 복사할 수 있습니다.
cp -r source_directory_1/ source_directory_2/ /path/to/destination_directory
원본 디렉터리 안의 모든 파일과 디렉터리를 다른 디렉터리로 복사하려면 와일드카드(*)를 활용하면 됩니다.
cp -r /path/to/source/* /path/to/destination
특정 이름이나 확장자를 가진 파일 복사
와일드카드(*)를 이용한 파일명 패턴을 추가하면 특정 이름이나 확장자를 가진 파일만 골라서 복사할 수 있습니다. 다음은 원본 디렉터리의 모든 JPG 이미지를 대상 디렉터리로 복사하는 예제입니다.
cp /path/to/source/*.jpg path/to/source/*.JPG /path/to/destination_directory
심볼릭 링크(symlink) 파일 복사
심볼릭 링크 파일은 데이터를 직접 담고 있지 않고 디스크상의 다른 파일을 참조하는 파일입니다. cp 명령어는 기본적으로 심볼릭 링크를 제외하며, 이를 포함해서 복사하려면 -d 옵션을 사용합니다.
cp –d source_file_1.txt /path/to/destination_directory
7일 이내에 수정된 파일만 복사
cp 명령어는 다른 명령어와 조합하면 복사 대상을 더욱 세밀하게 제어할 수 있습니다. 다음 예제는 find 명령어로 7일 이내에 수정된 파일만 필터링한 뒤, cp 명령어를 실행해 해당 파일들만 복사합니다.
find /path/to/files* -mtime -7 -exec cp {} /mnt/nas/ \;
복사 결과 확인하기
ls 명령어를 사용하면 대상 디렉터리의 내용을 확인할 수 있습니다.
ls -hl /path/to/destination_directory
마무리
파일 복사는 매일 반복되는 필수 작업이며, 몇 번만 사용하면 문법이 금방 익숙해질 것입니다. 그 외 자주 쓰이는 리눅스 명령줄 작업이 궁금하다면 다른 관련 글들도 함께 확인해 보시기 바랍니다.