디지털 아키텍트

LinuxBeginner
지금 연습하기

소개

LabEx Corporation 의 2 일 차 실습에 오신 것을 환영합니다! 어제 시스템 정찰을 성공적으로 마친 뒤, Project Phoenix 의 디지털 아키텍트로 승진했습니다. 개발팀은 꼼꼼한 문서화와 세심한 작업에 깊은 인상을 받았습니다.

하지만 즉시 해결해야 할 긴급한 문제가 있습니다. 이전 시스템 관리자가 갑자기 자리를 떠났고, Project Phoenix 의 파일은 완전히 뒤섞여 있습니다. 소스 코드, 문서, 구성 파일이 하나의 디렉터리에 흩어져 있습니다. 중요한 설정은 백업이 없어 위험한 상태이며, 어제 조사한 개발 서버에는 오래된 로그 파일이 쌓여 있습니다.

여러분의 임무는 개발팀의 성장에 맞춰 사용할 수 있는 깔끔하고 논리적이며 효율적인 파일 구조를 설계하는 것입니다. 적절한 디렉터리를 만들고, 파일을 정리하고, 백업을 안전하게 보관하고, 오래된 데이터를 정리해 Project Phoenix 가 성공하는 데 필요한 기반을 마련합니다.

수석 개발자 Sarah Chen 은 이 혼란을 체계적이고 전문적인 개발 환경으로 바꿔 줄 여러분을 믿고 있습니다. 오늘의 작업은 팀의 생산성과 프로젝트 일정에 직접적인 영향을 줍니다. 시작하겠습니다!

프로젝트 디렉터리 구조 설정

첫 번째 작업은 phoenix_project 디렉터리 안에 적절한 디렉터리 구조를 만드는 것입니다. 잘 정의된 구조는 파일 유형을 분리하므로 프로젝트를 탐색하고 유지 관리하기가 쉬워집니다.

작업

  1. ~/project/phoenix_project 디렉터리로 이동합니다.
  2. 다음 세 개의 하위 디렉터리를 만듭니다. 소스 코드용 src, 구성 파일용 config, 문서용 docs입니다.

요구 사항

  • 새 디렉터리는 모두 ~/project/phoenix_project 디렉터리 안에 만들어야 합니다.
  • 디렉터리 이름은 정확히 src, config, docs여야 합니다.
  • 하나의 명령으로 세 디렉터리를 동시에 만들어야 합니다.

예시

이 단계를 완료하면 디렉터리 구조는 다음과 같아야 합니다.

~/project/phoenix_project/
├── config/
├── docs/
├── src/
├── README.md
├── config.json
└── main_app.py

~/project/phoenix_project 디렉터리에서 ls -F를 실행하면 다음과 같이 표시되어야 합니다.

README.md  config/  config.json  docs/  main_app.py  src/

디렉터리 이름 뒤의 / 기호는 해당 항목이 파일이 아니라 디렉터리임을 나타냅니다.

힌트

  • 현재 디렉터리를 변경하려면 cd 명령을 사용합니다.
  • 새 디렉터리를 만들 때는 mkdir 명령을 사용합니다.
  • mkdir에는 여러 인수를 지정해 한 번에 여러 디렉터리를 만들 수 있습니다.

프로젝트 파일 탐색 및 생성

새 디렉터리 구조를 만들었으므로 이제 기존 프로젝트 파일을 각각 지정된 위치로 이동합니다. 이렇게 하면 프로젝트 루트가 깔끔해지고 파일을 쉽게 찾을 수 있습니다.

작업

  1. main_app.py 파일을 src 디렉터리로 이동합니다.
  2. config.json 파일을 config 디렉터리로 이동합니다.
  3. README.md 파일을 docs 디렉터리로 이동합니다.

요구 사항

  • 파일을 이동하기 전에 ~/project/phoenix_project 디렉터리에 있는지 확인합니다.
  • 각 파일을 이동할 때 mv 명령을 사용합니다.

예시

파일을 이동한 뒤 프로젝트 구조는 다음과 같이 정리되어야 합니다.

~/project/phoenix_project/
├── config/
│ └── config.json
├── docs/
│ └── README.md
└── src/
└── main_app.py

프로젝트 루트인 ~/project/phoenix_project에서 ls -F를 실행하면 디렉터리만 표시되어야 합니다.

config/  docs/  src/

