Computer >> 컴퓨터 >  >> 프로그래밍 >> Bash 프로그래밍

리눅스 cp 명령어 완벽 가이드: 파일·디렉터리 복사 방법과 실전 예제

이 튜토리얼에서는 리눅스 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

마무리

파일 복사는 매일 반복되는 필수 작업이며, 몇 번만 사용하면 문법이 금방 익숙해질 것입니다. 그 외 자주 쓰이는 리눅스 명령줄 작업이 궁금하다면 다른 관련 글들도 함께 확인해 보시기 바랍니다.