Linux/실습 기록

[컴퓨터시스템관리] 2021.04.20 8주차 실습일지 - First Half Review

daeunnniii 2021. 4. 25. 00:29
728x90
반응형

실습 과제

▶ 어렵고 헷갈렸거나, 기억이 나지 않는 주제 1~2개 선정

1. 2주차 수업시간에 등장한 파일 묶기와 압축

1) 선택한 이유: 수업시간에 tar 파일로 묶고 gzip, bzip2로 압축하는 실습을 진행하였지만, gzip과 bzip2의 차이점이 무엇인지 확실히 모르고 지나갔던 것 같아 실습 과제를 통해 복습하려고 한다.

 

2) 실습 문제: 임시로 파일을 하나 만들고 같은 파일을 각각 gzip, bzip2로 압축해보자. 그리고 gzip, bzip2로 압축한 파일의 속성을 각각 비교해보며 두 압축 방식의 차이점을 분석해보기.

 

3) 실습 수행

-먼저 mkdir file1으로 file1 디렉토리를 생성하였다. 그리고 file1 안에 여러 파일들을 생성해주었다.

-file1 디렉토리에 있는 모든 파일을 gzip과 bzip2로 각각 압축해준다.

 

-압축한 파일의 크기를 확인해보면 gzip으로 압축한 파일의 크기는 11958, bzip2로 압축한 파일의 크기는 11036으로 bzip2가 압축이 더 잘된 것을 확인할 수 있었다.

-또한 gzip 압축 파일을 대상으로 -ㅣ 옵션을 통해 압축 효율을 확인해보았다.

*compressed : 압축된 후의 용량

*uncompressed : 압축되기 전의 용량

*ratio : 압축효율

*uncompressed_name : 압축하기전의 파일명

 

-file1 내의 파일들이 크기가 크지는 않아 두 압축 방식의 시간 차이는 느끼지 못했지만, bzip2보다 gzip의 압축시간이 더 적게 걸린다고 한다.

 

4) 복습 및 궁금한 점 조사

-Windows에서 '압축'은 파일을 묶고 압축하는 과정을 한번에 처리하지만, Linux에서는 먼저 파일을 묶고 그다음에 파일 압축을 따로 처리함.

 

* tar *

-tar 명령은 테이프 아카이브(Tape ARchiver)의 글자들을 조합한 것

-리눅스에서는 파일을 묶어서 하나로 만든 것이라는 의미로 사용.

-파일로 묶을 때 디렉터리를 지정하면 그 디렉터리의 모든 파일과 서브 디렉터리들까지 함께 묶여짐.

-파일의 속성이나 허가권, 하드링크, 심볼릭링크 등도 보존할 수 있음.

-원래 tar는 파일을 묶어주고 풀어주는 기능으로만 사용했지만 현재는 파일을 묶거나 풀 때 압축관련 작업도 동시에 진행할 수 있다.

-사용 예시-

tar cvf T.tar * : 현재 디렉토리의 모든 파일과 디렉토리를 tar로 묶기

tar xcf T.tar : tar 아카이브를 현재 디렉토리에 풀기

 

tar zcvf T.tar.gz * : 현재 디렉토리를 tar로 묶고 gzip으로 압축하기

tar zxvf T.tar.gz : gzip으로 압축된 tar 아카이브를 현재 디렉토리에 풀기

 

tar jcvf T.tar.bz2 * : 현재 디렉토리를 tar로 묶고 bzip2로 압축하기

tar jxvf T.tar.bz2 : bzip2로 압축된 tar 아카이브를 현재 디렉토리에 풀기

ㅅtar cvf T.tar *tar cvf T.tar *tar cvf T.tar 

압축 형식 비교

* gzip *

-gzip은 GNU zip의 줄임말로 GNU에서 만든 압축프로그램이다.

-gzip은 리눅스에서 가장 일반적이고 가장 흔하게 사용되고 있는 표준압축유틸리티이다.

-bzip2보다 이전에 나온 압축 유틸리티이다.

-gzip을 사용하여 압축을 하게되면 기본적으로 .gz라는 확장자가 붙게되며, 다른 확장자를 붙이고 싶을때는 -S옵션을 사용하면 된다.

