IMG-LOGO
공지사항 :

Linux 파일과 디렉터리 관리

lmkfox - 2026-08-08 06:51:10 3 Views 0 Comment

Linux 파일과 디렉터리 관리 완벽 이해: 생성부터 압축, 링크까지 실무에서 바로 사용하는 방법

Linux 서버를 운영하다 보면 가장 많이 수행하는 작업 중 하나가 파일과 디렉터리를 관리하는 일입니다. 새로운 설정 파일을 만들고, 기존 파일을 백업하고, 디렉터리를 이동시키며, 오래된 로그를 삭제하는 작업은 시스템 엔지니어의 일상적인 업무입니다.

특히 서버 환경에서는 단순히 파일을 생성하고 삭제하는 것만으로 끝나지 않습니다. 파일의 권한과 소유자를 관리해야 하고, 여러 파일을 하나로 묶어 백업하거나 압축해야 하며, 심볼릭 링크와 하드 링크의 차이도 이해해야 합니다.

Linux의 파일 관리 방식을 제대로 이해하면 서버 장애 대응, 백업, 로그 관리, 애플리케이션 배포 등의 작업을 훨씬 효율적으로 수행할 수 있습니다.

이번 글에서는 Linux에서 파일과 디렉터리를 생성하고 복사하고 이동하고 삭제하는 기본적인 방법부터 tar, gzip을 이용한 압축과 해제, 심볼릭 링크와 하드 링크의 차이, 그리고 실무에서 자주 사용하는 파일 관리 방법까지 자세히 알아보겠습니다.


1. Linux에서 파일과 디렉터리의 관계

Linux에서는 모든 파일과 디렉터리가 하나의 계층 구조로 연결되어 있습니다.

최상위에는 / 루트 디렉터리가 존재하며 그 아래에 다음과 같은 디렉터리가 존재합니다.

/
├── boot
├── dev
├── etc
├── home
├── opt
├── proc
├── root
├── sys
├── tmp
├── usr
└── var

예를 들어 Nginx의 설정 파일은 일반적으로 /etc/nginx 아래에 존재하고 로그는 /var/log/nginx에 저장됩니다.

따라서 시스템 엔지니어는 파일 자체뿐만 아니라 파일이 어떤 디렉터리에 존재하는지까지 이해해야 합니다.


2. 디렉터리 생성하기

디렉터리를 생성할 때는 mkdir 명령어를 사용합니다.

mkdir project

실행하면 현재 디렉터리에 project라는 디렉터리가 생성됩니다.

여러 단계의 디렉터리를 한 번에 생성하려면 -p 옵션을 사용합니다.

mkdir -p /data/backup/2026/08

중간에 존재하지 않는 디렉터리가 있어도 필요한 디렉터리를 순서대로 생성합니다.

서버에서는 다음과 같은 구조를 만드는 경우가 많습니다.

mkdir -p /data/application/log
mkdir -p /data/application/backup
mkdir -p /data/application/config

이처럼 애플리케이션의 데이터, 로그, 백업, 설정 파일을 목적별로 분리하면 관리하기 편리합니다.


3. 파일 생성하기

가장 간단한 파일 생성 방법은 touch 명령어를 사용하는 것입니다.

touch test.txt

빈 파일이 생성됩니다.

여러 파일을 동시에 생성할 수도 있습니다.

touch file1.txt file2.txt file3.txt

touch는 이미 존재하는 파일에 사용할 경우 파일의 접근 시간과 수정 시간을 변경하는 용도로도 사용할 수 있습니다.


4. 파일 내용 생성과 수정

간단한 파일은 echo 명령으로 만들 수 있습니다.

echo "Hello Linux" > test.txt

파일 내용을 확인합니다.

cat test.txt

결과:

Hello Linux

>는 기존 내용을 덮어씁니다.

반면 >>는 기존 내용의 마지막에 새로운 내용을 추가합니다.

echo "Second Line" >> test.txt

다시 확인하면 다음과 같습니다.

Hello Linux
Second Line

실무에서는 로그 파일이나 설정 파일에 특정 내용을 추가할 때 >>를 사용할 수 있습니다.

단, 운영 중인 설정 파일을 직접 수정할 때는 반드시 기존 내용을 확인하고 백업하는 습관을 가져야 합니다.


