안녕하세요!
오늘은 리눅스의 기초를 다루어보려고 합니다. 특히 파일 및 디렉토리 구조 관련하여 내용을 정리해보고자 합니다.
리눅스는 운영체제의 중요한 부분을 이루며, 파일과 디렉토리는 그 핵심입니다. 이 포스팅을 통해 리눅스 파일 시스템의 기본 개념과 구조를 자세하게 알아보도록 하겠습니다. 파일과 디렉토리가 어떻게 구성되어 있는지 이해하면 리눅스 환경의 작업을 보다 효율적으로 작업할 수 있습니다.
리눅스 파일 시스템의 계층 구조
리눅스 파일 시스템은 계층 구조로 구성되어 있으며, 모든 파일과 디렉토리가 이 계층 구조 안에 배치됩니다.
이러한 계층 구조를 이해하면 리눅스 환경에서 파일 및 디렉토리를 효과적으로 관리할 수 있습니다.
1. 루트 디렉토리 '/'
리눅스 파일 시스템의 시작점이자 최상위 디렉토리입니다. 모든 디렉토리와 파일은 루트 디렉토리를 기준으로 경로가 표현됩니다.
2. 하위 디렉토리
루트 디렉토리 아래에는 다양한 하위 디렉토리들이 존재합니다. 이들은 계층 구조를 형성하며, 각 디렉토리는 그 하위에 또 다른 하위 디렉토리나 파일을 가질 수 있습니다.
3. 파일 및 디렉토리
하위 디렉토리 안에는 실제 파일과 추가적인 하위 디렉토리가 위치할 수 있습니다. 파일과 디렉토리는 각각 고유한 이름을 가지며, 경로를 통해 접근할 수 있습니다.
리눅스 파일 시스템의 계층 구조는 트리와 유사한 형태를 가지고 있어서 디렉토리가 서브디렉토리를 가질 수 있으며, 이를 통해 파일과 디렉토리를 조직화할 수 있습니다. 이 계층 구조는 각 파일 및 디렉토리의 위치와 접근 방법을 정의합니다. 따라서 파일을 찾거나 조작할 때 경로를 사용하여 원하는 위치로 이동할 수 있게 됩니다.
루트 디렉토리와 하위 디렉토리
1. 루트 디렉토리 '/'
루트 디렉토리는 리눅스 파일 시스템의 시작점이자 최상위 디렉토리입니다. 모든 경로는 루트 디렉토리를 기준으로 표현되며, 따라서 루트 디렉토리는 모든 파일과 디렉토리의 상위 디렉토리입니다.
루트 디렉토리의 역할
- 모든 파일 및 디렉토리의 최상위 디렉토리 역할을 합니다.
- 시스템 전체의 기준점으로, 모든 파일의 경로는 루트 디렉토리로부터 시작합니다.
- 시스템에 필요한 중요한 파일과 디렉토리가 위치합니다.
2. 하위 디렉토리
하위 디렉토리는 루트 디렉토리 아래에 위치하는 디렉토리로, 하위 디렉토리도 마찬가지로 파일과 다른 하위 디렉토리를 가질 수 있습니다.
하위 디렉토리의 역할
- 디렉토리 구조를 조직화하고, 파일과 하위 디렉토리를 그룹화합니다.
- 파일과 디렉토리의 구조를 계층적으로 유지함으로써, 정리된 파일 시스템을 유지하고 관리합니다.
- 사용자나 시스템 프로세스가 파일에 접근하거나 조작할 수 있는 경로를 제공합니다.
하위 디렉토리의 구성은 파일을 분류하거나 특정 작업에 필요한 파일들을 그룹으로 묶는 데에 큰 도움이 됩니다. 따라서 파일을 보다 체계적으로 관리하고 탐색할 수 있게 해줍니다.
기본 파일 및 디렉토리 명령어
1. ls - 디렉토리 내용 조회
- ls: 현재 디렉토리 내용을 나열합니다.
- ls -l: 자세한 정보와 함께 파일과 디렉토리를 나열합니다.
- ls -a: 숨김 파일 및 디렉토리까지 모두 나열합니다.
2. cd - 디렉토리 변경
- cd [디렉토리 경로]: 해당 디렉토리로 이동합니다.
- cd ..: 상위 디렉토리로 이동합니다.
- cd ~: 홈 디렉토리로 이동합니다.
3. mkdir - 디렉토리 생성
- mkdir [디렉토리 이름]: 새 디렉토리를 생성합니다.
4. rm - 파일 및 디렉토리 삭제
- rm [파일 이름]: 파일을 삭제합니다.
- rm -r [디렉토리 이름]: 디렉토리를 재귀적으로 삭제합니다.
5. cp - 파일 복사
- cp [원본 파일] [목적지]: 파일을 복사합니다.
6. mv - 파일 이동 및 이름 변경
- mv [원본 파일/디렉토리] [목적지]: 파일을 이동하거나 이름을 변경합니다.
위와 같은 명령어들을 사용하면 리눅스에서 파일 및 디렉토리를 관리하고 작업할 수 있습니다.
추가로 옵션을 사용하여 더 자세한 정보를 얻거나 작업을 세부적으로 조정할 수 있습니다.
상대 경로와 절대 경로
상대 경로 (Relative Path)
상대 경로는 현재 위치에서부터 특정 파일이나 디렉토리까지의 경로입니다. 즉, 현재 위치를 기준으로 상대적인 위치를 나타내는 것입니다. 예를 들어 현재 디렉토리가 /home/user라면:
- documents/file.txt: 현재 디렉토리 내의 documents 디렉토리 안의 file.txt 파일을 가리킵니다.
- ../photos/pic.jpg: 상위 디렉토리의 photos 디렉토리 안의 pic.jpg 파일을 가리킵니다.
- ../../backup/data.txt: 상위 두 디렉토리 위에 있는 backup 디렉토리 안의 data.txt 파일을 가리킵니다.
절대 경로 (Absolute Path)
절대 경로는 루트 디렉토리부터 시작하여 특정 파일이나 디렉토리까지의 전체 경로를 나타냅니다. 따라서 어떤 위치에서든 동일한 파일이나 디렉토리를 찾을 수 있습니다. 예를 들어:
- /home/user/documents/file.txt: 루트 디렉토리에서부터 home 디렉토리의 user 디렉토리 안의 documents 디렉토리에 있는
file.txt 파일을 가리킵니다.
- /var/log/syslog: 루트 디렉토리에서부터 var 디렉토리의 log 디렉토리에 있는 syslog 파일을 가리킵니다.
- /usr/local/bin/app: 루트 디렉토리에서부터 usr 디렉토리의 local 디렉토리의 bin 디렉토리에 있는 app 파일을 가리킵니다.
상대 경로와 절대 경로는 파일이나 디렉토리를 지정하고 접근하는 데에 사용되며, 각각의 장단점이 있습니다. 절대 경로는 항상 명확한 위치를 가리키지만 길고 복잡할 수 있고, 상대 경로는 현재 위치를 기준으로 단순하게 표현되지만 다른 위치에서 다른 의미를 가질 수 있습니다.
숨김 파일과 디렉토리
숨김 파일과 디렉토리 (Hidden Files and Directories)
리눅스에서 파일과 디렉토리 이름이 .으로 시작하면 숨김 파일 또는 디렉토리로 간주됩니다. 이들은 기본적으로 ls 명령어로 디렉토리 내용을 나열할 때 표시되지 않습니다. 숨김 파일과 디렉토리는 보통 시스템 설정 파일이나 프로그램 설정과 관련된 파일들로 사용됩니다.
예를 들어, 보통 홈 디렉토리(~)에서는 많은 숨김 파일들을 찾을 수 있습니다.
.bashrc나 .profile 같은 파일은 사용자의 쉘 환경 설정을 포함하고 있습니다. 또한 프로그램 설정 디렉토리에는 .config 디렉토리와 그 안에 여러 설정 파일들이 숨겨져 있을 수 있습니다.
숨김 파일 확인
숨김 파일 및 디렉토리를 보려면 ls 명령어에 -a 옵션을 사용합니다.
ls -a
위와 같이 명령어를 사용하면 숨김 파일과 디렉토리도 모두 조회됩니다. 또는 직접 숨김 파일의 이름을 명시하여 조회할 수도 있습니다.
링크와 심볼릭 링크
링크 (Link)
링크는 다른 파일이나 디렉토리에 대한 참조를 만들어주는 파일입니다. 두 가지 주요 유형의 링크가 있습니다.
1. 하드 링크 (Hard Link)
- 원본 파일과 동일한 내용을 가리키는 링크입니다.
- 원본 파일과 동일한 inode 번호를 공유합니다.
- 원본 파일이 삭제되어도 링크는 원본 파일 내용에 접근할 수 있습니다.
- 디렉토리에는 하드 링크를 생성할 수 없습니다.
2. 심볼릭 링크 (Symbolic Link 또는 Symlink)
- 다른 파일이나 디렉토리를 가리키는 바로 가기 역할을 하는 링크입니다.
- 원본 파일의 경로를 가리키며, 원본 파일의 내용이나 inode 번호를 공유하지 않습니다.
- 원본 파일이 삭제되면 심볼릭 링크는 무효화됩니다.
- 디렉토리에도 심볼릭 링크를 생성할 수 있습니다.
심볼릭 링크 (Symbolic Link) 사용
심볼릭 링크는 ln -s 명령어를 사용하여 생성할 수 있습니다.
ln -s /path/to/original/file /path/to/symlink
위의 명령어는 /path/to/original/file을 가리키는 /path/to/symlink 심볼릭 링크를 생성합니다.
링크와 심볼릭 링크는 파일을 다른 위치에서 참조하거나 바로 가기 역할을 하는 데에 사용됩니다. 하드 링크는 동일한 내용의 파일을 복사하는 효과를 가지며, 심볼릭 링크는 원본 파일의 경로를 가리킵니다.
특수 디렉토리
특수 디렉토리 (Special Directories)
리눅스 파일 시스템에는 특수한 용도로 사용되는 몇 가지 특수 디렉토리들이 있습니다. 이들 디렉토리는 시스템의 여러 측면과 상호 작용하며 중요한 역할을 합니다.
1. /proc 디렉토리
- 가상 파일 시스템으로, 실행 중인 프로세스 및 커널 정보에 대한 정보를 제공합니다.
- 각 프로세스에 대한 디렉토리와 파일들이 존재하며, 이를 통해 프로세스 정보를 조회할 수 있습니다.
2. /sys 디렉토리
- 또 다른 가상 파일 시스템으로, 장치와 커널 모듈 관련 정보를 제공합니다.
- 시스템 하드웨어와 커널 모듈에 대한 정보를 쉽게 접근할 수 있게 합니다.
3. /dev 디렉토리
- 장치 파일들이 위치하는 디렉토리입니다.
- 하드웨어 장치들은 이 디렉토리의 파일로 표현되며, 이를 통해 디바이스에 접근할 수 있습니다.
이외에도 /run, /tmp, /mnt 등의 디렉토리도 특수 디렉토리로 분류될 수 있습니다. 이들 디렉토리들은 시스템의 다양한 부분과 상호 작용하며, 프로세스, 장치, 파일 시스템 등에 관한 정보를 제공합니다.
최종 정리
지금까지 리눅스 파일 및 디렉토리 구조에 대해 함께 알아보았습니다. 리눅스 파일 시스템은 루트 디렉토리부터 시작하여 계층적으로 구성되며, 각 디렉토리와 파일은 그 위치를 나타내는 경로를 가집니다. 상대 경로와 절대 경로를 활용하여 파일 및 디렉토리에 접근할 수 있으며, ls 명령어를 통해 내용을 나열하고 cd 명령어로 탐색할 수 있습니다.
또한 숨김 파일과 디렉토리는 .으로 시작하는 이름을 가지며, 시스템 설정 파일이나 프로그램 설정과 관련된 중요한 정보를 담고 있습니다. 링크는 다른 파일이나 디렉토리에 대한 참조를 만들어주는데, 하드 링크와 심볼릭 링크가 있으며 각각 다른 방식으로 참조합니다.
특수 디렉토리들인 /proc, /sys, /dev는 시스템의 프로세스 정보, 하드웨어 및 커널 모듈 정보에 대한 중요한 통로 역할을 합니다.
그럼 다음 포스팅에도 이어서 서버와 리눅스 관련된 주제로 정리해 보도록 하겠습니다.
감사합니다.
'Server > Linux' 카테고리의 다른 글
리눅스 파일 이동 mv 명령어 이해하기 (2) | 2023.09.15 |
---|---|
리눅스 파일 복사 cp 명령어 이해하기 (0) | 2023.09.08 |
다양한 리눅스 서버를 비교하고 선택하기! (0) | 2023.09.01 |
리눅스 프로세스 모니터링 관리하기 (0) | 2023.08.25 |
리눅스 사용자 및 권한 관리 이해하기 (0) | 2023.08.18 |