-압축된 파일을 풀기 위해서는 gunzip 이나 gzip -d 명령어 사용

-압축된 파일에 관련된 정보는 gzip -l 을 통해 확인 가능

-gzip에서는 -1 ~ -9 옵션을 통해 압축률을 조정할 수 있음.

# gzip [옵션] [파일명] = 압축하기

# gunzip [옵션] [파일명] = 압축풀기

# zcat [파일명] = 압축된 파일의 내용 확인

-옵션 정리-

-d : 압축풀기

-1 : 압축시간 줄이기 (압축률은 떨어진다.)

-9 : 파일을 최대로 압축 (시간이 오래걸린다.)

-l : 압축파일에 대한 정보 출력

-r : 압축대상이 디렉터리라면 하위디렉터리까지 모두 압축

-v : 진행과정을 %와 함께 자세히 출력한다.

 

* bzip2 *

-bzip2 Burrows-Wheeler 블록 정렬 테스트 압축 알고리즘과 Huffman 코딩을 이용하여 압축한다.

-흔히 이런 이유로 bzip2 bunzip2 블록정렬 압축 유틸리티라고 부른다.

-gzip등에서는 없었던 복구용 유틸리티인 bzip2recover이라는 것이 있어 손상된 bzip2압축파일을 복구할수도 있다.

-기본적인 사용법은 gzip과 동일하며 gzip보다 압축효율성은 뛰어나만 압축시간은 더 걸린다.

-bzip2로 압축을 하게 되면 .bz2라는 확장자가 기본적으로 붙게된다.

-bunzip2로 압축하게 되면 압축 전의 파일소유자의 정보와 permission을 그대로 유지하게 된다.

-bunzip2 또는 bzip -d로 압축을 해제할때 파일명에 따라 다름과 같이 압축해제가 된다.

 

# bunzip2 [옵션] [파일명] = 압축풀기

-옵션 정리-

-d : 압축풀기

-1 : 압축시간을 줄인다. (압축률은 떨어진다.)

-9 : 파일을 최대로 압축

-f : 존재하는 파일을 덮어쓰기한다.

 

 

2. 7주차 수업시간에 배운 Shell Script Programming

1) 선택한 이유: 수업시간에 Shell Script에 대해 실습할 때 Desktop 버전이 아닌 Server 버전 server(b)에서 실습을 진행했었다. 이번 리뷰 시간을 기회로 Ubuntu Desktop 버전인 Server에서도 유용한 쉘 스크립트를 실행해보고 싶었다. 또한, 쉘 스크립트를 실행할 때 변수 선언에서 space나 괄호 설정 등으로 인해 오류가 발생하기도 하였는데 이러한 쉘 스크립트를 작성할 때 주의해야할 점을 다시 한번 리마인드해보고 싶어 선택하였다.

 

2) 실습 문제: 유용한 bash script를 하나 검색해서 Server에 작성하고 bash script 소스코드 설명, 실행 결과를 작성하시오.

 

3) 실습 과정

-먼저, Server에서 bash script를 편리하게 작성하기 위해 vim을 설치한다.

 

 

-이번에 찾은 유용한 bash script는 로또 프로그램이다! 쉘 스크립트 소스코드는 아래와 같다.

 