5. 파일 복사하기

파일을 복사할 때는 cp 명령어를 사용합니다.

cp test.txt backup.txt

원본은 그대로 유지되고 backup.txt라는 복사본이 생성됩니다.

다른 디렉터리로 복사할 수도 있습니다.

cp test.txt /backup/

디렉터리를 복사할 때는 -r 옵션을 사용합니다.

cp -r project /backup/

실무에서는 설정 파일을 수정하기 전에 백업 파일을 만들어 두는 경우가 많습니다.

예를 들어 Nginx 설정을 변경한다면 다음과 같이 할 수 있습니다.

cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak

이렇게 하면 설정 변경에 문제가 발생했을 때 기존 파일로 되돌릴 수 있습니다.


6. 파일과 디렉터리 이동하기

mv 명령어는 파일과 디렉터리를 이동할 때 사용합니다.

mv test.txt /backup/

파일 이름을 변경하는 데도 mv를 사용합니다.

mv old.txt new.txt

디렉터리도 동일합니다.

mv project /data/

Linux에는 Windows의 별도 “이름 변경” 명령어가 존재하지 않기 때문에 파일 이름 변경도 mv를 이용합니다.


7. 파일 삭제하기

파일 삭제에는 rm 명령어를 사용합니다.

rm test.txt

디렉터리 안에 파일이 있는 경우 -r 옵션을 사용할 수 있습니다.

rm -r project

강제로 삭제할 때는 -f 옵션을 사용할 수 있습니다.

rm -rf project

하지만 rm -rf는 Linux 서버에서 특히 주의해야 하는 명령어입니다.

잘못된 경로에서 실행하면 매우 많은 파일이나 시스템 데이터를 한꺼번에 삭제할 수 있습니다.

삭제하기 전에 다음 명령어를 사용하는 습관이 중요합니다.

pwd
ls -al

현재 위치와 삭제 대상이 정확한지 확인한 후 삭제해야 합니다.


8. 파일 이름과 속성 확인하기

파일 관리를 위해서는 파일의 상태를 확인하는 방법도 알아야 합니다.

ls -l

파일 크기까지 보기 편하게 표시하려면 다음과 같이 합니다.

ls -lh

숨김 파일까지 확인하려면

ls -lah

특정 파일의 상세 정보를 확인하려면 stat을 사용할 수 있습니다.

stat test.txt

파일 크기, 권한, 소유자, 시간 정보를 확인할 수 있습니다.


9. 파일 권한과 소유자

Linux에서 파일을 관리할 때 반드시 알아야 할 개념이 권한입니다.

다음과 같은 결과를 예로 들어보겠습니다.

-rw-r--r-- 1 admin admin 1024 Aug 8 test.txt

여기서 앞부분의

-rw-r--r--

가 파일 권한입니다.

Linux 권한은 크게 세 가지 사용자 그룹으로 구분합니다.

  • User
  • Group
  • Others

그리고 각각에 대해 다음 권한을 설정합니다.

  • Read
  • Write
  • Execute

권한 변경은 chmod를 사용합니다.

chmod 644 test.txt

실행 권한을 추가하려면

chmod +x script.sh

파일 소유자를 변경하려면 chown을 사용합니다.

sudo chown admin:admin test.txt

실무에서 웹 서버나 애플리케이션을 운영할 때 파일 권한과 소유자가 잘못 설정되어 서비스가 정상적으로 동작하지 않는 경우가 많습니다.


10. 파일 압축이 필요한 이유

서버에서는 로그나 백업 파일이 계속 증가합니다.

예를 들어 다음과 같은 로그가 있다고 가정해 보겠습니다.

application.log
application.log.1
application.log.2
application.log.3

시간이 지나면 로그 파일의 크기가 수십 GB 이상으로 증가할 수도 있습니다.

이러한 파일을 압축하면 저장 공간을 절약하고 네트워크를 통한 파일 전송도 효율적으로 수행할 수 있습니다.

Linux에서는 tar, gzip, bzip2, xz 등의 도구를 사용합니다.


11. tar 명령어

tar는 여러 파일과 디렉터리를 하나의 파일로 묶는 데 사용합니다.

다음 명령어는 project 디렉터리를 project.tar 파일로 묶습니다.

tar -cvf project.tar project/

