아카이브는 다수의 파일과 디렉토리로 이루어진 하나의 파일이다. 다수의 파일을 하나로 묶어 사용하면 이동, 공유, 저장 등의 작업이 수월해진다. (파일의 관리와 추적이 용이)
아카이브는 파일시스템 이미지를 만들거나 데이터를 백업하는데에 주로 사용된다.
$ tar cvf '아카이브 이름'.tar '대상 파일'
tar 명령어에 주로 사용되는 옵션으로 c, v, f 가 있다.
$ tar cvzf '아카이브 이름'.tar.gz '대상 파일'
기존 명령어에 z 옵션을 추가하면 생성한 아카이브를 gzip 프로그램으로 압축할 수 있다.
큰 용량의 파일을 작게 나누는 명령어이다.
(용량이 큰 프로그램 로그 파일등에 활용할 수 있음)
$ 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"
$ find /var/www/html/ -iname "*.mp4" \
-exec tar -rvf videos.tar {} \;
/var/www/html/
아래의 .mp4 확장자인 파일을 찾아 -exec
아래의 명령을 수행한다. ({}는 find 명령으로 찾아낸 파일을 의미함)
$ locate '대상 파일'
find
보다 locate
가 결과를 더 빠르게 출력한다.
(locate 명령은 인덱스를 대상으로 검색하기 때문에 find에 비해 빠른 소요시간을 갖고있으나 정확도가 떨어진다.)
$ dd if='원본 드라이브' of='저장할 경로(파일 혹은 장치)[.img]'
$ dd if='복원할 대상[.img]' of='복원할 위치'
rsync 명령은 로컬/원격 호스트에 대상 파일이나 디렉토리를 복사하는 명령이다. (주로 백업용으로 사용)
데이터를 압축한 형태로 전송하고, 반복적으로 실행하는 경우 원본과 대조하여 수정된 부분만 전송하기때문에 scp보다 실행 속도가 빠르다.
$ rsync -av '대상 파일' 'user'@'IP 주소':'사본을 저장할 경로'
a: 아카이브 모드(재귀적으로 동작함)
, v: 상세 결과 출력
code 127은 원격 호스트에 rsync가 설치되어있지 않기 때문에 발생한다.
(lxc를 사용하여 컨테이너로 파일을 복사했는데 발생함)