먼저 몇 세트의 로또 번호를 뽑을 것인지 입력을 받아 SET이라는 변수에 넣는다. 그리고 SET만큼 while문을 돌고, 그 안에는 각 세트마다 숫자를 6개씩 뽑아야하므로 while문 안에 6이 NUM보다 크거나 같을 때까지 (6 -ge $NUM) 반복문을 도는 while문이 또 존재한다. LOTTO라는 배열을 선언하고 LOTTO 배열에 난수 값을 45로 나눈 나머지를 저장한다. 나머지가 0인 경우에는 45로 바꾸어 주는 명령어이다. 여기서 $RANDOM은 무작위 정수 값을 리턴한다. 또한 숫자 연산을 하기 위해서는 expr 키워드를 사용하고 ` 백쿼트로 묶는다.

 

4) 실행 결과

처음에는 5세트를 입력하였더니 GAME 1부터 5까지 잘 출력되었고 마찬가지로 3세트를 입력하였더니 GAME 1부터 3까지 잘 출력된 것을 확인할 수 있었다.

 

복습한 내용

1. 쉘 스크립트 작성 시 조건 판별에 사용되는 옵션 정리

문자열1 = 문자열2 문자열1과 문자열2가 같으면 참
문자열1 != 문자열2 문자열1과 문자열2가 다르면 참
-z 문자열 문자열 길이가 0이면 참
-n 문자열 문자열 길이가 0이 아니면 참
값1 -eq 값2 값1과 값2가 같으면 참
값1 -ne 값2 값1과 값2가 다르면 참
값1 -gt 값2 값1이 값2보다 크면 참
값1 -ge 값2 값1이 값2보다 크거나 같으면 참
값1 -lt 값2 값1이 값2보다 작으면 참
값1 -le 값2 값1이 값2보다 작거나 같으면 참
값1 -a 값2 값1 and 값2
값1 -o 값2 값1 or 값2
-d 파일 파일이 디렉토리면 참
-e 파일 파일이 있으면 참 (크기가 0 이어도 참)
-L 파일 파일이 심볼릭 링크면 참
-r 파일 파일이 읽기 가능하면 참
-s 파일 파일의 크기가 0보다 크면 참
-w 파일 파일이 쓰기 가능하면 참
-x 파일 파일이 실행 간으하면 참
파일1 -nt 파일2 파일1이 파일2 보다 최신 파일이면 참
파일1 -ot 파일2 파일1이 파일2 보다 이전 파일이면 참
파일1 -ef 파일2 파일1과 파일2가 같으면 참

2. 5-6주차: RAID 관련 정리

1) RAID 0

• 최소 2개 이상의 하드디스크 필요하고 모든 디스크에 동시 저장하는 스트라이핑(striping) 방식 사용

디스크 용량을 모두 활용할 수 있으므로 공간효율성이 100%이다. (비용 저렴)

• 일부 디스크에 문제가 발생하면, 데이터를 사용할 수 없음 (신뢰성 낮음)

• 빠른 성능을 요구하되, 전부 잃어버려도 큰 문제가 되지 않는 데이터 사용시 적당

 

2) RAID 1

• 최소 2개 이상의 하드디스크 필요하고 하나의 데이터를 두 군데의 하드디스크에 저장(미러링, Mirroring)
• 완전히 동일하게 데이터를 복제하므로 데이터 저장에 두 배의 용량 필요함. (비용 2배, 공간효율 낮음)
• 결함-허용(Fault-tolerance) 제공 (신뢰성 높음)
• 저장속도(성능)는 변함 없음
• ‘중요한 데이터’ 를 저장하기에 적절 (백업용)

 

3) RAID5

• 최소 3개 이상의 하드디스크 필요함.
• RAID1 의 데이터 안전성 + RAID0 의 공간 효율성
• 하드디스크 오류 발생시, ‘패리티(Parity)’를 이용하여 데이터 복구
• 어느 정도의 결함-허용을 제공하면서, 저장 공간의 효율도 좋음
공간 사용: 하드디스크의 개수-1
• 하드디스크 2개가 고장나면 복구 못함 -> RAID6로 해결 가능

 

4) RAID 6

• RAID 5 개선 (2개의 패리티 정보 사용)
• 최소 4개 이상의 하드디스크 필요 (실제로는 7~8개 이상의 하드디스크 사용)
• RAID 5 보다 공간효율은 낮지만, 데이터 신뢰도는 높아짐
• 공간 사용 : 하드디스크의 개수 - 2
• 성능(속도)은 RAID 5 보다 낮음

 

5) RIAD 10 (RAID 1+0)

• RAID 1으로 구성한 디스크를 다시 RAID 0 로 구성
• 데이터의 신뢰성(안전성)과 성능(속도)을 동시에 확보
• 공간효율은 50%

 

6) RAID 1+6

• RAID 1으로 구성한 디스크를 다시 RAID 6 로 구성
• 아주 중요한 데이터를 다루는 경우 사용

 

문제가 발생하거나 고민한 내용 & 해결 과정

▶ 문제 발생

-우분투 데스크톱 버전인 Server에 vi로 bash script를 작성할 때, 이전 수업 시간에 Server(b)에 스크립트를 작성한 것처럼 색깔이 안변하고 코드 인식을 잘 못하는 것 같아 가독성이 떨어졌다.

▶ 해결 과정

위 문제를 해결하기 위해 vim을 설치해주었다. 아무래도 수업시간에 vi를 사용하기 때문에 vi로 색을 입힐 수 있는 방법을 찾아보았지만, 잘 나오지 않는 것 같다. 자료를 찾아보던 중 vim 편집기 색상 변경 및 각종 설정 관련 명령어를 알 수 있었다. 현재 수정 중인 파일명 표시, 명령어 기록, 하이라이트 설정 등 다양한 명령어들을 활용하여 설정해보아야겠다.

lxstitch.tistory.com/72

 

참고한 자료

wiseworld.tistory.com/67

 

[리눅스] 압축과 아카이브(tar, gzip, bzip2, xz)

리눅스에서 프로그램을 설치할 때 리눅스에서 사용되는 프로그램은 C언어로 된 소스(source)파일을 tar 형식으로 압축해서 배포된다. (소스프로그램은 GNU 웹사이트나 관련 프로그램사이트에서 무

wiseworld.tistory.com

m.blog.naver.com/PostView.nhn?blogId=dudwo567890&logNo=130157842225&proxyReferer=https:%2F%2Fwww.google.com%2F

 

Linux, 파일압축유틸리티 gzip과 bzip2 그리고 gzexe

gzip과 bzip2는 둘다 압축을 위한 유틸리티이다. bzip2는 gzip보다 이후에 나와 gzip이 비해 압축효율성이 ...

blog.naver.com

blog.naver.com/PostView.nhn?blogId=sunguru&logNo=220860944882

 

오랜만에 짜본 리눅스 쉘 스크립트 : 로또 프로그램

■ 리눅스 쉘 스크립트로 만들어본 로또 프로그램 아.. 오랜만에 쉘 스크립트를 만들어보았는데 힘드네요. ...

blog.naver.com

blog.acronym.co.kr/487

 

RAID 종류와 특징에 대한 명확한 정리~

뭔가 어설프게 알고 있다는 것이 찜찜할 때가 많다. 자주 사용하지 않다보니 대략 알고 있다가 필요할 때마다 또 찾아보고 넘어가는 것 같다. 그래서 RAID의 종류와 특징에 대해서 간략하게 정리

blog.acronym.co.kr

 

회고(+,-,!)

+: 이전에 gzip과 bzip2 압축만 실습보고 둘의 차이점을 잘 이해하지 못한 것 같아 더 추가적으로 조사해보았다. gzip과 bzip2 두 압축 방식의 차이점을 이해할 수 있었다. 또한 쉘 스크립트를 Server에서 작성해보았다. 실습 과제를 하면서 조건을 판별할 때 사용하는 다양한 옵션들을 다시 정리해볼 수 있었다. 그리고 이외에도 난수를 생성하는 방법, 배열을 선언하고 활용하는 방법 등을 알게 되어 의미있던 시간이었다. 마지막으로 RAID 0, RAID 1, ... , RAID 1+6까지 다시 개념들을 정리해보았다. 처음 수업시간에 배웠을 때는 각각의 개념들이 헷갈렸는데, 다시 정리해보면서 조금 더 익숙한 개념들이 된 것 같아 좋았다.

 

- : 처음 실습할 때 Server에 바로 bash script를 작성하려다가 소스코드의 색깔이 변하지도 않고 가독성이 떨어져 고민을 하였다. 따라서 vim을 설치하여 소스코드를 작성하였더니 문제를 해결할 수 있었다.

 

! : 이번 실습 일지를 작성하면서 현재까지 배운 내용들을 모두 되돌아볼 수 있었다. 수업을 듣는 당시에는 다 이해하는 것 같았으면서도, 다시 되돌아보니 놓치고 넘어갔던 부분들, 잘 이해하지 못했던 부분들이 보였다. 이번주 실습 일지 과제는 이러한 내용들을 복습하고, 더 추가적인 자료들을 찾아볼 수 있었던 좋은 기회였던 것 같다.

 

 

 

 

 

728x90
반응형