각 파일은 이제 적절한 하위 디렉터리에 있어야 합니다.

  • ls src/main_app.py
  • ls config/config.json
  • ls docs/README.md

힌트

  • mv 명령은 파일과 디렉터리를 이동하거나 이름을 변경할 때 사용합니다.
  • 기본 문법은 mv [SOURCE] [DESTINATION]입니다.
  • 예를 들어 documents라는 디렉터리로 file.txt를 이동하려면 mv file.txt documents/를 실행합니다.

중요한 구성 파일 백업

config.json 파일에는 Project Phoenix 의 중요한 설정이 들어 있습니다. 파일을 수정하기 전에 백업 복사본을 만드는 것은 중요한 안전 조치입니다. 다음 작업은 이 파일의 복사본을 만드는 것입니다.

작업

  1. config.json 파일의 백업 복사본을 만듭니다.

요구 사항

  • 백업 파일은 ~/project/phoenix_project/config/ 디렉터리 안에 만들어야 합니다.
  • 백업 파일 이름은 정확히 config.json.bak이어야 합니다.

예시

백업을 만든 뒤 config 디렉터리에는 다음 두 파일이 있어야 합니다.

~/project/phoenix_project/config/
├── config.json
└── config.json.bak

~/project/phoenix_project/config/ 디렉터리에서 ls를 실행하면 다음과 같이 표시되어야 합니다.

config.json  config.json.bak

.bak 파일은 원본을 그대로 복사한 파일이므로 두 파일의 내용은 동일해야 합니다.

## These commands should show identical output
cat config.json
cat config.json.bak

힌트

  • 파일과 디렉터리를 복사할 때는 cp 명령을 사용합니다.
  • 문법은 cp [SOURCE] [DESTINATION]입니다.
  • 원본 파일의 전체 경로와 새 백업 파일의 전체 경로를 지정해야 합니다.

팀 공유 리소스 재구성

문제의 또 다른 부분을 발견했습니다. ~/project/shared_docsshared_docs라는 디렉터리가 있습니다. 이 디렉터리에는 프로젝트 문서와 함께 관리해야 하는 중요한 팀 지침과 API 사양이 들어 있습니다. 이 디렉터리를 기본 프로젝트 구조에 통합해야 합니다.

작업

  1. shared_docs 디렉터리 전체와 그 안의 모든 내용을 ~/project/phoenix_project/docs/ 디렉터리로 이동합니다.

요구 사항

  • 원본 디렉터리는 ~/project/shared_docs입니다.
  • 대상 경로는 ~/project/phoenix_project/docs/입니다.
  • 디렉터리 안의 내용만이 아니라 디렉터리 전체를 이동해야 합니다.

예시

shared_docs 디렉터리를 이동한 뒤 문서 구조는 다음과 같아야 합니다.

~/project/phoenix_project/docs/
├── README.md
└── shared_docs/
├── api_spec.doc
└── team_guidelines.txt

~/project/phoenix_project/docs/ 디렉터리에서 ls를 실행하면 다음과 같이 표시되어야 합니다.

README.md  shared_docs/

shared_docs 디렉터리에는 원래 파일이 모두 있어야 합니다.

ls ~/project/phoenix_project/docs/shared_docs/
api_spec.doc  team_guidelines.txt

원래 위치인 ~/project/shared_docs는 더 이상 존재하지 않아야 합니다.

힌트

  • mv 명령은 파일과 마찬가지로 디렉터리에도 사용할 수 있습니다.
  • 디렉터리를 이동하면 디렉터리 안의 모든 내용도 자동으로 함께 이동합니다.
  • 명령은 mv [SOURCE_DIRECTORY] [DESTINATION_DIRECTORY]와 같은 형태입니다.

오래된 로그 파일 보관 및 삭제

마지막 작업은 정리 작업입니다. ~/project/logs 디렉터리에 로그 파일이 쌓이고 있으며, 2023 년에 생성된 로그는 일상적인 운영에 더 이상 필요하지 않습니다. 공간을 절약하고 디렉터리를 깔끔하게 유지하려면 이 오래된 로그를 하나의 아카이브 파일로 압축한 다음 원본 파일을 삭제해야 합니다.

tar 명령 이해하기

