Study/리눅스

리눅스 10일차(yum/압축/묶기/cron(작업예약)/파티션 추가/파티션 분활/mount/fstab)

됵이 2022. 7. 20. 00:08

yum 과 RPM차이 

RPM (Redhat Package Manager)

초기에는 패키지 설치시 사용자가 직접 컴파일을 한 후에 수동으로 설치를 해야 했지만 tar, gzip으로 묶여있던 소스 파일을 일일이 컴파일 하기에는 많은 시간이 필요 하기에 redhat에서 패키지 관리 프로그램을 개발했다

=>windows 에서 setup.exe와 같다

특징 

  • yum과 동일하게 인스톨 프로그램
  • 인터넷이 연결되지 않은 상태에서도 설치가 가능 하지만 확장자가 .rpm 패키지 프로그램이 필요하다
  • 의존성이 단점이다. 
    • 의존성 : A를 설치하기 위해서는 a와 b가 선행으로 설치 되어야 한다. 
  • 사용 명령어
    • rpm -Uvh [패키지명] : 설치 U(업데이트) v(보여달라) h(#해쉬태그로)
    • rpm -e [패키지명] : 삭제
    • rpm -qa [패키지명] : 설치 됬는지 확인
    • rpm -qi [패키지명] : 상세 정보

 

YUM (Yellowdog Updater Modified)

rpm에서 있었던 의존성 문제를 해결하고자 나온 프로그램 이다.

의존성을 해결 하였으므로 A를 설치하기 위해 a와 b를 자동으로 설치 해준다. 

rpm은 인터넷이 안되도 설치가 가능 하지만 yum은 인터넷이 되어야 설치가 가능하다 

특징 

  • 인스톨 프로그램이다
  • 인터넷에서 바로 설치가 가능(패키지 프로그램이 필요 없다. )
  • 의존성x
  • 사용 명령어
    • yum install [패키지명] : 설치
      yum install [패키지명]
      • yum remove [패키지명] : 삭제
      • yum update [패키지명] : 업데이트
      • yum list [패키지명] : 목록
      • yum list installed [패키지명] : 패키지 설치 여부 확인
      • yum clean all : 캐시 되어있는 것을 모두 지움
      • yum info [패키지 or 그룹] : 패키지 or 그룹의 패키지를 자세하게 확인
      • yum localinstall [패키지] : 로컬에 패키지 설치
      • yum provides [filepath명] : 파일이 제공하는 패키지 정보 출력
yum provides [filepath명]

※ yum 은 업데이트 서버에 없을 경우 예를 들어 a라는 프로그램 버전 5.0버전에서 치명적인 오류가 발견 되어서 5.5로 올리고 싶은데 업데이트 서버에 5.5가 없을 경우 직접 서버에 들어가서 Repository 를 확인해야한다. 

1. maria DB 10.3 버전을 설치 하고자 할때 사이트에 들어가서 Repository를 확인한다. 

cat << EOF > /etc/yum.repos.d/MariaDB.repo

[mariadb]

name = MariaDB

baseurl = http://yum.mariadb.org/10.3/centos7-amd64

#해당url로 접근해라

gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB

#다운로드파일

gpgcheck=1

EOF

yum list install MariaDB-server #MariaDB-server 설치 

sudo yum clean all #캐시파일 지우기

 

 

인터넷이 안될 경우 yum 설치 

 

Connetied 꼭 체크 해준다.

mkdir /media/dvdrom  
#media라는 폴더에 dvdrom을 만들어 준다. (마운트 시켜서 yum 패키지를 넣을 곳)

ls -ls /media/dvdrom 
#dvdrom 확인을 해준다. 

mount -t iso9660 /dev/sr0 /media/dvdrom 
#iso9660 /dev/sr0  와 media안에 dvdrom을 mount(연결)해준다. 

cd /media/dvdrom/Packages/ 
#Packages 폴더로 이동

yum localinstall mc
#(tab 해서 설치 하고자 하는 rpm 복사 후 붙여넣어준다)

 

 
실행화면

cdrom 을 Repository로 넣기(p220)

ifdown ens33 #인터넷 연결 끊어줌
mkdir /media/cdrom # media 폴더에 cdrom을 만들어 준다. 
mount /dev/cdrom /media/cdrom #dev안에 cdrom과 media 안에 cdrom 을 mount(연결)해준다.
cd /etc/yum.repos.d/ #yum.repos.d 폴더로 이동
touch localrepo.repo #localrepo.repo 파일 생성
vi localrepo.repo #vi 에디터로 수정
cd #홈으로 이동
ping 8.8.8.8 #인터넷이 끊긴것을 확인
yum install mc-4.8.7-11.el7.x86_64.rpm #mc-4.8.7-11.el7.x86_64.rpm 설치(테스트)

 

파일 압축과 묶기

묶기 : 단훈히 여러가지 파일을 하나로 묶는다. 
압축 : 사이즈를 줄인다.(저장공간의 확보를 위해)

동작

  • c(소문자) : 여러 파일이나 디렉터리를 하나의 파일로 묶을 때 사용
  • x  : 압축(묶기) 풀기
  • t   : 묶음을 풀기 전에 묶인 경로를 표시
  • C  : 묶음을 풀때 디렉터리를 지정해서 압축을 풀어준다(지정하지 않을 경우 묶을때와 동일한 디렉터리에 풀림)

옵션

  • f(필수) : 묶음파일 이름 지정
  • v : visual 의 약자로 파일이 묶이거나 풀리는 과정을 보여줌
  • J (대문자) : tar + xz (압축 형식지정)
  • z (소문자) : tar + gzip
  • j  (소문자) : tar + bzip2
#tar -cvf [파일명.tar] [폴더명]
#ex) abc라는 폴더 aaa.tar로 압축

tar -cvf aaa.tar abc

 

 

사용예시

 

cron(작업예약)

cron : 특정한 시간에 특정한 작업을 수행 할 수있도록 설정하는 명령어

crontab : cron 작업을 수행하는 파일

crontab

crontab 의 형식 : 분 시 일 월 요일 사용자 실행명령 

※요일은 일0 월1 화2 수3 목4 금5 토6

 

crontab 설정

crontab 옵션

  • -e
    • crontab을 갱신 할 수 있는 곳으로 이동 
    • cron 명령어를 입력 후 :wq 해서 나오면 갱신이 된다.
  • -l
    • cat 명령어로 파일을 읽어오듯이 crontab -l 로 crontab을 읽어들인다.
  • -r
    • crontab 삭제(사용하는 일 없을듯)

crontab 스크립트 

-e 옵션으로 매번 들어가서 수정하기 힘들기 때문에 명령어를 스크립트로 만들어서 갱신해주기 힘들기 때문에 스크립트로 만들어서 cron.daily 폴더에 등록을 해준다. 

 

man cron으로 확인

※알아둘 것 : 변수를 선언하기 위해서는 `(1 왼쪽에 있는 것)를 사용해줘야 한다.

위의 그림에서 보듯이 date가 빨강색으로 나오면 문자로 인식을 안하고 변수로 읽은 것이다. 

timestamp="$(date '+%Y %B %d %H %M %S' | sed 's/ //g;s/월//g')"
echo "$timestamp"
#2022719225746
#위의 내용이 변수를 이용하여 날짜 출력

tar cvf backup-$timestamp.tar.gz /os
#묶는것을 보여달라 이름은 백업과 현재시간 gz타입으로 압축 해라 /os directory를

cd /etc/cron.daily 
#cron.daily 폴더로 이동 

cp ~/backupshcedule.sh ./
#홈 디렉터리에 있는 backupshcedule.sh 스크립트를 현재 티렉터리에 복사해온다.

파티션 분할

  • 하드디스크를 추가 해준다. 

 

lsblk로 파티션 확인

sda 가 분활(파티션 분할) 되어 sda1 sda2 가 되어있다. 

※알아둘 것 : 하드에서 디스크의 크기는 동일하지만 용량이 다 다른 이유는 압축 기술이 다르기 때문이다 즉 용량이 클수록 압축 기술이 좋다는 것이다 

※ps aux | grep cron => 실행중인 프로그램 확인

fdisk -l /dev/sdb
#sdb의 현재 디스크 상태 확인

 

현재 sda 디스크에 있지만 fdisk로 접근 하는 방법=>sda에 directory를 만들어 주고 생성된 directory와 mount 시켜준다.

fdisk /dev/sdb

4 free => 파티션 분활이 4개만 가능하다 

하지만 extended 는 또다시 4개로 분활이 가능하다

파티션 타입은 primary로 설정하며 파티션 number는 1번부터 순서대로 하고 있다. 각 파티션의 용량은 +5G로 주고 있다.

분활이 완료된 상태

mkfs -t ext4 /dev/sdb1
#ext4 => 포멧 타입
mkfs -t xfs /dev/sdb2
#sdb2 포멧

mount /dev/sdb1 /data1 
#dev/sdb1 과 data1을 mount 시킨다.

 

연결뒤에 재부팅을 하게 되면 다시 초기화 되기 때문에 재부팅 했을때 다시 연결이 될 수 있도록 해야한다. 

vim /etc/fstab

11번에서 15번까지 기록 된 것 처럼 입력을 해주면 재부팅을 했을 때도 적용이 된다.