옵션의 의미는 다음과 같습니다.

  • c : Create
  • v : Verbose
  • f : File

파일을 해제하려면 다음과 같이 합니다.

tar -xvf project.tar

여기서 x는 Extract를 의미합니다.


12. tar.gz 압축

Linux 서버에서 가장 많이 사용하는 형식 중 하나가 tar.gz입니다.

압축

tar -czvf project.tar.gz project/

해제

tar -xzvf project.tar.gz

주요 옵션은 다음과 같습니다.

  • c : 압축 파일 생성
  • x : 압축 해제
  • z : gzip 사용
  • v : 처리 과정 출력
  • f : 파일 지정

예를 들어 서버 백업에서는 다음과 같이 사용할 수 있습니다.

tar -czvf backup_2026-08-08.tar.gz /data/application/

13. tar.xz와 tar.bz2

gzip 외에도 다른 압축 방식을 사용할 수 있습니다.

xz

tar -cJvf backup.tar.xz /data/

해제

tar -xJvf backup.tar.xz

bzip2

tar -cjvf backup.tar.bz2 /data/

해제

tar -xjvf backup.tar.bz2

일반적인 서버 관리에서는 호환성과 속도를 고려하여 tar.gz가 많이 사용됩니다.


14. 압축 파일 내부 확인하기

압축을 해제하기 전에 어떤 파일이 들어 있는지 확인할 수 있습니다.

tar -tzvf backup.tar.gz

이 방법은 매우 중요합니다.

운영 서버에서 압축 파일을 무작정 해제하면 현재 디렉터리에 동일한 파일이 존재하여 파일이 덮어써질 수 있기 때문입니다.

따라서 다음 순서를 권장합니다.

tar -tzvf backup.tar.gz

내용을 확인한 후

tar -xzvf backup.tar.gz

압축을 해제합니다.


15. 심볼릭 링크란?

Linux에서 자주 사용하는 기능 중 하나가 심볼릭 링크(Symbolic Link)입니다.

심볼릭 링크는 Windows의 바로가기와 비슷한 개념입니다.

다음과 같이 생성합니다.

ln -s /data/application/current /var/www/html

이제 /var/www/html을 통해 실제 /data/application/current 디렉터리에 접근할 수 있습니다.

심볼릭 링크는 실제 데이터가 저장된 위치를 가리키는 경로 정보입니다.


16. 심볼릭 링크의 실무 활용

웹 애플리케이션 배포에서 매우 유용하게 사용할 수 있습니다.

예를 들어 다음과 같은 구조를 만들 수 있습니다.

/data/app/
├── release-1.0
├── release-1.1
├── release-1.2
└── current -> release-1.2

웹 서버는 current를 바라보도록 구성합니다.

새로운 버전을 배포하면

ln -sfn /data/app/release-1.3 /data/app/current

심볼릭 링크만 변경하여 새로운 버전으로 전환할 수 있습니다.

이 방식은 서비스 배포와 롤백을 쉽게 만들어 줍니다.


17. 하드 링크란?

하드 링크는 심볼릭 링크와 다른 방식으로 동작합니다.

하드 링크는 동일한 inode를 가리키는 또 하나의 파일 이름입니다.

예를 들어

echo "Hello" > original.txt
ln original.txt hardlink.txt

두 파일은 동일한 데이터를 참조합니다.

확인

ls -li

두 파일의 inode 번호가 동일하게 표시됩니다.

반면 심볼릭 링크는 별도의 inode를 가지고 원본 파일의 경로를 저장합니다.


18. 심볼릭 링크와 하드 링크의 차이

구분

심볼릭 링크

하드 링크

생성 방법

ln -s

ln

inode

별도 inode

동일 inode

원본 삭제

링크 사용 불가

데이터 유지

디렉터리 링크

가능

일반적으로 불가

다른 파일 시스템

가능

불가능

실무 활용

매우 많음

제한적

가장 중요한 차이는 원본 파일을 삭제했을 때입니다.

심볼릭 링크는 원본 경로를 참조하기 때문에 원본이 삭제되면 링크가 끊어집니다.

반면 하드 링크는 동일한 inode를 참조하기 때문에 원래 이름을 삭제해도 다른 하드 링크를 통해 데이터에 접근할 수 있습니다.


19. 실무 파일 관리에서 자주 사용하는 명령어

