[Linux] 압축, 패키지

:)·2024년 4월 27일
0

Linux

목록 보기
9/17
post-thumbnail

압축

  • 압축률 (xz > bzip2 > gzip )
  • 압축 도구에도 크기가 있음 -> 의미 없이 압축시 오히려 용량 증가
    1. 원본 파일 자체 변환
    2. 동일한 압축 도구로 중복 압축 불가
    3. 디렉토리 압축 X
    4. 여러 파일 압축 시 개별 압축
  • 압축하기 : gzip / bzip2 / xz 파일명
    • 압축 예제

      예제1#: 원본파일변환
      gzip a.dd
      bzip2 b.dd
      touch 1
      touch 2
      gzip 1
      bzip2 2

      예제2#: 동일한 압축도구로 중복압축 X
      gzip a.dd.gz (x)
      bzip2 b.dd.bz2 (x)
      gzip b.dd.bz2 (O)
      bzip2 a.dd.gz (O)

      예제3# : 디렉토리압축 불가

      gzip /zip (x)
      bzip2 /zip (x)

      예제4# : 다중파일 개별압축
      gzip
      bzip2

      xz *

  • gzip/bzip2 압축 해제 (compress ,decompress)
    • 해제는 압축의 역순
    • zip 압축 해제는 unzip
      1. case # -d
        gzip -d
        bzip2 -d
        xz -d
      2. case # un
        gunzip (= g unzip (읽을때 지언집)
        bunzip2 (= b unzip 2 (비언집투))
  • zip 압축
    • zip -r [output][input]
    • 예시
        zip -r  test.zip  *
        zip -r all.zip /zip
        mkdir /backup
        mv all.zip /backup
        cd /backup
        unzip all.zip
        unzip all.zip
        
        replace 1? [y]es, [n]o, [A]ll, [N]one, [r]ename:
        1개   1개   전부     전부      다른이름
  • tar (꾸러미 묶기/아카이브 (기록보관실))
    • 옵션
      • x 압축풀기
      • c 압축
      • t 테스트 (압축안풀고 확인)
      • v 내용 보기 (visual, view)
      • f output file
        • xvf 압축 해제
        • cvf 압축
        • tvf 압축 해제를 하지 않고 확인
    • 추가 옵션
      • z tar+gzip = tar zcvf
      • j tar+bzip2 = tar jcvf
      • J tar+xz (J대문자) = tar Jcvf
    • 많이 쓰이는 옵션
      • tar cvf 압축하기 (tar [z/j/J]cvf)
      • tar xvf 압축풀기 (tar [z/j/J]xvf) tar zxvf (tar+gz) / tar jxvf (tar+bz2) / tar Jxvf (tar+xz)
      • tar xvf로 모두 가능 → 실무 .. 구체적인건 시험용
    • 예시
        tar cvf 1.tar 1 <<<< 압축파일추가
        tar xvf 1.tar <<<< 압축해제
        tar rvf 1.tar 2 <<<기존 압축파일에 파일추가
        tar tvf 1.tar <<<< 압축해제를 하지 않고 확인
        tar cvf zip.tar /zip	<<<< 디렉토리 압축
        tar cvf all.tar * <<<< 단일 압축
  • gzip all.tar <<<< tar는 파일을 하나로 묶어줌 (용량 감소X), gzip/bzip2와 병합 사용 (용량 줄임)
  • tar xvf zip.tar -C /test <<<< 압축해제시 디렉토리 지정(잘 쓰이진 않음)
  • 속성 확인: file [파일이름]

Package

  • 풀패키지명 : php-cli-5.3.3-49.el6.x86_64.rpm

    php = 주패키지명 (대표패키지)
    cli = 서브패키지 (보조패키지)
    5.3.3 = 버전 ( 5. = 메이저(변경) 3. = 마이너 (추가) 3. = 패치 (버그패치 ) )
    49= 릴리즈 49번째
    el6 = centos6버전 (배포판)
    x86_64 = 아키텍처
    rpm=확장자
    php-cli-5.3.3 => 패키지명 (버전 중요)

  • rpm

    • 옵션
      • -i 설치
        -v 설치내용보기
        -h ##### hash 보기
        -e 삭제
        -U update (버전업) 설치 + 버전업 - 패키지가 없으면 자동 설치
        -F fresh (비교후 버전업) 버전업 - 패키지가 없으면 실행 x
      • q 질의
        -a 모두
        --force 덮어쓰기
        --nodeps 의존성 무시 (가급적 사용 x)
        - rpm -qa |grep -P “httpd|telnet”
  • 패키지 설치

    • 다운로드: wget [파일 링크]
      설치: rpm -ivh [파일 링크] or [파일 이름]
  • 패키지 삭제 : rpm -e 패키지명

    • 설치시에는 의존성 먼저(선행 파일설치 필수), 삭제는 설치의 역순
  • 패키지 확인

    • rpm -qa |grep 대표 패키지명
      rpm -qf 파일명 해당 파일이 속한 패키지 확인
      rpm -ql 패키지명 패키지에 속한 파일명 출력(설치될 파일들)
      rpm -Vv 패키지명 패키지에 속한 파일 속성들 출력
  • 패키지 설치시 주의 할 점

    1. 대표패키지부터 작업한다.
    2. 작업시 (설치,삭제) 의존성 오류 (Failed dependencies)는 절대 무시하지 않는다.
    3. 의존성 오류 발생시 제시한 패키지 가장 아래부터 작업한다.
    4. 패키지의 버전은 반드시 일치 해야한다.
    5. 순서대로 진행한다.
    6. 가급적 의존성을 무시하는 -nodeps 옵션을 사용하지 않는다 (삭제시에는 사용)
    7. lib.so,/dir 등은 패키지가 아닐 가능성이 많으므로 일단 무시한다.
    8. 모든 패키지를 다 가지고있을경우에는 --force로 강제 설치가 가능하다(다운그레이드)
    9. 삭제는 설치의 역순

  • cdrom 이미지 파일 만들기
    • dd if=/dev/sr0 of=rocky.iso bs=4096

yum, dnf

  • rpm기반의 자동업데이트

  • 차이

    • yum : 기존 방식
    • dnf : yum의 문제점 보완 / 명령어 둘 다 동일
      • yum install mariadb-
        dnf install php-

        오프라인 	             온라인
         redhat → 	           rpm   yum
         debian →   	       dpkg	apt-get
         slackware(suse)→      Yast	zypper
    • 명령어
      • yum update <=======설치된 패키지 업데이트
      • yum install 설치
      • yum remove 삭제
      • yum list => 설치 가능 리스트
      • yum search => 설치 가능 리스트 + 설명
    • rpm = 오프라인
      • 수동 의존성 처리
      • 필요한 패키지만 설치 가능
      • 패키지를 몰라도 검색 가능
    • yum = 온라인
      • 자동 의존성 처리
      • 필요하지 않은 패키지도 설치
      • 패키지에 대해서 알고 설치 진행
  • dd = 가변 길이 장치/ 비트 단위 복사

    1M 이미지 만들기

    dd if=/dev/zero of=test1.dd bs=1024 count=1000
    dd if=/dev/zero of=test2.dd bs=4096 count=250

    • /dev/null => 버림
    • /dev/zero => 0000으로 채워짐
    • bs => 복사될 단위 byte
    • count => bs에서 복사되는 횟수
  • cd이미지 만들기

    • cdrom 인식
      • dd if=/dev/sr0 of=cd.dd bs=4096

  • losetup (loop장치변환) <내부장치>
    • 설정
      • losetup /dev/loop[번호][이미지명]
    • 확인
      • losetup -a
    • 삭제
        • umount
    • 사용 예시
      • 장치 연결해보기
        mkfs.ext4 test1.dd (포멧)
        losetup /dev/loop3 test1.dd
        losetup -a [확인]
        mount /dev/loop3 /test1
        df -Th 확인
        umount /dev/loop3 (장치해제)
        losetup -d /dev/loop3 (로컬장치해제)
        losetup -a 확인

  • 보통 아래와 같은 방법으로 사용
    mount -o loop cd.dd /cd
    losetup -a

  • 복제된 CD이미지 마운트
    mkdir /cd
    mount -o loop cd.dd /cd
    df -Th
profile
:) GITHUB: https://github.com/YJ2123412

0개의 댓글