dd 명령어
블록 단위로 파일을 복사하거나 변환하는 명령어이다.
dd if='원본 파일' of='대상 파일' bs='바이트 사이즈' count=횟수

본 실습에서는 /dev/zero 파일의 내용을 블록 단위로 복사하여 a.dd 와 b.dd 파일을 생성하였다.
- a.dd 파일 : 1024 바이트 크기로 250번 복사 -> 256000 용량
- b.dd 파일 : 1024 바이트 크기로 1000번 복사 -> 1024000 용량
/dev/zero 파일이란, 무한대 크기의 0 으로 채워져있는 파일이다.
파일 압축 명령어
파일 압축 명령어들은 여러 가지가 있으며, xz > bzip2 > gzip > compress 순으로 압축률이 좋다.
1) 파일 압축
-gzip : 확장자 gz 를 사용하는 파일 압축 명령어이다.
-bzip2 : 확장 bz2 를 사용하는 파일 압축 명령어이다.
-xz : 확장자 xz 를 사용하는 파일 압축 명령어이다.
-zip : 확장자 zip 을 사용하는 파일 압축 명령어로, -r 옵션으로 하위 디렉토리 및 파일을 묶어 압축할 수 있다.

먼저 실습 환경 구성을 위해, 빈 파일 1, 2 와 /dev/zero 파일에서 복사한 a.dd, b.dd 파일을 생성하였다.

gzip 으로 압축한 파일은 gz 확장자로 원본 파일이 변환되었고, bzip2 로 압축한 파일은 bz2 확장자로 원본 파일이 변환되었다. 또한, bzip2 의 압축률이 gzip 보다 뛰어난 것도 확인할 수 있다. 단, 한 가지 이상한 점이 있다. 빈 파일이었던 1, 2 파일의 용량이 늘어났는데, 이는 압축 명령 수행 시 자체적으로 지니는 용량이 있기 때문이다.

파일의 종류를 확인하는 file 명령어를 통해, 어떤 방식으로 압축된 파일인지 확인해보면 a.dd 파일은 gzip 으로 b.dd 파일은 bzip2 로 압축된 것을 확인할 수 있다.

압축 도구 사용의 주의할 점은 연속적으로 중복 사용이 불가능하다는 것이다. 이미 gzip 으로 압축된 파일을 또다시 gzip으로 압축하거나, bzip2 로 압축된 파일을 bzip2로 재압축을 시도하면 실패하는 것을 확인할 수 있다.

또한, gzip 와 bzip2 는 디렉토리의 압축이 불가능하다.


gzip, bzip2 로 현재 디렉토리 내에 위치한 모든 파일들을 대상으로 압축을 진행하는 경우, 개별적으로 압축이 진행된다.

xz 도 마찬가지로 여러 파일을 대상으로 압축을 진행하는 경우, 개별적으로 압축이 진행된다.

zip -r [압축 파일명] [타겟 파일] 형식으로 사용하며, 현재 디렉토리의 모든 항목에 대해 test.zip 파일로 압축을 진행하였다.

zip 명령어는 디렉토리도 압축 가능하므로, 이번에는 /zip 디렉토리를 all.zip 파일로 압축하였다.
*요약*
- 압축 파일이 별도로 생성되는 것이 아닌, 원본 파일을 자체 변환
- 동일한 압축 도구를 통해 중복 압축 불가
- 디렉토리 압축 불가능 (zip 명령 제외)
- 여러 파일 압축시 개별압축 (zip 명령 제외)
2) 파일 압축 해제
-gunzip / gzip -d : 확장자 gz 를 가지는 파일을 압축 해제하는 명령어이다.
-bunzip2 / bzip2 -d : 확장 bz2 를 가지는 파일을 압축 해제하는 명령어이다.
-unxz / xz -d : 확장자 xz 를 가지는 파일을 압축 해제하는 명령어이다.
-unzip : 확장자 zip 를 가지는 파일을 압축 해제하는 명령어이다.

현재, /zip 디렉토리 내부의 파일들은 다음과 같다.




파일의 압축 해제는 압축한 순서의 역순으로 진행된다.

앞서 생성한 test.zip 파일을 다른 곳으로 옮겨 unzip 명령어를 통해 압축 해제해보면, /zip 디렉토리의 하위 모든 파일이 압축해제된 것을 확인할 수 있다.

앞서 생성한 all.zip 파일을 다른 곳으로 옮겨 unzip 명령어를 통해 압축 해제해보면, /zip 디렉토리가 통째로 옮겨진 것을 확인할 수 있다.