tar 명령은 아카이브 파일을 만들고 관리하는 강력한 Linux 도구입니다. tar는 원래 자기 테이프에 데이터를 기록하도록 설계되었기 때문에 "Tape Archive"의 약자였지만, 오늘날에는 디스크에 압축 아카이브 파일을 만들 때 주로 사용합니다.

tar를 사용하면 여러 파일을 하나의 파일 (아카이브) 로 묶을 수 있으며, 필요에 따라 공간을 절약하기 위해 이 아카이브를 압축할 수도 있습니다. 가장 일반적인 압축 형식은 gzip 이며, 파일 이름에 .gz 확장자가 추가됩니다.

tar 명령은 동작을 제어하기 위해 여러 옵션 (플래그) 을 사용합니다.

  • c: 새 아카이브 생성
  • z: gzip 을 사용해 아카이브 압축
  • f: 아카이브 파일 이름 지정

따라서 tar -czf archive.tar.gz file1 file2file1file2를 포함하는 archive.tar.gz라는 새 압축 아카이브를 만듭니다.

작업

  1. ~/project/logs 디렉터리로 이동합니다.
  2. 2023 년의 모든 로그 파일을 포함하는 old_logs.tar.gz라는 압축 tar 아카이브를 만듭니다.
  3. 아카이브가 성공적으로 생성되면 방금 보관한 2023 년 로그 원본 파일을 삭제합니다.

요구 사항

  • 최종 아카이브 이름은 정확히 old_logs.tar.gz여야 합니다.
  • 아카이브는 ~/project/logs 디렉터리에 있어야 합니다.
  • 이름에 2023이 포함된 로그 파일만 아카이브에 포함한 뒤 삭제해야 합니다.
  • 2024 년 로그 파일 (app_2024-05-01.log) 은 아카이브에 포함하지 말고 삭제하지도 않아야 합니다.

예시

아카이브를 만들기 전 로그 디렉터리에는 다음 파일이 있습니다.

~/project/logs/
├── app_2023-01-15.log
├── app_2024-05-01.log
└── db_2023-02-20.log

아카이브 작업을 완료한 뒤 로그 디렉터리는 다음과 같아야 합니다.

~/project/logs/
├── app_2024-05-01.log
└── old_logs.tar.gz

~/project/logs/ 디렉터리에서 ls를 실행하면 다음과 같이 표시되어야 합니다.

app_2024-05-01.log  old_logs.tar.gz

힌트

  • 아카이브를 만들 때는 tar 명령을 사용합니다. -czf 옵션 조합은 강력한 기능을 제공합니다. c는 생성, z는 gzip 을 사용한 압축, f는 파일 이름 지정을 의미합니다.
  • 와일드카드 (*) 를 사용해 패턴에 맞는 여러 파일을 선택할 수 있습니다. 예를 들어 *_2023-*.log는 이름에 _2023-가 포함되고 .log로 끝나는 모든 파일과 일치합니다.
  • 파일을 제거 (삭제) 할 때는 rm 명령을 사용합니다. 와일드카드와 함께 사용할 때는 주의해야 합니다.

요약

훌륭합니다, 디지털 아키텍트! Project Phoenix 를 혼란스러운 상태에서 체계적으로 정리된 개발 환경으로 성공적으로 바꿨습니다. Sarah Chen 과 개발팀 전체가 여러분의 작업에 만족하고 있습니다. 논리적인 디렉터리 구조를 만들고, 중요한 파일을 정리하고, 백업으로 구성을 보호했으며, 오래된 로그를 아카이브해 시스템 리소스도 정리했습니다.

이러한 기본 Linux 명령줄 기술인 mkdir, mv, cp, tar, rm은 전문적인 시스템 관리의 핵심입니다. 오늘 수행한 정리 작업은 Project Phoenix 의 개발 수명 주기 전체를 지원할 탄탄한 기반을 마련했습니다.

이제 개발팀은 제대로 구성된 환경에서 효율적으로 작업할 수 있습니다. 내일은 팀에서 처음 기술 문제를 마주하게 되면서 Log Investigator 라는 새로운 역할을 맡게 됩니다. 오늘 익힌 체계적인 정리 방식은 문제를 해결할 때 큰 도움이 될 것입니다!

✨ 솔루션 확인 및 연습✨ 솔루션 확인 및 연습✨ 솔루션 확인 및 연습✨ 솔루션 확인 및 연습✨ 솔루션 확인 및 연습