실습 과제
▶ 어렵고 헷갈렸거나, 기억이 나지 않는 주제 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 편집기 색상 변경 및 각종 설정 관련 명령어를 알 수 있었다. 현재 수정 중인 파일명 표시, 명령어 기록, 하이라이트 설정 등 다양한 명령어들을 활용하여 설정해보아야겠다.
참고한 자료
[리눅스] 압축과 아카이브(tar, gzip, bzip2, xz)
리눅스에서 프로그램을 설치할 때 리눅스에서 사용되는 프로그램은 C언어로 된 소스(source)파일을 tar 형식으로 압축해서 배포된다. (소스프로그램은 GNU 웹사이트나 관련 프로그램사이트에서 무
wiseworld.tistory.com
Linux, 파일압축유틸리티 gzip과 bzip2 그리고 gzexe
gzip과 bzip2는 둘다 압축을 위한 유틸리티이다. bzip2는 gzip보다 이후에 나와 gzip이 비해 압축효율성이 ...
blog.naver.com
blog.naver.com/PostView.nhn?blogId=sunguru&logNo=220860944882
오랜만에 짜본 리눅스 쉘 스크립트 : 로또 프로그램
■ 리눅스 쉘 스크립트로 만들어본 로또 프로그램 아.. 오랜만에 쉘 스크립트를 만들어보았는데 힘드네요. ...
blog.naver.com
RAID 종류와 특징에 대한 명확한 정리~
뭔가 어설프게 알고 있다는 것이 찜찜할 때가 많다. 자주 사용하지 않다보니 대략 알고 있다가 필요할 때마다 또 찾아보고 넘어가는 것 같다. 그래서 RAID의 종류와 특징에 대해서 간략하게 정리
blog.acronym.co.kr
회고(+,-,!)
+: 이전에 gzip과 bzip2 압축만 실습보고 둘의 차이점을 잘 이해하지 못한 것 같아 더 추가적으로 조사해보았다. gzip과 bzip2 두 압축 방식의 차이점을 이해할 수 있었다. 또한 쉘 스크립트를 Server에서 작성해보았다. 실습 과제를 하면서 조건을 판별할 때 사용하는 다양한 옵션들을 다시 정리해볼 수 있었다. 그리고 이외에도 난수를 생성하는 방법, 배열을 선언하고 활용하는 방법 등을 알게 되어 의미있던 시간이었다. 마지막으로 RAID 0, RAID 1, ... , RAID 1+6까지 다시 개념들을 정리해보았다. 처음 수업시간에 배웠을 때는 각각의 개념들이 헷갈렸는데, 다시 정리해보면서 조금 더 익숙한 개념들이 된 것 같아 좋았다.
- : 처음 실습할 때 Server에 바로 bash script를 작성하려다가 소스코드의 색깔이 변하지도 않고 가독성이 떨어져 고민을 하였다. 따라서 vim을 설치하여 소스코드를 작성하였더니 문제를 해결할 수 있었다.
! : 이번 실습 일지를 작성하면서 현재까지 배운 내용들을 모두 되돌아볼 수 있었다. 수업을 듣는 당시에는 다 이해하는 것 같았으면서도, 다시 되돌아보니 놓치고 넘어갔던 부분들, 잘 이해하지 못했던 부분들이 보였다. 이번주 실습 일지 과제는 이러한 내용들을 복습하고, 더 추가적인 자료들을 찾아볼 수 있었던 좋은 기회였던 것 같다.
'Linux > 실습 기록' 카테고리의 다른 글
[컴퓨터시스템관리] 2021.05.04 10주차 실습일지 - Remote Server (0) | 2021.05.04 |
---|---|
[컴퓨터시스템관리] 2021.04.27 9주차 중간 과제 (0) | 2021.04.28 |
[컴퓨터시스템관리] 2021.04.13 7주차 실습 일지 - 쉘 스크립트 프로그래밍 (0) | 2021.04.13 |
[컴퓨터시스템관리] 2021.04.06 6주차 실습 일지 - Linux 디스크 관리(2) (0) | 2021.04.06 |
[컴퓨터시스템관리] 2021.03.30 5주차 실습 일지 - Linux 디스크 관리 (0) | 2021.03.30 |