LFCS — 리눅스 재단 시스템 관리자 · 필수 명령과 텍스트 처리 · 실습
파일 다루기와 find 표현식
목표
셸이 언제 무엇을 확장하는지, find 가 왜 표현식 언어인지를 손으로 확인한다. 링크·아카이브·패치까지 LFCS 필수 명령 영역을 한 바퀴 돈다.
왜 중요한가
이 영역은 시험 시간의 대부분을 잡아먹는 구간이다. 문제 자체는 어렵지 않은데, -perm 644 와 -perm -644 처럼 한 글자 차이로 결과가 달라지는 문법이 많아서 조용히 틀린다. 링크와 inode 를 이해하면 "지웠는데 용량이 안 줄어든다" 같은 운영 사고가 당연한 결과로 보이기 시작한다. 압축 형식 선택도 취향이 아니라 트레이드오프다 — xz 는 더 작게 만들지만 CPU 와 시간을 훨씬 많이 쓴다. 그래서 백업 주기와 복원 시간 요구가 형식을 결정한다.
단계
1. /root/lfcs-ess/ 아래에 src, archive, report, patch 네 디렉터리를 만드세요.
2. /root/lfcs-ess/src/ 에 data-01.txt 부터 data-06.txt 까지 여섯 파일을 만드세요. data-01 ~ data-03 은 각각 200000 바이트 이상, data-04 ~ data-06 은 각각 1 바이트 이상 1000 바이트 미만이어야 합니다.
3. data-01.txt 의 하드 링크 src/data-01.hard 와 심볼릭 링크 src/data-01.sym 을 만드세요. 그리고 report/inode.txt 에 inode=<data-01.txt 의 inode 번호> 와 links=<링크 수> 두 줄을 적으세요.
4. src/ 바로 아래에서 이름이 .txt 로 끝나면서 크기가 100k 를 넘는 일반 파일의 이름만 report/big.txt 에 한 줄씩 적으세요.
5. data-05.txt 와 data-06.txt 의 권한을 600 으로 바꾸고, src/ 바로 아래에서 권한이 정확히 600 인 일반 파일의 이름을 report/perm600.txt 에 적으세요.
6. data-06.txt 의 수정 시각을 30일보다 더 오래전으로 바꾸고, src/ 바로 아래에서 -mtime +30 에 걸리는 파일의 이름을 report/old.txt 에 적으세요.
7. src/ 디렉터리를 archive/src.tar.gz 와 archive/src.tar.xz 두 아카이브로 만들고, report/compress.txt 에 gzip=<바이트 크기>, xz=<바이트 크기>, smaller=<gzip 또는 xz> 세 줄을 적으세요.
8. patch/conf-old.txt 에 listen=8080, workers=2, loglevel=info, timeout=30 네 줄을, patch/conf-new.txt 에 listen=9090, workers=4, loglevel=info, timeout=30 네 줄을 만드세요. 두 파일의 차이를 통합 형식으로 patch/conf.patch 에 저장한 다음, conf-old.txt 의 사본인 patch/conf-target.txt 에 그 패치를 적용해 conf-new.txt 와 같아지게 하세요.
참고
- 정해진 크기의 파일은
head -c 200000 /dev/urandom처럼 앞부분만 잘라 만들면 빠릅니다. find의-printf에%f를 쓰면 경로가 아니라 파일 이름만 나옵니다.-size +100k와-size +100은 단위가 다릅니다. 뒤쪽은 512바이트 블록 수입니다.- 흔한 실수: 8단계에서 패치를 원본에 걸어 버리면
conf-old.txt검증이 깨집니다. 반드시 사본에 적용하세요.
단계 8개
- 작업 디렉터리 네 개 만들기
- 크기가 다른 파일 여섯 개 준비
- 하드 링크·심볼릭 링크와 inode
- 크기 조건으로 찾기
- 권한 조건으로 찾기
- 수정 시각 조건으로 찾기
- gzip 과 xz 압축률 비교
- 패치 만들고 사본에 적용하기