[Linux] 아카이브

haryun·2022년 11월 18일
0

Linux

목록 보기
5/16
post-thumbnail

리눅스의 아카이브 관리

아카이브는 다수의 파일과 디렉토리로 이루어진 하나의 파일이다. 다수의 파일을 하나로 묶어 사용하면 이동, 공유, 저장 등의 작업이 수월해진다. (파일의 관리와 추적이 용이)

아카이브는 파일시스템 이미지를 만들거나 데이터를 백업하는데에 주로 사용된다.

1️⃣ 파일 아카이빙

1. tar

1-1) 단순 아카이빙

$ tar cvf '아카이브 이름'.tar '대상 파일'

tar 명령어에 주로 사용되는 옵션으로 c, v, f 가 있다.

  • c: 새로운 아카이브 생성
  • v: 상세 메세지 출력
  • f: 아카이브 파일명 지정

1-2) 아카이브의 압축

$ tar cvzf '아카이브 이름'.tar.gz '대상 파일'

기존 명령어에 z 옵션을 추가하면 생성한 아카이브를 gzip 프로그램으로 압축할 수 있다.

➡️ tar 명령은 일반적으로 파일 시스템 전체나 일부분을 아카이빙 하는데 사용한다.

2. split

큰 용량의 파일을 작게 나누는 명령어이다.
(용량이 큰 프로그램 로그 파일등에 활용할 수 있음)

$ split -b '쪼갤 용량' '대상 파일' "나눈뒤 사용할 파일 이름"
👇
$ split -b 10M test.tar.gz "test.tar.gz.part"

해당 명령을 실행하면 parta, partb, partc 이런 형태로 파일이 생성된다.

(🤔 다시 합치고 싶다면 cat test.tar.gz.part* > archive.tar.gz와 같이 표준 출력을 리다이렉션하여 가능!)

(--one-file-system: 아카이브를 만들 때 다른 파티션에 있는 데이터를 제외
--exclude='경로': 지정한 파일이나 디렉토리 제외)

로컬 서버에서 원격 서버로 아카이브한 파일을 전송하는 경우

$ tar czvf - '대상 파일' | ssh '사용자명'@'IP주소'
	"cat > '파일명'.tar.gz"

3. 파일 찾아서 모으기

3-1) find

$ find /var/www/html/ -iname "*.mp4" \
-exec tar -rvf videos.tar {} \;

/var/www/html/ 아래의 .mp4 확장자인 파일을 찾아 -exec 아래의 명령을 수행한다. ({}는 find 명령으로 찾아낸 파일을 의미함)

3-2) locate

$ locate '대상 파일'

find보다 locate가 결과를 더 빠르게 출력한다.
(locate 명령은 인덱스를 대상으로 검색하기 때문에 find에 비해 빠른 소요시간을 갖고있으나 정확도가 떨어진다.)

2️⃣ 파티션 아카이빙

1. dd

1-1) 디스크 이미지 생성

$ dd if='원본 드라이브' of='저장할 경로(파일 혹은 장치)[.img]'

1-2) 복원

$ dd if='복원할 대상[.img]' of='복원할 위치'

2. rsync

rsync 명령은 로컬/원격 호스트에 대상 파일이나 디렉토리를 복사하는 명령이다. (주로 백업용으로 사용)

데이터를 압축한 형태로 전송하고, 반복적으로 실행하는 경우 원본과 대조하여 수정된 부분만 전송하기때문에 scp보다 실행 속도가 빠르다.

$ rsync -av '대상 파일' 'user'@'IP 주소':'사본을 저장할 경로'

a: 아카이브 모드(재귀적으로 동작함), v: 상세 결과 출력

🚫 에러

code 127은 원격 호스트에 rsync가 설치되어있지 않기 때문에 발생한다.
(lxc를 사용하여 컨테이너로 파일을 복사했는데 발생함)

➡️ dd 명령은 파티션 이미지를 생성하는데 적합하다.

0개의 댓글