압축 해제된 동일한 파일 및 디렉토리가 있을 경우, 덮어쓸지 질의하게 된다.
- y : yes 의 약자로, 개별 파일에 대해 덮어쓴다.
- n : no 의 약자로, 개별 파일에 대해 덮어쓰지 않는다.
- A : All 의 약자로, 모든 파일에 대해 덮어쓴다.
- N : None 의 약자로, 모든 파일에 덮어쓰지 않는다.
- r : rename 의 약자로, 개별 파일에 대해 이름 변경 덮어쓰기를 진행한다.
파일 아카이브 tar
파일 백업 및 배포 시, 수많은 파일을 하나로 묶는 명령어이다. 압축 개념과는 달리, 여러 파일을 묶는 기능만을 제공한다. tar [옵션] [tar 파일명] [원본 파일] 형식으로 사용한다.

여러 옵션들을 조합하여 사용한다.
- tar 파일 생성 : tar cvf
- tar 파일 해체 : tar xvf
- tar 파일의 내용 확인 : tar tvf

현재, /zip 디렉토리 내부에는 다음과 같은 파일들이 존재한다.
1) cvf 옵션
tar 파일명을 지정하여 생성한다. v 옵션을 함께 사용하여, 묶여질 파일들도 확인할 수 있다.

cf 옵션만 사용하는 경우, 묶여질 파일이 무엇인지 사용자에게 출력해주지 않는다.

cvf 옵션을 사용하는 경우, 1 파일이 tar 파일로 묶였음을 사용자에게 출력해주는 것을 확인할 수 있다.
2) tvf 옵션
지정한 tar 파일의 내부 목록을 확인한다. tar 파일 해체 전, 사전 확인 작업이 필요할 때 사용한다.

tvf 옵션을 사용하여 1.tar 의 내부 파일들을 확인했을 때, 1 파일이 존재하는 것을 알 수 있다.
3) xvf 옵션
지정한 tar 파일을 해체한다.

1 파일의 원본을 삭제한 후, 1.tar 파일을 해체하면 1 파일이 다시 나타난 것을 확인할 수 있다.
4) rvf 옵션
이미 생성된 tar 파일에 다른 파일을 추가한다.

1 파일이 묶여있는 1.tar 파일에 2 파일이 추가된 것을 확인할 수 있다.
4) -C 옵션
tar 파일이 해체될 위치를 지정한다.

-C 옵션을 통해, /test1 디렉토리에 zip.tar 파일을 해제하였다.

/test1 디렉토리의 하위에 zip.tar 파일이 해체된 것을 확인할 수 있다.
5) tar 파일 압축
tar 는 파일 아카이빙 기능만 제공하며, 별도의 명령어 및 옵션으로 압축하는 과정이 필요하다.
- zcvf : gzip 도구로 tar 파일을 압축한다.
- jcvf : bzip2 도구로 tar 파일을 압축한다.
- Jcvf : xz 도구로 tar 파일을 압축한다.


tar 파일을 gzip 명령어를 통해 압축하여 파일의 용량이 줄어든 것을 확인할 수 있다.


z 옵션은 gzip 으로 압축, j 옵션은 bzip2 로 압축, J 옵션은 xz 로 압축된다. 비록, 파일명은 .gz 으로 gzip 으로 압축한 것처럼 보이지만 실제로는 각 옵션별 도구로 압축이 진행되었다.
6) tar 파일 압축 해제
압축 되어있는 tar 파일을 압축 해제한다.
- zxvf : gzip 확장자의 tar 압축파일을 해제한다.
- jxvf : bzip2 확장자의 tar 압축 파일을 해제한다.
- Jxvf : xz 확장자의 tar 압축 파일을 해제한다.
- xvf : 모든 종류의 tar 압축 파일을 해제한다.

과거에는 압축 도구별로 명령어를 달리 사용해야 했지만, 현재는 xvf 옵션 하나만으로도 모든 압축 tar 파일들을 압축해제할 수 있다.
공부하면서 정리한 내용을 글로 작성하였습니다.
혹시나 잘못된 내용이 있다면 댓글로 알려주시면 감사하겠습니다. :)
'OS > Rocky' 카테고리의 다른 글
[Linux / Rocky] 파일 링크 File Link (0) | 2025.01.25 |
---|---|
[Linux / Rocky] 자동 마운트 및 계정 생성 예제 (0) | 2025.01.22 |
[Linux / Rocky] mount 명령어 & /etc/fstab (0) | 2025.01.19 |
[Linux / Rocky] 파티션 포맷 (0) | 2025.01.19 |
[Linux / Rocky] 리눅스 파티션 설정 (0) | 2025.01.17 |