소개
이 실습에서는 파일 및 디렉토리 관리에 필수적인 도구인 Linux 의 강력한 cp 명령어를 살펴봅니다. 파일과 디렉토리를 효율적으로 복사하는 방법, 복사 과정을 사용자 정의하는 다양한 옵션의 이해, 그리고 이를 실제 시나리오에 적용하는 방법을 배우게 됩니다. 실습을 마칠 때쯤이면 일상적인 파일 관리 작업과 백업을 위해 cp를 능숙하게 사용할 수 있게 될 것입니다.
이 실습에서는 파일 및 디렉토리 관리에 필수적인 도구인 Linux 의 강력한 cp 명령어를 살펴봅니다. 파일과 디렉토리를 효율적으로 복사하는 방법, 복사 과정을 사용자 정의하는 다양한 옵션의 이해, 그리고 이를 실제 시나리오에 적용하는 방법을 배우게 됩니다. 실습을 마칠 때쯤이면 일상적인 파일 관리 작업과 백업을 위해 cp를 능숙하게 사용할 수 있게 될 것입니다.
cp 명령어는 Linux 에서 파일을 복제하는 데 가장 기본이 되는 도구입니다. 중요한 문서의 백업본을 만들어야 하는 간단한 상황부터 시작해 보겠습니다.
현재 프로젝트 디렉토리 (~/project) 에 important_report.txt라는 파일이 있습니다. 여러분의 작업은 이 파일의 백업본을 동일한 디렉토리에 생성하는 것입니다.
먼저, 프로젝트 디렉토리의 내용을 확인해 봅시다:
ls ~/project
목록에서 important_report.txt를 확인할 수 있습니다. 다른 파일들이 함께 보여도 걱정하지 마세요. 지금은 important_report.txt에만 집중하겠습니다.
이제 백업본을 생성해 보겠습니다:
cp ~/project/important_report.txt ~/project/important_report_backup.txt
이 명령어는 important_report.txt의 복사본을 동일한 디렉토리에 important_report_backup.txt라는 이름으로 생성합니다. 명령어의 각 부분은 다음과 같은 의미를 가집니다:
cp: 파일을 복사하는 명령어입니다.~/project/important_report.txt: 복사하려는 원본 파일입니다. ~ 기호는 사용자의 홈 디렉토리를 나타냅니다.~/project/important_report_backup.txt: 대상 파일입니다. 이름 끝에 "_backup"을 추가하여 새 파일을 만듭니다.복사가 성공적으로 완료되었는지 확인하기 위해 디렉토리 내용을 다시 확인합니다:
ls ~/project
이제 important_report.txt와 important_report_backup.txt가 모두 보여야 합니다. 새 파일이 보이지 않는다면 cp 명령어를 정확하게 입력했는지 다시 한번 확인해 보세요.
파일을 다른 위치로 복사해야 하는 경우가 자주 발생합니다. 음악 컬렉션을 정리하는 상황을 가정해 보겠습니다.
먼저, 음악 디렉토리가 존재하는지 확인합니다:
ls ~/project
목록에 music이라는 디렉토리가 보여야 합니다. 만약 없다면 설정 스크립트에서 생성될 것이니 걱정하지 마세요.
이제 프로젝트 디렉토리에 있는 음악 파일을 음악 디렉토리로 복사해 보겠습니다:
cp ~/project/favorite_song.mp3 ~/project/music/
이 명령어는 favorite_song.mp3 파일을 프로젝트 디렉토리에서 music 디렉토리로 복사합니다. 명령어를 분석해 보면 다음과 같습니다:
cp: 복사 명령어입니다.~/project/favorite_song.mp3: 복사할 원본 파일입니다.~/project/music/: 대상 디렉토리입니다. 끝에 붙은 슬래시 (/) 는 music이 디렉토리임을 cp 명령어에 명시적으로 알려주는 역할을 합니다.파일이 성공적으로 복사되었는지 확인하기 위해 음악 디렉토리의 내용을 확인합니다:
ls ~/project/music
목록에 favorite_song.mp3가 보여야 합니다. 보이지 않는다면 cp 명령어를 오타 없이 입력했는지, 그리고 원본 파일이 프로젝트 디렉토리에 실제로 존재하는지 확인하세요.
단일 명령어로 여러 파일을 동시에 복사할 수 있으며, 이는 일괄 작업 시 매우 유용합니다. 문서 컬렉션을 정리해 보겠습니다.
먼저, 문서 디렉토리가 있는지 확인합니다:
ls ~/project
목록에 documents 디렉토리가 보여야 합니다.
이제 여러 개의 텍스트 파일을 이 문서 디렉토리로 복사해 보겠습니다:
cp ~/project/report1.txt ~/project/report2.txt ~/project/notes.txt ~/project/documents/
이 명령어는 report1.txt, report2.txt, notes.txt 세 파일을 documents 디렉토리로 복사합니다. 작동 방식은 다음과 같습니다:
cp: 복사 명령어입니다.~/project/report1.txt ~/project/report2.txt ~/project/notes.txt: 복사할 원본 파일들입니다. 공백으로 구분하여 필요한 만큼 나열할 수 있습니다.~/project/documents/: 대상 디렉토리입니다.파일이 제대로 복사되었는지 확인합니다:
ls ~/project/documents
세 개의 파일이 모두 목록에 나타나야 합니다. 누락된 파일이 있다면 명령어에 오타가 없는지 확인하세요.
파일을 복사할 때 대상 위치에 이미 동일한 이름의 파일이 존재하는 경우가 있습니다. -i 옵션을 사용하면 cp 명령어가 대화형으로 동작하여, 기존 파일을 덮어쓰기 전에 사용자에게 확인을 요청합니다.
이 상황을 직접 재현해 보겠습니다.
먼저, 기존 파일의 내용을 확인합니다:
cat ~/project/test_file.txt
팁:
cat명령어가 생소하더라도 걱정하지 마세요. 나중에 자세히 설명해 드릴 것입니다.
화면에 "Original content"라고 표시될 것입니다.
이제 동일한 이름의 파일을 복사해 보겠습니다:
cp -i ~/project/new_test_file.txt ~/project/test_file.txt
확인 메시지가 나타나면 y를 입력하고 Enter 를 눌러 파일을 덮어씁니다. 덮어쓰고 싶지 않다면 n을 입력하고 Enter 를 누르면 됩니다.
-i 옵션은 "interactive(대화형)"의 약자입니다. 이는 기존 파일을 덮어쓰기 전에 확인 절차를 거치게 함으로써 실수로 데이터를 잃어버리는 것을 방지하는 안전장치 역할을 합니다.
이제 파일의 내용을 다시 확인해 봅니다:
cat ~/project/test_file.txt
덮어쓰기를 선택했다면 "New content"가 보일 것이고, 그렇지 않았다면 여전히 "Original content"가 보일 것입니다.
-r 옵션을 사용하면 디렉토리와 그 안에 포함된 모든 내용을 재귀적으로 복사할 수 있습니다. 이는 전체 디렉토리 구조를 백업할 때 특히 유용합니다.
웹사이트 디렉토리 전체를 백업해 보겠습니다:
cp -r ~/project/website ~/project/website_backup
이 명령어는 website 디렉토리와 그 안의 모든 파일을 website_backup이라는 새 디렉토리로 복사합니다. 각 부분의 의미는 다음과 같습니다:
cp: 복사 명령어입니다.-r: "recursive(재귀적)"의 약자입니다. 디렉토리와 그 내부 콘텐츠를 모두 복사하도록 지시합니다.~/project/website: 복사할 원본 디렉토리입니다.~/project/website_backup: 모든 내용이 복사될 대상 디렉토리입니다.백업이 성공적으로 생성되었는지 확인합니다:
ls -R ~/project/website_backup
전체 디렉토리 구조와 파일 목록이 나타나야 합니다. ls 명령어와 함께 사용된 -R 옵션은 디렉토리 내용을 재귀적으로 보여줍니다.
예상한 구조가 보이지 않는다면 cp -r 명령어를 정확히 입력했는지 확인하세요.
파일을 복사할 때 타임스탬프 (수정 시간) 나 권한과 같은 원본 파일의 속성을 그대로 유지하고 싶을 때가 있습니다. 이럴 때 -p 옵션을 사용합니다.
직접 확인해 보겠습니다.
먼저, 원본 파일의 속성을 확인합니다:
ls -l ~/project/old_file.txt
표시된 날짜와 시간을 메모해 두세요.
이제 속성을 보존하면서 파일을 복사합니다:
cp -p ~/project/old_file.txt ~/project/preserved_file.txt
-p 옵션은 "preserve(보존)"의 약자입니다. 원본 파일의 수정 시간, 접근 시간 및 권한 설정을 그대로 유지합니다.
두 파일의 속성을 비교해 봅니다:
ls -l ~/project/old_file.txt ~/project/preserved_file.txt
두 파일의 날짜와 시간이 동일하게 나타나야 합니다. 만약 다르다면 cp 명령어에 -p 옵션을 제대로 사용했는지 확인하세요.
와일드카드를 사용하면 특정 패턴에 따라 여러 파일을 한꺼번에 복사할 수 있습니다. 특정 확장자나 특정 명명 규칙을 가진 파일들만 골라 복사할 때 매우 유용합니다.
모든 텍스트 파일을 text_files 디렉토리로 복사해 보겠습니다:
cp ~/project/*.txt ~/project/text_files/
그리고 모든 PDF 파일을 pdf_files 디렉토리로 복사합니다:
cp ~/project/*.pdf ~/project/pdf_files/
여기서 사용된 와일드카드 (*) 의 의미는 다음과 같습니다:
*.txt: ".txt"로 끝나는 모든 파일과 일치합니다.*.pdf: ".pdf"로 끝나는 모든 파일과 일치합니다.이를 통해 파일 이름을 일일이 나열하지 않고도 여러 파일을 간편하게 복사할 수 있습니다.
파일이 올바르게 복사되었는지 확인합니다:
ls ~/project/text_files
ls ~/project/pdf_files
text_files 디렉토리에는 모든 .txt 파일이, pdf_files 디렉토리에는 모든 .pdf 파일이 들어 있어야 합니다.
이 실습을 통해 Linux cp 명령어의 핵심적인 사용법을 마스터했습니다. 여러분이 학습한 내용은 다음과 같습니다:
-i 옵션을 사용한 대화형 복사-r 옵션을 사용한 디렉토리 재귀적 복사-p 옵션을 사용한 파일 속성 보존이 실습에서 다루지 않았지만 유용한 추가 cp 옵션들은 다음과 같습니다:
-u: 원본 파일이 대상 파일보다 최신이거나 대상 파일이 없을 때만 복사합니다.-v: 실행 과정을 상세히 설명해 주는 상세 모드 (verbose) 입니다.-n: 기존 파일을 덮어쓰지 않습니다 (no clobber).-l: 파일을 복사하는 대신 하드 링크를 생성합니다.-s: 파일을 복사하는 대신 심볼릭 링크를 생성합니다.cp 명령어는 Linux 파일 관리에 있어 매우 강력한 도구입니다. 이제 여러분은 다양한 파일 복사 작업을 효율적이고 효과적으로 처리할 수 있는 능력을 갖추게 되었습니다.