파일 크기 확인

du -sh file

디렉터리별 용량 확인

du -sh *

파일 시스템 전체 용량

df -h

파일 검색

find /var/log -name "*.log"

최근 수정된 파일 검색

find /data -mtime -1

특정 문자열 검색

grep -R "ERROR" /var/log/

파일의 종류 확인

file test.txt

파일 개수 확인

find /data -type f | wc -l

이러한 명령어를 조합하면 대규모 서버에서도 파일을 효율적으로 관리할 수 있습니다.


20. 서버 운영에서 파일 관리 시 주의할 점

파일 관리에서 가장 중요한 것은 “삭제하기 전에 확인하는 습관”입니다.

특히 다음 명령어는 주의해야 합니다.

rm -rf

운영 서버에서는 다음 순서로 작업하는 것을 권장합니다.

첫 번째, 현재 위치를 확인합니다.

pwd

두 번째, 대상 파일을 확인합니다.

ls -lah

세 번째, 파일이 정말 필요한지 확인합니다.

네 번째, 필요한 경우 백업합니다.

cp file.conf file.conf.bak

다섯 번째, 작업 후 서비스 상태를 확인합니다.

설정 파일을 변경하는 경우에는 변경 전후 내용을 비교하는 것도 중요합니다.

diff old.conf new.conf

21. 로그와 백업 파일 관리

운영 서버에서 파일 관리가 특히 중요한 영역은 로그입니다.

예를 들어 /var/log에 로그가 계속 쌓이면 디스크 공간이 부족해질 수 있습니다.

디스크 사용량 확인

df -h

로그 디렉터리 용량 확인

du -sh /var/log/*

큰 파일 검색

find /var/log -type f -size +1G

이러한 점검을 통해 디스크 Full 장애를 사전에 발견할 수 있습니다.

다만 운영 중인 로그 파일을 임의로 삭제하는 것은 서비스와 로그 수집 방식에 영향을 줄 수 있으므로, 실제 운영 환경에서는 logrotate와 같은 로그 로테이션 정책을 함께 사용하는 것이 일반적입니다.


22. 시스템 엔지니어가 기억해야 할 파일 관리 원칙

Linux 파일 관리는 명령어를 많이 외우는 것보다 안전하게 작업하는 습관이 중요합니다.

첫째, 현재 위치를 항상 확인합니다.

pwd

둘째, 작업 대상의 목록과 속성을 확인합니다.

ls -lah

셋째, 중요한 설정 파일은 변경 전에 백업합니다.

cp config.conf config.conf.bak

넷째, 삭제하기 전에 대상을 다시 확인합니다.

다섯째, 운영 서버의 로그는 무작정 삭제하지 않고 로테이션 정책을 확인합니다.

여섯째, 중요한 데이터는 별도의 저장장치나 백업 서버에 보관합니다.

이러한 기본 원칙만 지켜도 실수로 인한 장애 가능성을 크게 줄일 수 있습니다.


마무리

Linux에서 파일과 디렉터리를 관리하는 능력은 시스템 엔지니어의 가장 기본적인 실무 역량입니다.

mkdirtouch로 디렉터리와 파일을 생성하고, cpmv를 이용해 데이터를 복사하고 이동하며, rm으로 불필요한 파일을 삭제할 수 있습니다.

또한 targzip을 이용하면 여러 파일을 하나의 압축 파일로 만들어 백업하거나 다른 서버로 효율적으로 전송할 수 있습니다.

심볼릭 링크와 하드 링크의 차이를 이해하는 것도 중요합니다. 특히 심볼릭 링크는 웹 서버와 애플리케이션 배포 환경에서 버전 관리와 무중단 전환을 구현하는 데 유용하게 활용됩니다.

하지만 Linux 파일 관리에서 가장 중요한 것은 명령어 자체보다 안전한 작업 방식입니다. 운영 서버에서는 항상 현재 위치와 작업 대상을 확인하고, 중요한 설정 파일은 백업한 후 변경하며, 삭제 작업은 신중하게 수행해야 합니다.

지금까지 배운 Linux 디렉터리 구조와 기본 명령어, 파일 관리 방법을 익혔다면 이제 실제 서버를 운영하기 위한 중요한 기반을 갖춘 것입니다..


댓글