zip & tar

리눅스에서 많이 사용되는 압축 방법

  1. tar + xz
  2. zip
  3. tar + gz
  4. tar + bz2

압축률

zip < gz < bz2 < xz

압축률이 높을수록, 속도는 느리다

 

실습

구성

아래와 같이 환경 구성

work1, work2에 각각 1MB 파일을 생성한다

mkdir work1
cd work1
for ((i=0;i<1024;*1024/2;i++)) do echo A >> a.txt; done
du -sh a.txt

mkdir work2
cd work2
for ((i=0;i<1024*1024/2;i++)) do echo A >> b.txt; done
du -sh b.txt

'A'와 줄바꿈문자 '\n' 까지 더해서 2byte * 1024 * 1024  / 2번 반복해서 해당 파일들은 각각 1mb 가 된다.

압축 -  zip

work1 디렉토리로 이동한 뒤 a.txt를 압축해보자.

zip all1.zip a.txt

원본 파일이 남아있는 것을 확인할 수 있다.

 

all1.zip을 지우고 a.txt와 work2를 같이 압축해보자.

zip all2.zip ./*

 

압축 파일 내 work2 디렉토리가 비어있는 파일인 것을 확인할 수 있다

-r 옵션을 줘야 하부 디렉토리가 정상적으로 같이 압축된다

all2.zip을 지우고 

-r 옵션을 주고 a.txt와 work2를 같이 압축해보자.

zip -r all3.zip ./*

압축해제 - unzip

unzip [압축파일명] -d [압축풀 경로]

[압축풀 경로]에 해당 경로가 없으면 생성하고 압축해제한다.

unzip all3.zip -d ./newDirect

압축 -  gzip, xz

gzip과 xz는 리눅스의 단일 파일 압축 방식이다.

원본 파일이 압축 파일로 변경된다 (원본 파일이 사라진다)

압축 성능 xz > gzip

gzip a.txt
xz b.txt

압축해제 - gunzip, xz -d

gunzip a.txt.gz
xz -d b.txt.xz

파일아카이브 유틸리티 - tar 

파일을 하나로 합칠 수 있다.

파일을 하나로 합치는 것뿐 압축을 하는 것은 아니다.

원본이 남아있다.

tar -cvf ab.tar a.txt b.txt

tar -cvf [파일명.tar] [파일1] [파일2] ...

  • -c : 하나로 모아서 새파일 생성 (create)
  • -f : 파일 이름을 지정 (file)
  • -v : 진행 상황을 보여줌  (verbose)
  • 원본이 남음
tar -xvf ab.tar -C ./ab/

tar -xvf [파일명.tar] -C [압축 풀 디렉토리 경로]

  • -x : tar 해제 (extract)
  • -C : 경로 지정 (change directory)
  • tar는 자동으로 디렉토리를 만들어주는 기능이 없어서 해당 디렉토리를 만들어야 함
  • 원본이 남음

핵심 - tar + xz

tar -Jcvf [파일명.tar.xz] [파일1] [파일2] ...

  • -J : XZ 압축 방식을 사용하도록 지정하는 옵션
tar -Jcvf ab.tar.xz a.txt b.txt

tar -Jxvf [파일명.tar.xz] -C [디렉토리]

tar -Jxcf ab.tar.xz -C ./ab

'Linux > tips' 카테고리의 다른 글

아카이브 변경하기  (0) 2024.12.11
Vim 설치, 단축키, vimrc  (0) 2024.12.10
bash shell script - 명령어 정리  (0) 2024.12.10

기존 우분투 아카이브가 느려서 카카오 미러 아카이브로 변경해보자

 

해당 설정은 /etc/apt/source.list에서 확인할 수 있다.

/etc는 관리자와 서비스에서 사용되는 시스템 구성(system configuration) 파일들이 저장되는 경로이다

/etc/apt/source.list 을 vim으로 열어보자

sudo vi /etc/apt/source.list

 

 

찾아바꾸기로 기존 우분투 아카이브를 카카오미러 아카이브로 변경하자
:%s/[검색어]/[변경]/g    찾아바꾸기

:wq      저장하고 나가기

:%s/kr.archive.ubuntu.com/mirror.kakao.com/g
:wq

 

해당 변경 내역을 저장해주자

sudo apt update

 

'Linux > tips' 카테고리의 다른 글

압축, 압축 해제  (0) 2024.12.12
Vim 설치, 단축키, vimrc  (0) 2024.12.10
bash shell script - 명령어 정리  (0) 2024.12.10

텍스트 editor 중 하나인 Vim을 사용해보자!

vim 설치

sudo apt install vim -y

Vim 단축키

  • i
    • command mode ⇒ insert mode
  • v
    • command mode ⇒ visual mode
  • esc
    • insert mode ⇒ command mode
  • :wq
    • w: 저장, q: 종료
  • q!
    • 강제 종료
  • ctrl + f
    • 찾기
  • ctrl + f + 화살표
    • 다음 / 이전 찾기
  • ctrl + h
    • 모두 바꾸기
  • [라인 수] + dd
    • [라인 수] 만큼 잘라내기
  • p
    • 현재 커서 앞에 붙여 넣기
  • P
    • 현재 커서 뒤에 붙여 넣기
  • 마우스 더블 클릭
    • 복사
  • 휠 키
    • 붙여 넣기
  • visual mode (터미널에서 지원하는 복사/ 붙여넣기와 독립적)
    • 화살표
      • 영역 선택
    • y
      • 복사
    • p
      • 붙여 넣기
  • gg
    • 페이지 상단 이동
  • shift + g
    • 페이지 하단 이동
  • u
    • 실행 취소
  • ctrl + r
    • 다시 실행
  • /[검색어] 위에서 아래로 내려가면서 검색
    • n 다음 검색
    • shift + n 이전 검색
  • ?[검색어]
    • 아래쪽에서 위로 올라가면서 검색
  • :%s/[검색어]/[변경]/g
    • 검색어 전부를 변경
      • g: global의 약어로, 파일 전체의 단어를 바꾸는 필수 옵션
      • i: 대소문자 구별
      • c: 하나씩 확인하면서 진행
  • o
    • 커서 아래쪽에 라인 추가하면서 이동
  • O
    • 커서 위쪽에 라인 추가하면서 이동
  • cc
    • 현재 커서가 있는 라인 모두 지우면서 앞쪽으로 커서 이동
  • I
    • home + insert
  • A
    • end +insert
  • cw
    • 단어 단위로 지우면서 insert
  • cc
    • 한줄 지우면서 insert
  • C
    • 커서 뒤에 지우면서 insert
  • gg + V + G
    • 전체 선택: 제일 앞으로 이동 ⇒ 행단위 비주얼 모드 ⇒ 제일 뒤로 이동
      • V
        • 행 단위 비주얼 모드
  • :set nonu
    • 소스코드를 복사할 때 라인 번호가 같이복사될때
  • :vsp
    • 거울창 띄우기
      • :sp 거울창 띄우기 (세로)
      • :vps 거울창 띄우기 (가로)
      • ctrl + w + 방향키 창 전환
      • vimdiff [파일1] [파일2] 두 개 파일 텍스트 비교하기
  • w
    • 단어 시작 문자 위치로 이동
  • e
    • 단어 마지막 문자 위치로 이동
  • home = shift + 6
  • end = shift + 4
  • gg = G
    • 전체 들여쓰기

vimrc 유용 설정

vimrc는 vim의 설정 파일이다.

' . ' 으로 시작하는 파일은 숨김파일이다.

vimrc 파일 생성

vi ~/.vimrc

 

유용한 설정

set hlsearch " 검색어 하이라이팅
set nu " 줄번호
set autoindent " 자동 들여쓰기
set scrolloff=2
set wildmode=longest,list
set ts=4 "tag select
set sts=4 "st select
set sw=1 " 스크롤바 너비
set autowrite " 다른 파일로 넘어갈 때 자동 저장
set autoread " 작업 중인 파일 외부에서 변경됬을 경우 자동으로 불러옴
set cindent " C언어 자동 들여쓰기
set bs=eol,start,indent
set history=256
set laststatus=2 " 상태바 표시 항상
"set paste " 붙여넣기 계단현상 없애기
set shiftwidth=4 " 자동 들여쓰기 너비 설정
set showmatch " 일치하는 괄호 하이라이팅
set smartcase " 검색시 대소문자 구별
set smarttab
set smartindent
set softtabstop=4
set tabstop=4
set ruler " 현재 커서 위치 표시
set incsearch
set statusline=\ %<%l:%v\ [%P]%=%a\ %h%m%r\ %F\
" 마지막으로 수정된 곳에 커서를 위치함
au BufReadPost *
\ if line("'\"") > 0 && line("'\"") <= line("$") |
\ exe "norm g`\"" |
\ endif
" 파일 인코딩을 한국어로
if $LANG[0]=='k' && $LANG[1]=='o'
set fileencoding=korea
endif
" 구문 강조 사용
if has("syntax")
 syntax on
endif

'Linux > tips' 카테고리의 다른 글

압축, 압축 해제  (0) 2024.12.12
아카이브 변경하기  (0) 2024.12.11
bash shell script - 명령어 정리  (0) 2024.12.10

화면 출력 관련

화면 지우기

clear

화면 출력 stop: Ctrl + s

화면 출력 start: Ctrl + q

복사, 붙여 넣기

복사: Ctrl + Insert

붙여넣기: Shift + Insert

파일 조작 관련

파일 생성, 타임스탬프 업데이트

touch: 파일의 접촉시간을 나타냄, 없으면 빈 파일을 생성

touch newFile

 

파일 삭제

rm: ReMove

  • [파일명]: 해당 파일 삭제
  • -r [디렉토리명]: 디렉토리와 그 안에 포함된 모든 파일 및 하위 디렉토리 삭제 (r은 recursive)
rm newFile
rm -r folder1

 

파일 이동

mv: MoVe

  • [파일명] [경로]: 해당 파일을 해당 경로로 옮긴다 
  • [파일명] [새로운 파일명]: 이름 변경
mv newFile Documents/
mv newFile newNewFile

 

파일 복사

cp: CoPy

  • [파일명] [경로]: 해당 파일을 경로에 복사
  • -r [복사할 경로명] [목적경로]: 해당 경로의 파일들을 목적 경로로 복사

 

디렉토리 관련

디렉토리 내 목록 보기

ls: LiSt

  • -a: all 숨김 파일까지 출력
  • -l : 리스트 형태로 상세 보기
ls
ls -al

 

현재 디렉토리 확인하기

pwd

디렉토리 이동

디렉토리 이동하기

cd: Change Directory

  • [디렉토리 경로]: 해당 경로로 이동
    • 하위 디렉토리: 상위 경로에서 하위 경로로 이동할 경우
    • 절대 경로: '/' 부터 시작하는 파일 시스템 루트부터 시작하는 경로
    • 상대 경로: ./ 부터 현재 경로 입력
  • ..: 상위 디렉토리로 이동
  • ~: 홈 디렉토리로 이동
  •  -: 이전 디렉토리로 이동
cd Documents
cd /home/hyndrome/Documents
cd ./Documents
cd ..
cd ~
cd -

디렉토리 조작

디렉토리 생성

mkdir: MaKe DIRectory

  • [디렉토리명]: 디렉토리 생성 
  • -p [상대경로]: 디렉토리 하위 경로까지 한번에 생성 (p는 parent를 뜻함)
mkdir win
mkdir ./folder1/folder2/folder3/

 

디렉토리 제거

rmdir: ReMove DIRectory

  • [디렉토리명]: 해당 디렉토리 삭제 - 디렉토리 내에 파일이 있으면 삭제가 되지 않음

rm -r: 디렉토리와 그 안에 포함된 모든 파일 및 하위 디렉토리 삭제 - 삭제는 되돌릴 수 없다(r은 recursive) 

rm -r

 

디렉토리 복사

cp -r [복사할 경로명] [옮길 경로]

cp -r newFolder/ Documents/

 

파일 관리

cat [파일명]

cat /proc/cpuinfo
  • 파일 내용을 출력
  • cat /proc/cpuinfo : cpuinfo에 저장된 내용 출력
  • 내용을 파일로 저장
    • > : 파일에 내용 쓰기 : cat /proc/cpuinfo > abc
    • >> : 파일에 내용 덮어쓰기 : cat /proc/cpuinfo >> abc

find [경로] -name [파일명] -type 옵션]

sudo find / -name "*info" -type f
  • 파일 찾는 명령어
  • 경로에 / 를 넣으면 모든 곳에서 검색 (sudo 권한 필요)
  • 파일만 찾기: -type f
  • 디렉토리만 찾기: -type d

grep [텍스트]

grep kB /proc/meminfo
ls -la | grep test*
  • 문자열 검색
  • 다른 명령어 출력 결과에 |(파이프)를 사용하는 방식으로 많이 사용

du -sh [파일명]

  • 디렉토리 or 파일의 용량을 확인
  • -s : 디렉토리 개별이 아닌, 총 사용량만을 출력
  • -h : 인간 옵션 (보기 쉽게 출력) 

file [파일명]

  • 파일 종류 확인
  • 파일 or 디렉토리 or 실행파일 등 구분이 가능
  • file /dev/stdout

which [명령어]

  • 명령어의 실행가능한 위치를 찾음
  • 예시
    • sudo apt install sl -y : sl 앱 설치
    • which sl
    • 결과: /usr/games/sl

기타

echo [텍스트]

  • 텍스트를 화면에 출력
  • 띄워쓰기를 하나만 인정
  • 문자 그대로 출력

date

  • 현재 시간 확인 가능
  • 시간 변경 : date -s "20241212 08:33:00"

uptime

  1. 현재 시간, 시스템 시간과 커널이 부팅된 후 시간을 나타냄
  2. 접속자 수와 CPU 시스템 부하율 나타냄

dmesg

  • 커널의 로그 메세지를 출력
  • 부팅 이후 일어날 모든 커널의 로그를 시간 순으로 출력

history

  • 입력한 모든 명령어가 출력
  • ![숫자]를 이용해 해당 번호의 명령어 다시 실행 가능

ln -s [원본파일명] [복사본파일명]

  • link 파일 생성 (바로가기와 비슷한 파일)
  • link 파일을 수정하면 원본에 영향을 미침

 

'Linux > tips' 카테고리의 다른 글

압축, 압축 해제  (0) 2024.12.12
아카이브 변경하기  (0) 2024.12.11
Vim 설치, 단축키, vimrc  (0) 2024.12.10

+ Recent posts