Linux 파일 복사

LinuxBeginner
지금 연습하기

소개

Linux 파일 시스템은 파일과 디렉토리를 관리하기 위한 강력한 도구를 제공합니다. 여러분이 정기적으로 사용할 가장 필수적인 명령어 중 하나는 cp 명령어입니다. 이 명령어는 파일과 디렉토리를 한 위치에서 다른 위치로 복사할 수 있게 해줍니다.

이 Lab 에서는 cp 명령어를 사용하여 개별 파일과 여러 파일을 한 번에 복사하는 방법을 배우게 됩니다. 이 기본적인 기술은 데이터 백업, 파일 시스템 구성, 그리고 Linux 환경을 효과적으로 관리하는 데 매우 중요합니다.

이 Lab 을 마치면, 다양한 옵션을 사용하여 cp 명령어를 자신 있게 활용하여 파일 복사 요구 사항을 충족할 수 있게 될 것입니다.

이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 초급 레벨의 실험이며 완료율은 93%입니다.학습자들로부터 97%의 긍정적인 리뷰율을 받았습니다.

디렉토리 및 파일 생성

파일 복사를 연습하기 전에, 작업할 디렉토리와 파일을 몇 개 생성해야 합니다. 이 단계에서는 디렉토리 구조와 몇 개의 샘플 파일을 생성합니다.

먼저, 작업할 프로젝트 디렉토리로 이동합니다:

cd ~/project

이제 샘플 파일을 포함할 data-files라는 디렉토리를 생성해 보겠습니다:

mkdir data-files

이 명령을 실행한 후에는 출력이 없을 것입니다. 이는 많은 Linux 명령어가 성공적으로 실행될 때의 일반적인 현상입니다.

다음으로, 이 새로운 디렉토리로 이동해 보겠습니다:

cd data-files

이제 복사 연습에 사용할 세 개의 빈 텍스트 파일을 생성해 보겠습니다:

touch apple.txt orange.txt grape.txt

touch 명령어는 파일이 존재하지 않으면 빈 파일을 생성하고, 이미 존재하면 수정 시간을 업데이트합니다.

현재 디렉토리의 내용을 나열하여 파일이 제대로 생성되었는지 확인해 보겠습니다:

ls -l

다음과 유사한 출력을 볼 수 있습니다:

total 0
-rw-r--r-- 1 labex labex 0 [date] apple.txt
-rw-r--r-- 1 labex labex 0 [date] grape.txt
-rw-r--r-- 1 labex labex 0 [date] orange.txt

출력은 세 개의 빈 파일이 성공적으로 생성되었음을 보여줍니다 (파일 크기는 0 바이트).

이 시점에서 디렉토리 구조는 다음과 같습니다:

~/project/
└── data-files/
    ├── apple.txt
    ├── orange.txt
    └── grape.txt

다음 단계에서 이러한 파일로 작업하며, 파일을 다른 위치로 복사하는 방법을 배우게 됩니다.

단일 파일 복사

이 단계에서는 cp 명령어를 사용하여 단일 파일을 한 위치에서 다른 위치로 복사하는 방법을 배우게 됩니다.

cp 명령어의 기본 구문은 다음과 같습니다:

cp [options] source_file destination

여기서:

  • source_file은 복사하려는 파일입니다.
  • destination은 파일을 복사하려는 위치입니다 (디렉토리 또는 새 파일 이름일 수 있습니다).

현재 data-files 디렉토리에 있습니다. 내용이 제대로 복사되었는지 확인하기 위해 apple.txt 파일에 몇 가지 내용을 추가해 보겠습니다:

echo "This is sample content for the apple file." > apple.txt

> 기호는 echo 명령의 출력을 파일로 리디렉션하여 기존 내용을 덮어씁니다.

이제 apple.txt 파일을 새 이름으로 상위 디렉토리 (~/project) 로 복사해 보겠습니다:

cp apple.txt ../apple_copy.txt

이 명령을 분석해 보겠습니다:

  • cp는 복사 명령어입니다.
  • apple.txt는 복사하려는 소스 파일입니다.
  • ../apple_copy.txt는 새 파일 이름 apple_copy.txt로 상위 디렉토리 (..) 에 복사하려는 것을 지정합니다.

파일 내용이 제대로 복사되었는지 확인해 보겠습니다:

cat ../apple_copy.txt

다음과 같은 출력을 볼 수 있습니다:

This is sample content for the apple file.

이는 파일이 내용과 함께 성공적으로 복사되었음을 확인합니다.

이 작업 후 디렉토리 구조는 다음과 같습니다:

~/project/
├── data-files/
│   ├── apple.txt
│   ├── orange.txt
│   └── grape.txt
└── apple_copy.txt

여러 파일 동시 복사

이 단계에서는 여러 파일을 한 번에 새 디렉토리로 복사하는 방법을 배우게 됩니다. 이는 여러 파일을 동시에 백업하거나 정리해야 할 때 특히 유용합니다.

먼저, 프로젝트 디렉토리로 다시 이동해 보겠습니다 (현재 data-files 디렉토리에 있으므로):

cd ~/project

이제 파일을 복사할 backup이라는 새 디렉토리를 생성해 보겠습니다:

mkdir backup

파일을 복사하기 전에, 나머지 텍스트 파일에 몇 가지 내용을 추가하여 복사 프로세스를 더 잘 확인할 수 있도록 하겠습니다:

echo "This is sample content for the orange file." > data-files/orange.txt
echo "This is sample content for the grape file." > data-files/grape.txt

이제 와일드카드 패턴을 사용하여 data-files 디렉토리에서 backup 디렉토리로 모든 텍스트 파일을 복사해 보겠습니다:

cp data-files/*.txt backup/

이 명령어에서:

  • cp는 복사 명령어입니다.
  • data-files/*.txt는 와일드카드 *를 사용하여 data-files 디렉토리에서 .txt 확장자를 가진 모든 파일과 일치시킵니다.
  • backup/은 파일을 복사하려는 대상 디렉토리입니다.

백업 디렉토리의 내용을 나열하여 모든 파일이 제대로 복사되었는지 확인해 보겠습니다:

ls -l backup/

다음과 유사한 출력을 볼 수 있습니다:

total 12
-rw-r--r-- 1 labex labex 41 [date] apple.txt
-rw-r--r-- 1 labex labex 41 [date] grape.txt
-rw-r--r-- 1 labex labex 42 [date] orange.txt

또한 복사된 파일 중 하나의 내용을 확인하여 데이터가 제대로 복사되었는지 확인해 보겠습니다:

cat backup/orange.txt

다음과 같은 출력을 볼 수 있습니다:

This is sample content for the orange file.

이는 모든 파일이 내용과 함께 백업 디렉토리로 성공적으로 복사되었음을 확인합니다.

이 작업 후 디렉토리 구조는 다음과 같습니다:

~/project/
├── data-files/
│   ├── apple.txt
│   ├── orange.txt
│   └── grape.txt
├── backup/
│   ├── apple.txt
│   ├── orange.txt
│   └── grape.txt
└── apple_copy.txt

고급 파일 복사 옵션

이 단계에서는 파일 복사 작업을 더욱 효율적으로 만들 수 있는 cp 명령어의 몇 가지 유용한 옵션에 대해 배우게 됩니다.

프로젝트 디렉토리로 다시 이동하는 것으로 시작해 보겠습니다:

cd ~/project

-p를 사용하여 파일 속성 유지

파일을 복사할 때 타임스탬프, 소유권 및 권한과 같은 원래 파일의 속성을 유지하고 싶을 수 있습니다. -p 옵션을 사용하면 이를 수행할 수 있습니다:

cp -p data-files/apple.txt backup/apple_preserved.txt

원본 파일과 보존된 복사본을 비교해 보겠습니다:

ls -l data-files/apple.txt backup/apple.txt backup/apple_preserved.txt

backup/apple_preserved.txt가 원본 파일과 동일한 타임스탬프를 가지고 있는 반면, -p 옵션 없이 이전에 복사한 backup/apple.txt는 더 새로운 타임스탬프를 가지고 있음을 알 수 있습니다.

-r을 사용하여 재귀적 복사 생성

디렉토리와 해당 내용을 함께 복사하려면 -r (재귀적, recursive) 옵션을 사용해야 합니다. 이를 시연하기 위해 중첩된 디렉토리 구조를 만들어 보겠습니다:

mkdir -p data-files/nested/deep
echo "This is a nested file." > data-files/nested/nested_file.txt
echo "This is a deep nested file." > data-files/nested/deep/deep_file.txt

이제 전체 data-files 디렉토리와 해당 내용을 새 위치로 복사해 보겠습니다:

cp -r data-files data-files-backup

디렉토리 구조와 파일이 제대로 복사되었는지 확인해 보겠습니다:

find data-files-backup -type f | sort

복사된 디렉토리 구조의 모든 파일을 나열하는 출력을 볼 수 있습니다:

data-files-backup/apple.txt
data-files-backup/grape.txt
data-files-backup/nested/deep/deep_file.txt
data-files-backup/nested/nested_file.txt
data-files-backup/orange.txt

-i를 사용한 대화형 모드

파일을 복사할 때 실수로 기존 파일을 덮어쓸 수 있습니다. -i (대화형, interactive) 옵션은 파일을 덮어쓰기 전에 프롬프트를 표시합니다:

cp -i data-files/apple.txt backup/apple.txt

backup/apple.txt가 이미 존재하므로 덮어쓸지 묻는 프롬프트가 표시됩니다:

cp: overwrite 'backup/apple.txt'?

y로 응답하여 덮어쓰거나 n으로 취소할 수 있습니다.

이러한 고급 옵션은 파일 관리 요구 사항에 대해 cp 명령어를 더욱 강력하고 유연하게 만듭니다.

요약

이 Lab 에서는 Linux cp 명령어를 사용하여 파일과 디렉토리를 효과적으로 복사하는 방법을 배웠습니다. 디렉토리와 파일을 생성하는 기본 사항부터 시작하여 개별 파일과 여러 파일을 한 번에 복사하는 방법으로 진행했습니다.

주요 개념:

  1. 기본 파일 복사: cp 명령어를 사용하여 한 위치에서 다른 위치로 단일 파일을 복사합니다.

    cp source_file destination
  2. 여러 파일 복사: 와일드카드를 사용하여 여러 파일을 하나의 명령어로 복사합니다.

    cp source_directory/*.txt destination_directory/
  3. 고급 옵션:

    • -p: 파일 속성 (타임스탬프, 권한 등) 유지
    • -r: 디렉토리와 해당 내용 재귀적으로 복사
    • -i: 실수로 덮어쓰기를 방지하기 위한 대화형 모드

이러한 파일 복사 기술은 Linux 에서 효과적인 파일 관리를 위한 기본입니다. 중요한 파일을 백업하거나, 디렉토리를 정리하거나, 애플리케이션을 배포하는 경우에도 cp 명령어는 Linux 툴킷에서 필수적인 도구가 될 것입니다.

Linux 명령줄은 파일 조작을 위한 많은 강력한 도구를 제공하며, cp 명령어는 그 중 하나일 뿐임을 기억하십시오. Linux 여정을 계속 진행하면서 이러한 도구를 결합하여 복잡한 파일 작업을 효율적으로 수행하는 방법을 발견하게 될 것입니다.