ファイルとディレクトリを扱う
한국어 원문으로 표시합니다.
목표
파일과 디렉터리를 만들고, 옮기고, 링크로 연결하고, 묶어서 백업하는 흐름을 손에 익힙니다. 특히 하드 링크와 심볼릭 링크가 무엇이 다른지 inode 번호로 직접 확인합니다.
왜 중요한가
리눅스에서 파일 이름은 실체가 아니라 실체를 가리키는 참조입니다. 디렉터리는 (이름, inode 번호) 짝의 목록일 뿐이고, 데이터의 진짜 주인은 inode 입니다. 이 구조를 알면 "왜 mv 는 1GB 파일도 즉시 끝나는가", "왜 rm 을 해도 용량이 안 줄어드는가", "왜 하드 링크는 다른 디스크로 못 거는가"가 한 번에 설명됩니다. 반대로 이 구조를 모르면 그 셋을 각각 별개의 이상 현상으로 외우게 됩니다.
단계
/root/work디렉터리를 만드세요./root/work/hello.txt를 만들고 첫 줄에hello labhub를 넣으세요./etc/hostname을/root/work/hostname으로 복사하세요. 내용이 원본과 완전히 같아야 합니다./root/work/logs/2026/08디렉터리를 한 번에 만드세요./root/work/logs/2026/08아래에app1.log부터app5.log까지 5개를 만들고, 그 파일들의 이름만(경로 제외) 한 줄에 하나씩 담은/root/work/loglist.txt를 만드세요.hello.txt를 가리키는 하드 링크/root/work/hello.hard와 심볼릭 링크/root/work/hello.link를 각각 만드세요./root/work/draft.txt를 만들어draft한 줄을 넣은 뒤,/root/work/logs/2026/08/draft.txt로 이동하세요./root/work/logs디렉터리 전체를/root/work/backup.tar.gz로 압축해 묶으세요.
참고
stat -c '%i %h %s' 파일로 inode 번호 / 링크 수 / 크기를 한 번에 볼 수 있습니다.ls -li의 첫 번째 열이 inode 번호입니다. 하드 링크끼리는 이 값이 같습니다.- 흔한 실수 1: 5번에서
find의 결과를 그대로 저장하면./logs/2026/08/app1.log같은 경로가 들어갑니다. 필요한 것은 파일 이름뿐입니다. - 흔한 실수 2: 7번에서
cp를 쓰면 원본이 남아 실패합니다. 이동은 데이터를 복사하지 않고 디렉터리 엔트리만 고칩니다.
작업 디렉터리 만들기
/root/work 디렉터리를 만드세요.
디렉터리를 만드는 명령은 mkdir 입니다. 경로는 /root/work 정확히 그대로.
첫 파일 만들기
/root/work/hello.txt 를 만들고 첫 줄에 hello labhub 를 넣으세요.
echo 의 출력을 파일로 보내거나(리다이렉션) vim 으로 직접 만들어도 됩니다.
시스템 파일 복사하기
/etc/hostname 을 /root/work/hostname 으로 복사하세요. 내용이 원본과 완전히 같아야 합니다.
cp 는 원본을 그대로 두고 새 파일을 만듭니다. 복사본은 원본과 내용이 완전히 같아야 합니다.
중첩 디렉터리 한 번에 만들기
/root/work/logs/2026/08 디렉터리를 한 번에 만드세요.
mkdir 은 기본적으로 부모 디렉터리가 없으면 실패합니다. 상위 경로까지 한 번에 만드는 옵션이 있습니다.
로그 파일 목록 뽑기
/root/work/logs/2026/08 아래에 app1.log 부터 app5.log 까지 5개를 만들고, 그 파일들의 이름만(경로 제외) 한 줄에 하나씩 담은 /root/work/loglist.txt 를 만드세요.
find 로 .log 파일을 찾되, 경로 전체가 아니라 파일 이름만 필요합니다. -printf 나 basename 을 떠올려 보세요.
하드 링크와 심볼릭 링크
hello.txt 를 가리키는 하드 링크 /root/work/hello.hard 와 심볼릭 링크 /root/work/hello.link 를 각각 만드세요.
ln 은 하드 링크, ln -s 는 심볼릭 링크입니다. stat 으로 inode 번호(%i)와 링크 수(%h)를 비교해 보세요.
파일 이동하기
/root/work/draft.txt 를 만들어 draft 한 줄을 넣은 뒤, /root/work/logs/2026/08/draft.txt 로 이동하세요.
복사(cp)가 아니라 이동(mv)입니다. 원본 자리에는 아무것도 남지 않아야 합니다.
로그 디렉터리 백업하기
/root/work/logs 디렉터리 전체를 /root/work/backup.tar.gz 로 압축해 묶으세요.
tar 로 묶고 gzip 으로 압축하는 옵션 조합이 필요합니다. logs 디렉터리 전체를 담아야 합니다.