[관련 게시물]
백업 개념
2020/08/26 - [리눅스/공통] - 다양한 백업 전략에 대한 간단한 설명
Tar 백업
2019/09/20 - [리눅스/공통] - Tar를 이용한 백업과 복원 - 일반 데이터 백업
2020/08/13 - [리눅스/공통] - Tar를 이용한 리눅스 시스템 전체 백업과 복원
2020/08/28 - [리눅스/공통] - GNU Tar를 이용한 증분 백업과 복원의 개념 이해
2020/08/30 - [리눅스/공통] - GNU Tar를 이용한 차등 백업과 복원(증분 백업의 응용)
Clonezilla 백업
2020/09/03 - [리눅스/공통] - Clonezilla Live를 이용한 디스크/파티션 백업
2020/09/05 - [리눅스/공통] - Clonezilla Live를 이용한 디스크/파티션 복원
애플리케이션 백업
2019/01/15 - [서버 운영/APM 서버 구축] - MariaDB & MySQL 백업과 복원 - Nextcloud 14
2019/03/09 - [서버 운영/워드프레스(Wordpress)] - 워드프레스(Wordpress) 백업
윈도 백업
2019/08/30 - [윈도 10] - 컴퓨터 주요 자료 백업 후 공장 초기화와 필수 응용 프로그램 설치 그리고 백업자료 복구 과정이 글은 본래 일반 데이터 백업과 리눅스 시스템 전체 백업에 대하여 설명하고 있었습니다. 그러나 글이 번잡하여 독자가 읽고 이해하기에 쉽지가 않았습니다.
그래서 두 내용을 분리하여 기존 글은 일반 데이터 백업에 대해서만 다루고 리눅스 시스템 전체 백업에 대한 내용은 글을 새로 파서 다루었습니다. 해당 내용은 아래 링크를 참고하시기 바랍니다.
또한 해당 내용들은 가능한 한 보다 많은 정보를 가독성 높게 제공하기 위해 수정 증보하였습니다.
Tar를 이용한 일반 데이터 백업과 복원
일반 데이터 백업
백업할 데이터 생성
study@study-VirtualBox:~$ mkdir data study@study-VirtualBox:~$ cd data study@study-VirtualBox:~/data$ mkdir dir study@study-VirtualBox:~/data$ cd dir study@study-VirtualBox:~/data/dir$ touch dir_file01.txt study@study-VirtualBox:~/data/dir$ cd .. study@study-VirtualBox:~/data$ fallocate -l 100 file01.txt study@study-VirtualBox:~/data$ fallocate -l 10k file02.txt study@study-VirtualBox:~/data$ ls -l * -rw-rw-r-- 1 study study 100 8월 6 12:47 file01.txt -rw-rw-r-- 1 study study 10240 8월 6 12:47 file02.txt dir: 합계 0 -rw-rw-r-- 1 study study 0 8월 6 12:45 dir_file01.txt study@study-VirtualBox:~/data$
위 명령을 통해 생성된 디렉터리와 파일의 트리구조 확인
study@study-VirtualBox:~$ tree data data ├── dir │ └── dir_file01.txt ├── file01.txt └── file02.txt 1 directory, 3 files study@study-VirtualBox:~$
백업 데이터를 저장할 디렉터리 생성
$ sudo mkdir 백업 파일을 저장할 디렉터리명
study@study-VirtualBox:~$ mkdir backup
필요한 디렉터리와 파일 백업
백업 기본 명령어
$ sudo tar cvpzf /백업 경로/백업 파일명.tar.gz 백업 대상의 상대 경로
위의 백업 기본 명령어는 말 그대로 가장 기초적인 백업 명령어 구문입니다
study@study-VirtualBox:~$ sudo tar cvpzf ~/backup/backup_file_01.tar.gz data [sudo] study의 암호: data/ data/file02.txt data/dir/ data/dir/dir_file01.txt data/file01.txt study@study-VirtualBox:~$
study@study-VirtualBox:~$ sudo tar cvpzf ~/backup/backup_file_02.tar.gz ./data ./data/ ./data/file02.txt ./data/dir/ ./data/dir/dir_file01.txt ./data/file01.txt study@study-VirtualBox:~$
study@study-VirtualBox:~/data$ sudo tar cvpzf ~/backup/backup_file_03.tar.gz * dir/ dir/dir_file01.txt file01.txt file02.txt study@study-VirtualBox:~/data$
study@study-VirtualBox:~$ sudo tar cvpzf ~/backup/backup_file_04.tar.gz /home/study/data tar: 구성 요소 이름 앞에 붙은 `/' 제거 중 /home/study/data/ /home/study/data/file02.txt /home/study/data/dir/ /home/study/data/dir/dir_file01.txt /home/study/data/file01.txt
study@study-VirtualBox:~$ sudo tar cvpzfP ~/backup/backup_file_05.tar.gz /home/study/data /home/study/data/ /home/study/data/file02.txt /home/study/data/dir/ /home/study/data/dir/dir_file01.txt /home/study/data/file01.txt study@study-VirtualBox:~$
sudo : 계정 변경 명령어
관리자 권한으로 이하의 명령을 실행하라
tar : 묶음/압축 명령어
cvpzf : tar 명령어의 옵션
-c, --create : 아카이브 파일 생성
-v, --verbose : 처리 중인 파일 출력
-p, --same-permissions, --preserve-permissions : 모든 퍼미션 정보 유지, 보호
-z, --gzip, --ungzip : 아카이브 파일을 gzip으로 압축하거나 풂
-f, --file [HOSTNAME:]F : 저장 파일 혹은 장치 파일 F에 저장
tar 명령어의 옵션은 두문자 옵션 맨 앞에 -을 붙이는 것이 기본 사용법이지만, 위 예시처럼 붙이지 않아도 옵션임을 인식하고 작동합니다.
tar를 이용한 시스템 백업에서 가장 중요한 옵션은 -p입니다. 시스템을 백업할 때 가장 중요한 것은 각 디렉토리와 파일들의 퍼미션(권한) 정보를 온전히 유지하는 것입니다. 퍼미션이 유지가 되지 않으면 소유자, 사용 그룹, 제3자의 권한이 뒤바뀌게 되어 혼란을 줄 뿐만 아니라 시스템에 치명적인 보안상의 취약점이 생기기 때문입니다.
다른 옵션은 순서가 바뀌더라도 문제를 일으키지 않지만 반드시 -f 옵션만큼은 경로와 파일명이 연속되어 있어야 하므로 옵션의 맨 나중에 위치해야 합니다.
Tar 압축 파일 내용 확인
study@study-VirtualBox:~$ ls backup data 공개 다운로드 문서 바탕화면 비디오 사진 음악 템플릿 study@study-VirtualBox:~$ cd backup study@study-VirtualBox:~/backup$ ls backup_file_01.tar.gz backup_file_03.tar.gz backup_file_05.tar.gz backup_file_02.tar.gz backup_file_04.tar.gz study@study-VirtualBox:~/backup$ tar -tvf backup_file_01.tar.gz drwxrwxr-x study/study 0 2020-08-06 12:47 data/ -rw-rw-r-- study/study 10240 2020-08-06 12:47 data/file02.txt drwxrwxr-x study/study 0 2020-08-06 12:45 data/dir/ -rw-rw-r-- study/study 0 2020-08-06 12:45 data/dir/dir_file01.txt -rw-rw-r-- study/study 100 2020-08-06 12:47 data/file01.txt study@study-VirtualBox:~/backup$ tar -tvf backup_file_02.tar.gz drwxrwxr-x study/study 0 2020-08-06 12:47 ./data/ -rw-rw-r-- study/study 10240 2020-08-06 12:47 ./data/file02.txt drwxrwxr-x study/study 0 2020-08-06 12:45 ./data/dir/ -rw-rw-r-- study/study 0 2020-08-06 12:45 ./data/dir/dir_file01.txt -rw-rw-r-- study/study 100 2020-08-06 12:47 ./data/file01.txt study@study-VirtualBox:~/backup$ tar -tvf backup_file_03.tar.gz drwxrwxr-x study/study 0 2020-08-06 12:45 dir/ -rw-rw-r-- study/study 0 2020-08-06 12:45 dir/dir_file01.txt -rw-rw-r-- study/study 100 2020-08-06 12:47 file01.txt -rw-rw-r-- study/study 10240 2020-08-06 12:47 file02.txt study@study-VirtualBox:~/backup$ tar -tvf backup_file_04.tar.gz drwxrwxr-x study/study 0 2020-08-06 12:47 home/study/data/ -rw-rw-r-- study/study 10240 2020-08-06 12:47 home/study/data/file02.txt drwxrwxr-x study/study 0 2020-08-06 12:45 home/study/data/dir/ -rw-rw-r-- study/study 0 2020-08-06 12:45 home/study/data/dir/dir_file01.txt -rw-rw-r-- study/study 100 2020-08-06 12:47 home/study/data/file01.txt study@study-VirtualBox:~/backup$ tar -tvf backup_file_05.tar.gz tar: 구성 요소 이름 앞에 붙은 `/' 제거 중 drwxrwxr-x study/study 0 2020-08-06 12:47 /home/study/data/ -rw-rw-r-- study/study 10240 2020-08-06 12:47 /home/study/data/file02.txt drwxrwxr-x study/study 0 2020-08-06 12:45 /home/study/data/dir/ -rw-rw-r-- study/study 0 2020-08-06 12:45 /home/study/data/dir/dir_file01.txt -rw-rw-r-- study/study 100 2020-08-06 12:47 /home/study/data/file01.txt study@study-VirtualBox:~/backup$
일반 데이터 백업 파일 복원
Tar 압축 아카이브 파일 해제 - 현재 위치
$ sudo tar xvpzf /경로/백업 파일명.tar.gz
study@study-VirtualBox:~/backup$ sudo tar -zxvf backup_file_01.tar.gz data/ data/file02.txt data/dir/ data/dir/dir_file01.txt data/file01.txt study@study-VirtualBox:~/backup$
study@study-VirtualBox:~/backup$ sudo tar -zxvf backup_file_02.tar.gz ./data/ ./data/file02.txt ./data/dir/ ./data/dir/dir_file01.txt ./data/file01.txt study@study-VirtualBox:~/backup$
study@study-VirtualBox:~$ tree backup
backup
├── backup_file_01.tar.gz
├── backup_file_02.tar.gz
├── backup_file_03.tar.gz
├── backup_file_04.tar.gz
├── backup_file_05.tar.gz
└── data
├── dir
│ └── dir_file01.txt
├── file01.txt
└── file02.txt
2 directories, 8 files
study@study-VirtualBox:~$
위 두 파일을 만들 때 사용된 압축 명령은 다소 차이가 있지만 압축 해제의 결과는 data 디렉터리와 그 안의 내용물이 현재 위치에 풀리는 것으로 동일합니다.
study@study-VirtualBox:~/backup$ sudo tar -zxvf backup_file_03.tar.gz dir/ dir/dir_file01.txt file01.txt file02.txt
study@study-VirtualBox:~$ tree backup
backup
├── backup_file_01.tar.gz
├── backup_file_02.tar.gz
├── backup_file_03.tar.gz
├── backup_file_04.tar.gz
├── backup_file_05.tar.gz
├── dir
│ └── dir_file01.txt
├── file01.txt
└── file02.txt
1 directory, 8 files
study@study-VirtualBox:~$
세번째 파일은 data 디렉터리 안의 것만 압축 해제되고 상위 디렉터리인 data는 없습니다.
study@study-VirtualBox:~/backup$ sudo tar -zxvf backup_file_04.tar.gz home/study/data/ home/study/data/file02.txt home/study/data/dir/ home/study/data/dir/dir_file01.txt home/study/data/file01.txt study@study-VirtualBox:~/backup$
backup
├── backup_file_01.tar.gz
├── backup_file_02.tar.gz
├── backup_file_03.tar.gz
├── backup_file_04.tar.gz
├── backup_file_05.tar.gz
└── home
└── study
└── data
├── dir
│ └── dir_file01.txt
├── file01.txt
└── file02.txt
4 directories, 8 files
study@study-VirtualBox:~$
네 번째 파일은 해당 파일이 위치한 곳에 절대 경로로 적었던 형태와 동일한 트리 구조가 유지된 채 압축이 해제됩니다.
study@study-VirtualBox:~/backup$ sudo tar -zxvf backup_file_05.tar.gz tar: 구성 요소 이름 앞에 붙은 `/' 제거 중 /home/study/data/ /home/study/data/file02.txt /home/study/data/dir/ /home/study/data/dir/dir_file01.txt /home/study/data/file01.txt study@study-VirtualBox:~/backup$
study@study-VirtualBox:~/backup$ sudo tar -zxvPf backup_file_05.tar.gz /home/study/data/ /home/study/data/file02.txt /home/study/data/dir/ /home/study/data/dir/dir_file01.txt /home/study/data/file01.txt study@study-VirtualBox:~/backup$
위 명령처럼 P옵션을 추가하면 파일의 현재 위치가 아니라 압축 파일에 담긴 절대 경로와 동일한 트리 구조로 압축이 해제됩니다.
Tar 압축 아카이브 파일 해제 - 해제 위치 지정
$ sudo tar xvpzf /경로/백업 파일명.tar.gz -C 파일을 풀 디렉터리
study@study-VirtualBox:~$ mkdir restore study@study-VirtualBox:~$
study@study-VirtualBox:~/backup$ sudo tar -zxvf backup_file_01.tar.gz -C ~/restore data/ data/file02.txt data/dir/ data/dir/dir_file01.txt data/file01.txt study@study-VirtualBox:~/backup$ tree ~/restore /home/study/restore └── data ├── dir │ └── dir_file01.txt ├── file01.txt └── file02.txt 2 directories, 3 files study@study-VirtualBox:~/backup$
study@study-VirtualBox:~/backup$ sudo tar -zxvPf backup_file_05.tar.gz -C ~/restore /home/study/data/ /home/study/data/file02.txt /home/study/data/dir/ /home/study/data/dir/dir_file01.txt /home/study/data/file01.txt study@study-VirtualBox:~/backup$P 옵션을 붙여 압축을 해제하는 경우 -C 옵션을 사용하여 해제 위치를 지정하더라도 기존 절대 경로 트리 구조 형태로 복원됩니다.
'리눅스 > 공통' 카테고리의 다른 글
소스 컴파일(sources compile)을 통한 패키지 설치(CLI를 통한 패키지 설치 02) - GParted 설치의 예 (0) | 2020.07.26 |
---|---|
패키지 관리자를 통한 패키지 설치(CLI를 통한 패키지 설치 01) - GParted 설치의 예 (0) | 2020.07.26 |
리눅스(Linux) 런레벨(RunLevel) (2) | 2020.06.16 |
리눅스(Linux) 시스템 중지, 종료, 재부팅 - halt, poweroff, reboot, shutdown, init (0) | 2020.06.12 |
Rufus로 부팅 가능한 USB 디스크 만들기 - 예시 : 우분투(Ubuntu) 20.04 (1) | 2020.04.24 |
리눅스 주요 배포판의 정보와 관련 링크 모음 (0) | 2019.12.05 |
GUI를 통한 패키지 설치 - GParted 설치의 예 (0) | 2019.09.01 |
어떤 리눅스를 선택할 것인가? (0) | 2018.10.09 |