📝 파일의 압축과 묶기
📜 파일 압축
- 압축 파일 확장명은
xz
,bz2
,gz
,zip
,Z
등 xz
나bz2
압축률이 더 좋음
📜 파일 압축 관련 명령
xz
: 확장명 xz로 압축을 하거나 풀어준다.- ex)
xz [파일명]
- ex)
xz -d [파일명].xz
- ex)
bzip2
: 확장명 bz2로 압축을 하거나 풀어준다.- 압축 ->
bzip2 [파일명]
- 압축 풀기 ->
bzip2 -d [파일명].bz2
- 압축 ->
bunzip2
:bzip2 -d
옵션과 동일한 명령어gzip
: 확장명gz
로 압축을 풀거나 풀어준다.- 압축 ->
gzip [파일명]
- 압축 풀기 ->
gzip -d [파일명].gz
- 압축 ->
gunzip
:gzip -d
옵션과 동일한 명령어
📜 파일 묶기
- 리눅스(유닉스)에서는 '파일 압축'과 '파일 묶기'는 원칙적으로 별개의 프로그램으로 수행한다.
- 파일 묶기의 명령어는
tar
이며, 묶인 파일의 확장명도tar
이다.
📜 파일 묶기 명령(tar)
tar
: 확장명tar
로 묶음 파일을 만들어주거나 묶음을 풀어준다.- 동작: c(묶기), x(풀기), t(경로 확인)
- 옵션: f(파일), v(과정 보이기), J(tar + xz), z(tar + gzip), j(tar + bzip2)
- 사용 예
# tar cvf my.tar /etc/sysconfig/
-> 묶기# tar cvfJ my.tar.xz /etc/sysconfig/
-> 묶기 + xz 압축# tar xvf my.tar
-> tar 풀기# tar xvfJ my.tar.xz /etc/sysconfig/
-> xz 압축 해제 + tar 풀기
📝 파일 위치 검색
find [경로] [옵션] [조건] [action]
: 기본 파일 찾기- [옵션]:
-name
,-user
(소유자),-newer
(전, 후),-perm
(허가권),-size
(크기) - [action]:
-print
(디폴트),-exec
(외부 명령 실행)
- [옵션]:
- 사용 예
# find /etc -name "*.conf"
-> 확장명이conf
인 파일을 찾음# find /usr/bin -size +10k -size -100k
-> 크기가 10k 이상 100k 이하인 파일을 찾음# find /home -name "*.swp" -exec rm { } \;
-> 확장명이swp
인 파일을 찾아 삭제함
which [실행파일 이름]
: PATH에 설정된 디렉터리만 검색whereis [실행파일 이름]
: 실행 파일, 소스, man 페이지 파일까지 검색locate [파일 이름]
: 파일 목록 데이터베이스에서 검색
📝 CRON과 AT
📜 cron
- 주기적으로 반복되는 일을 자동으로 실행될 수 있도록 설정
- 관련된 데몬(서비스)은 'crond', 관련 파일은
/etc/crontab
- 해당 폴더 안에 특정 파일을 넣어놓으면 해당 파일들이 폴더에 따라 시간별, 일별, 주별, 월별로 자동 실행됨
- 사용 예
01 * * * * root run-parts /etc/cron.hourly
-> root 권한으로, 매시간 1분에/etc/cron.hourly
디렉터리 안에 있는 명령들을 자동으로 실행02 4 * * * root run-parts /etc/cron.daily
-> root 권한으로, 매일 04시 02분에/etc/cron.daily
디렉터리 안에 있는 명령들을 자동으로 실행03 4 * * 0 root run-parts /etc/cron.weekly
-> root 권한으로, 매주 일요일 04시 03분에/etc/cron.weekly
디렉터리 안에 있는 명령들을 자동으로 실행42 4 1 * * root run-parts /etc/cron.monthly
-> root 권한으로, 매월 1일 04시 42분에/etc/cron.monthly
디렉터리 안에 있는 명령들을 자동으로 실행
- 실습 예제로 cron을 활용하여 매월 15일 새벽 3시 1분에
/home
디렉터리와 그 하위 디렉터리를/backup
디렉터리에 백업하는 방법을 살펴보자 - 우선
systemctl status crond
명령어를 통해 현재 cron 서비스가 동작하고 있는지 확인해주었다.
- 이후
/etc/crontab
파일을 열어 아래와 같이 구문을 추가하고 저장해주었다.
- 다음으로
/etc/cron.monthly
디렉터리로 이동하여 실제 백업을 수행할 수 있는 실행 명령어를 저장하고 있는 스크립트를 작성하여 저장해준다.
- 각 구문의 의미는 다음과 같음
set $(date)
: 현재 년($1), 월($2), 일($3), 시($4), 분($5), 초($6)를 가져옴fname="backup-$2$3tar.xz"
: 파일 이름을backup-$2$3tar.xz
의 형식으로 지정- 여기서 $2, $3는 각각 월과 일을 나타냄
tar cfJ /backup/$fname /home
:home
디렉터리와 그 하위 디렉터리들을 묶고 xz로 압축하여backup
디렉터리에 저장
- 다만 아직 해당 파일에 대한 실행 권한이 없기 때문에 아래와 같이 실행 권한을 부여해주었다.
- 이후 실제로
backup
디렉터리를 만들어주고,systemctl restart crond
명령을 통해 cron 서비스를 재시작함으로써 우리가 위에서 작업한 설정 파일을 읽어오도록 해주었다.
- 마지막으로 결과를 확인해보기 위해 시스템 시간을 임의로 변경해주었다.
다시 표준 시간대로 되돌리기 위해선 'rdate -s time.bora.net'
- 이후 03시 1분이 된 것을 확인한 후
backup
폴더를 살펴보면 아래와 같이 백업 파일이 잘 저장된 것을 확인할 수 있다.
📜 at
- cron은 주기적으로 반복되는 작업을 예약하는 것이지만, at는 일회성 작업을 예약할 때 사용
- 사용 예
- 예약:
# at [시간]
- ex)
# at 3:00am tomorrow
-> 내일 새벽 3시 - ex)
# at 11:00pm January 30
-> 1월 30일 오후 11시 - ex)
# at now + 1 hours
-> 1시간 후
- ex)
at>
프롬프트에 예약 명령어 입력 후Enter
- 완료되면
Ctrl + D
- 확인:
# at -l
- 취소:
# atrm [작업 번호]
- 예약:
📝 네트워크 관련 필수 개념
- TCP/IP: 컴퓨터끼리 네트워크 상으로 의사소통을 하는 프로토콜 중 가장 널리 사용되는 프로토콜의 한 종류
- 호스트 이름(Hostname)과 도메인 이름(Domain name)
- 호스트 이름은 각각의 컴퓨터에 지정된 이름
- 도메인 이름(또는 도메인 주소)은
hanbit.co.kr
과 같은 형식
- IP 주소
- 각 컴퓨터의 랜카드에 부여되는 중복되지 않는 유일한 주소
- 4바이트로 이루어져 있으며, 각 자리는 0~255까지의 숫자
- ex) Server 가상머신의 IP 주소는 192.168.111.100
- 네트워크 주소
- 같은 네트워크에 속해 있는 공통된 주소(예: 192.168.111.0)
- 브로드캐스트(Broadcast) 주소
- 내부 네트워크의 모든 컴퓨터가 듣게 되는 주소
- 현재 주소의 제일 끝자리를 255로 바꾼 주소(C 클래스)
- 게이트웨이(Gateway), 라우터(Router)
- 네트워크 간에 데이터를 전송하는 컴퓨터 또는 장비
- VMware의 게이트웨이 주소는 192.168.111.2로 고정
- 넷마스크(Netmask) & 클래스(Class): 네트워크의 규모를 결정(예: 255.255.255.0 - C 클래스)
- DNS(Domain Name System) 서버(= 네임 서버) 주소
- URL을 해당 컴퓨터의 IP 주소로 변환해주는 서버
- 설정 파일은
/etc/resolv.conf
- VMware를 사용하면 VMware가 192.168.111.2번을 게이트웨이 및 DNS 서버로, 192.168.111.254를 DHCP 서버로 설정함
DHCP 서버는 자동으로 IP를 할당하는 역할을 수행
📜 네트워크 관련 명령어
nmtui
- 네트워크와 관련된 대부분의 작업을 이 명령어에서 수행
- 자동 IP 주소 또는 고정 IP 주소 사용 결정
- IP 주소, 서브넷 마스크, 게이트웨이 정보 입력
- DNS 정보 입력
- 네트워크 카드 드라이버 설정
- 네트워크 장치(ens160)의 설정
- 텍스트 기반으로 동작함
- 네트워크와 관련된 대부분의 작업을 이 명령어에서 수행
systemctl <start/stop/restart/status> NetworkManager
: 네트워크의 설정을 변경한 후에, 변경된 내용을 시스템에 적용시키는 명령어ifup [장치 이름]
및ifdown [장치 이름]
: 네트워크 장치를 On 또는 Off 시키는 명령어ifconfig [장치 이름]
: 장치의 IP 주소 설정 정보를 출력nslookup
: DNS 서버의 작동을 테스트하는 명령어ping [IP 주소 또는 URL]
: 해당 컴퓨터가 네트워크상에서 응답하는지를 테스트하는 명령어
📜 네트워크와 관련된 주요 파일
/etc/sysconfig/network
: 네트워크의 기본적인 정보가 설정되어 있는 파일/etc/sysconfig/network-scripts/ifcfg-ens160
: ens32 장치에 설정된 네트워크 정보가 모두 들어있는 파일/etc/resolv.conf
: DNS 서버의 정보 및 호스트 이름이 들어있는 파일/etc/hosts
: 현 컴퓨터의 호스트 이름 및 FQDN이 들어있는 파일
📝 네트워크 보안을 위한 SELinux
- SELinux (Security Enhanced Linux)는 보안에 취약한 리눅스를 보호하기 위해 탄생
- 강제(Enforcing), 허용(Permissive), 비활성(Disabled) 세 가지 레벨
- 설정 파일인
/etc/sysconfig/selinux
를 편집하거나,system-config-selinux
명령으로 설정 - 작동 방식
- '강제(Enforcing)'는 시스템 보안에 영향을 미치는 기능이 감지되면 아예 그 기능이 작동되지 않도록 시스템에서 막음
- '허용(Permissive)'은 시스템 보안에 영향을 미치는 기능이 감지되면 허용은 되지만 그 내용이 로그에 남음
- '비활성(Disabled)'은 SELinux를 사용하지 않음
'🐧 Linux > 이것이 리눅스다(CentOS 8)' 카테고리의 다른 글
[이것이 리눅스다(CentOS 8)] 06장. 하드디스크 관리와 사용자별 공간 할당(1) (0) | 2023.03.31 |
---|---|
[이것이 리눅스다(CentOS 8)] 04장. 필수개념과 명령어(4) (0) | 2023.03.28 |
[이것이 리눅스다(CentOS 8)] 04장. 필수개념과 명령어(2) (0) | 2023.03.26 |
[이것이 리눅스다(CentOS 8)] 04장. 필수개념과 명령어(1) (0) | 2023.03.25 |
[이것이 리눅스다(CentOS 8)] 03장. CentOS 리눅스 설치 (0) | 2023.03.24 |