서버/Linux II 2016. 3. 4. 11:46
Linux II - 11. 백업 & 복구
login as: root
root@192.168.1.7's password:
Last login: Thu Mar 3 17:38:59 2016 from 192.168.1.1
[root@CentOS2 /root]#
1. 백업
데이터 정보를 보존하는 방법을 백업이라고 하며, 나중에 복구를 위해서라도 백업은 필수 작업이다.
백업 필요성 |
백업 대상 |
데이터 손실 원인 |
예상하지 못한 상황 발생 관리자 실수 하드웨어 오류 발생 소프트웨어 오류 발생 |
파일 시스템 백업 이후 변경된 파일 시스템 어플리케이션 각종 환경 설정 및 사용자 파일 |
하드웨어 오류 소프트웨어 오류 관리자 실수 공격자 침입 및 도난 |
2. 백업 유형
(요일) |
(일) |
(월) |
(화) |
(수) |
(목) |
(금) |
(토) |
데이터 |
완전 백업 |
A |
B |
C |
D |
E |
F |
증분 백업 |
A |
B |
C |
D |
E |
F | |
차등 백업 |
A |
A,B |
A,B,C |
A,B,C,D |
A,B,C,D,E |
A,B,C,D,E,F |
1) 완전 백업(Full Backup)
- 파일 시스템 중에 특정 내용을 전체 백업하는 방식이다.
- 장점 : 확실한 복구가 가능하다.
- 단점 : 백업 시간 및 비용은 파일 시스템 용량과 비례한다.
2) 증분백업(Incremental Backup)
- 최근에 백업한 시점을 기준으로 변경되거나 추가된 데이터만 백업하는 방식이다.
- 장점 : 백업 시간이 빠르다.
- 단점 : 복구 시간이 느리다.
3) 차등백업(Differential Backup)
- 완전 백업한 시점을 기준으로 변경되거나 추가된 데이터만 백업하는 방식이다.
- 장점 : 확실한 복구가 가능하며, 증분 백업보다 복구 시간이 빠르다.
- 단점 : 백업 시간 및 비용은 파일 시스템 용량과 비례한다.
단, 완전 백업본이랑 최근 차등 백업본을 복원하면 시간을 단축할 수 있다.
- 기본적으로 백업하는 대상은 다음과 같다.
[root@CentOS2 /root]# ls -d /etc /var/log /home /usr
/etc /home /usr /var/log
- 백업을 않해도 되는 대상은 다음과 같다.
[root@CentOS2 /root]# ls -d /tmp /var/tmp /dev /proc
/dev /proc /tmp /var/tmp
3. 'tar' 명령어를 이용한 백업
- 백업에 사용할 디스크 파티션 선정
[root@CentOS2 /root]# fdisk -l /dev/sdc
Disk /dev/sdc: 213 MB, 213909504 bytes
64 heads, 32 sectors/track, 204 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00024910
Device Boot Start End Blocks Id System
/dev/sdc1 1 204 208880 83 Linux
- 파일 시스템 생성 및 마운트 실시
[root@CentOS2 /root]# mkfs -t ext4 /dev/sdc1
[root@CentOS2 /root]# mkdir /backup
[root@CentOS2 /root]# mount /dev/sdc1 /backup
[root@CentOS2 /root]# df -h /dev/sdc1
Filesystem Size Used Avail Use% Mounted on
/dev/sdc1 194M 1.8M 182M 1% /backup
Ex1) 완전 백업 (상대 경로)
[root@CentOS2 /root]#
[root@CentOS2 /root]# cd /home
[root@CentOS2 /home]# ls
lost+found user1 user2
[root@CentOS2 /home]# tar -cf /backup/home.tar *
[root@CentOS2 /home]# ls /backup
home.tar lost+found
[root@CentOS2 /home]# tar -tf /backup/home.tar
lost+found/
user1/
user1/.bash_logout
user1/.mozilla/
user1/.mozilla/plugins/
user1/.mozilla/extensions/
user1/.gnome2/
~ 중간 생략 ~
Ex2) 증분 백업
[root@CentOS2 /home]# useradd ccna
[root@CentOS2 /home]# useradd ccnp
[root@CentOS2 /home]# useradd ccie
[root@CentOS2 /home]# ls
ccie ccna ccnp lost+found user1 user2
[root@CentOS2 /home]# tar -cf /backup/cisco.tar ccna ccnp ccie
[root@CentOS2 /home]# ls /backup
cisco.tar home.tar lost+found
[root@CentOS2 /home]# tar -tf /backup/cisco.tar
ccna/
ccna/.bash_logout
ccna/.mozilla/
ccna/.mozilla/plugins/
ccna/.mozilla/extensions/
ccna/.gnome2/
~ 중간 생략 ~
[root@CentOS2 /home]# userdel -r ccna
[root@CentOS2 /home]# userdel -r ccnp
[root@CentOS2 /home]# userdel -r ccie
[root@CentOS2 /home]# rm -rf /backup/*
[root@CentOS2 /home]# ls /backup
Ex3) 완전 백업과 증분 백업을 이용한 백업 스케쥴 설정
- 'g' 옵션을 이용하여 'backup.list'를 생성하면, 시간 정보를 비교하여 변경된 부분만 증분 백업을 할 수 있다.
일 월 화 수 |
[root@CentOS2 /home]# tar -g /backup/backup.list -cf /backup/home0.tar * (완전 백업) |
일요일(완전 백업)
[root@CentOS2 /home]# tar -g /backup/backup.list -cf /backup/home0.tar *
월요일(증분 백업)
[root@CentOS2 /home]# useradd ccna
[root@CentOS2 /home]# tar -g /backup/backup.list -cf /backup/home1.tar *
화요일(증분 백업)
[root@CentOS2 /home]# useradd ccnp
[root@CentOS2 /home]# tar -g /backup/backup.list -cf /backup/home2.tar *
수요일(증분 백업)
[root@CentOS2 /home]# useradd ccie
[root@CentOS2 /home]# tar -g /backup/backup.list -cf /backup/home3.tar *
[root@CentOS2 /home]# ls /backup
backup.list home0.tar home1.tar home2.tar home3.tar
완전 백업
[root@CentOS2 /home]# tar -tf /backup/home0.tar | grep .bashrc
user1/.bashrc
user2/.bashrc
증분 백업
[root@CentOS2 /home]# tar -tf /backup/home1.tar | grep .bashrc
ccna/.bashrc
증분 백업
[root@CentOS2 /home]# tar -tf /backup/home2.tar | grep .bashrc
ccnp/.bashrc
증분 백업
[root@CentOS2 /home]# tar -tf /backup/home3.tar | grep .bashrc
ccie/.bashrc
- 일요일은 완전 백업을 하는 날이기 때문에, 기존에 'backup.list'를 삭제하고 새로 생성하여 백업을 실시한다.
일요일(완전 백업)
[root@CentOS2 /home]# rm /backup/backup.list
rm: remove 일반 파일 `/backup/backup.list'? y
[root@CentOS2 /home]# tar -g /backup/backup.list -cf /backup/homeA.tar *
[root@CentOS2 /home]# userdel -r ccna
[root@CentOS2 /home]# userdel -r ccnp
[root@CentOS2 /home]# userdel -r ccie
[root@CentOS2 /home]# rm -rf /backup/*
[root@CentOS2 /home]# ls /backup
Ex4) 차등 백업
일 월 화 수 |
[root@CentOS2 /home]# tar -g /backup/backup.list -cf /backup/home0.tar * (완전 백업) [root@CentOS2 /home]# tar -g /backup/backup.list -cf /backup/home2.tar * (차등 백업) |
일요일(완전 백업)
[root@CentOS2 /home]# tar -g /backup/backup.list -cf /backup/home0.tar *
[root@CentOS2 /home]#
[root@CentOS2 /home]# cp /backup/backup.list /backup/fullbackup.list
월요일(증분 백업)
[root@CentOS2 /home]# useradd ccna
[root@CentOS2 /home]# tar -g /backup/backup.list -cf /backup/home1.tar *
화요일(증분 백업)
[root@CentOS2 /home]# useradd ccnp
[root@CentOS2 /home]# tar -g /backup/backup.list -cf /backup/home2.tar *
수요일(차등 백업)
[root@CentOS2 /home]# useradd ccie
[root@CentOS2 /home]#
[root@CentOS2 /home]# cp /backup/fullbackup.list /backup/backup.list
cp: overwrite `/backup/backup.list'? y
[root@CentOS2 /home]#
[root@CentOS2 /home]# tar -g /backup/backup.list -cf /backup/home3.tar *
[root@CentOS2 /home]# ls /backup
backup.list fullbackup.list home0.tar home1.tar home2.tar home3.tar
완전 백업
[root@CentOS2 /home]# tar -tf /backup/home0.tar | grep .bashrc
user1/.bashrc
user2/.bashrc
증분 백업
[root@CentOS2 /home]# tar -tf /backup/home1.tar | grep .bashrc
ccna/.bashrc
증분 백업
[root@CentOS2 /home]# tar -tf /backup/home2.tar | grep .bashrc
ccnp/.bashrc
차등 백업
[root@CentOS2 /home]# tar -tf /backup/home3.tar | grep .bashrc
ccie/.bashrc
ccna/.bashrc
ccnp/.bashrc
4. 백업 복원
위의 예제를 이어서 한다면, 가장 최근의 완전 백업(home0.tar)과 차등 백업(home3.tar)을 풀면 된다.
[root@CentOS2 /home]# rm -rf /home/*
[root@CentOS2 /home]# ls
[root@CentOS2 /home]# ls /backup
backup.list fullbackup.list home0.tar home1.tar home2.tar home3.tar
[root@CentOS2 /home]# tar -xf /backup/home0.tar
[root@CentOS2 /home]# ls
lost+found user1 user2
[root@CentOS2 /home]# tar -xf /backup/home3.tar
[root@CentOS2 /home]# ls
ccie ccna ccnp lost+found user1 user2
- 설정 초기화
[root@CentOS2 /home]# userdel -r ccna
[root@CentOS2 /home]# userdel -r ccnp
[root@CentOS2 /home]# userdel -r ccie
[root@CentOS2 /home]# rm -rf /backup/*
[root@CentOS2 /home]# umount /backup
[root@CentOS2 /home]# rm -rf /backup
[root@CentOS2 /home]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 13G 4.4G 7.3G 38% /
tmpfs 495M 72K 495M 1% /dev/shm
/dev/sda3 477M 2.3M 449M 1% /home
[root@CentOS2 /home]# cd
[root@CentOS2 /root]#
'서버 > Linux II' 카테고리의 다른 글
Linux II - 12. RPM 패키지 관리 (0) | 2016.03.04 |
---|---|
Linux II - 10. Linux 부팅 과정 (0) | 2016.03.03 |
Linux II - 09. Linux Shell (0) | 2016.02.26 |
Linux II - 08. 디스크 Quota (0) | 2016.02.23 |
Linux II - 07. RAID 관리 (0) | 2016.02.23 |