본문 바로가기
모의해킹 침해대응 과정/Liunx 관리

리눅스 백업&복구 / day 12, 13

by 알거음슴 2021. 4. 14.

백업(backup) : 데이터나 정보가 지닌 가치를 보존, 외부 침입자로부터 보호등의 역할 경우에 따라 백업은 매일 해야한다. 백업은 거의 매일같이 이루어지나 복구는 한번 있을까 말까 하다. 둘 사이의 소요시간은 적절한 조절이 필요하다.

 

1. 백업의 종류

전체 백업(Full backup) : 모든 데이터를 한번에 백업하는 방법.

증분 백업(Incremental backup) : 전체 백업된 데이터에 추가되는 부분만 더하는 백업 증분백업은 차등백업과 누적백업으로 나뉜다.

 차등 백업(Differential backup) : 그날의 증가분만 백업을 추가한다.

 누적 백업(Accumulated backup) : 전체백업 이후 매일매일의 데이터를 누적하여 백업한다.

[참고] 리눅스의 백업 S/W

 Bacula(바키라)

 fwbackups

 Amanda(아만다)

 Rsync

 

 

2. 로컬 백업 (tar CMD)

 1) 백업 단위

디렉토리 단위의 백업 : 파일 시스템 내 디렉토리를 백업

 tar CMD 

 cpio CMD

파일 시스템 단위의 백업 : 파일 시스탬 단위 (파티션단위) 백업

 dump/restore CMD

디스크 단위의 백업 : 디스크를 마이그레이션으로 백업

 dd CMD

 

 2) tar 백업 시 주의사항.

 jae1590.tistory.com/19 를 참조.

 * 백업시 절대경로로 백업받지않는다, 되도록 상대경로를 통해 백업을 진행한다.

상대경로 : 백업 시 상대경로의 경우 ( 원하는 위치에서 복구 가능 )

백업

 # cd /home

 # tar cf /mnt/backup/home-backup.tar . (# tar cfz /mnt/backup/home-backup.tar.gz . )

복구

 # cd /home

 # tar xf /mnt/backup/home-backup.tar

 

절대경로 : 백업시 절대경로를 경우 ( 최상위 / 로 가서 진행해야만 원하는 위치로 복구 )

 백업 

# tar cf /mnt/backup/home-backup.tar /home 

 복구 

# cd /

# tar xf /mnt/backup/home-backup.tar

 

 3) tar를 활용한 백업

백업 ( tar -g )

* tar -g 옵션 : tar -g [백업스냅샷] [압축옵션] [백업파일] [백업대상]

ex) tar -g /backup/backup.list -czvf /backup/full_backup.tar.gz /home/user01

-> backup.list 로 /home/user01을 스냅샷 뜻 후 /home/user01 을 full_backup.tar.gz 으로 압축한다.

    tar -g /backup/backup.list -czvf /backup/incre1.tar.gz /home/user01

-> backup.list 의 스냅샷을 비교 후 /home/user01 의 변경분만 찾아서 incre1.tar.gz 으로 압축한다.

 

복구 시 

백업한 파일들을 복구한다. 단 주의사항은 백업한 순서대로 복구처리를 진행하여야 한다.

ex) 풀백업 파일 -> 증분1 -> 증분2 -> 증분3 ...

 

 4) tar CMD를 활용한 데이터 마이그레이션 

cp /test1 /test2 를 활용해서 마이그레이션을 진행했다고 해보자. 이때 발생하는 문제점을 보자.

 /test1 /test2 의 파일의 갯수가 다르다.

 /test1 /test2 파일의 시간, 퍼미션, 소유정보 즉 속성정보가 다르다.

 /test1 /test2 전체 용량의 크기가 다르다.

그렇기에 백업 작업을 통해서 마이그레이션을 진행해야만 정확하게 이관작업을 이행할 수 있다.

ex) 시나리오 : /test1 의 자료를 /test2 로 마이그레이션

[root@server1 /test1]# tar cvf - . | (cd /test2 ; tar xvf -)

[root@server1 /test1]# ls -al /test1 /test2

 

 * tar cvf - . | (cd /test2 ; tar xvf -) 명령어의 분석.

tar cvf : cvf 옵션으로 tar를 수행

- : file.tar (standard output)

. : 현재 폴더

(cd /test2 : /test2 로 이동

; : 다음명령 수행

tar xvf : xvf 옵션으로 tar 를 수행

- : file.tar (standard output)

 * 정확히는 file.tar 파일을 생성하는것이 아닌. - 에 입력되는 내용이 파이프를 타고 반대편 - 로 바로 적용되는방식.

즉 file.tar 가 생성되지 않고 바로 백업 및 복구가 동시에 이루어 짐으로 백업시간 과 복구시간이 동시에 이루어진다.

 

 5) 운영체제 전체 백업.

/ 밑에 운영체제 전체를 백업하는 경우엔 /proc /mnt /tmp 등 궂이 필요하지 않은 부분을 제외할 수 있다 이떈 tar옵션 중 --exclud=/proc 를 활용하여 적용 가능하며 제외할 디렉토리가 모두 지정되면 absolute-name / 으로 마무리 하면된다.

# mkdir -p /RootBackup

# time tar cvzfp /RootBackup/full_backup.tar.gz \

> --exclude=/proc --exclude=/tmp \

> --exclude=/media --exclude=/RootBackup \

> --absolute-name /

 

 

 

3. 원격 백업 (rsync CMD)

 rsync : 여러대의 서버를 분산하여 서버 데이터를 서로 동기화 하는데 주로 사용되는 tool 또한 mirror사이트 제작에도 많이 활용된다.

 

 1) rsync 명령어 방법 (가벼운 동기화 용도)

형식

 # rsync -avz --delete -e ssh <원격서버:source> <Destination>

 # rsync -avz --delete -e ssh 192.168.0.250:/backup /backup

-a : (archive) rlptgoD 등 다양한 옵션의 합. 아카이빙을 진행함

-v : (verbose) 아카이빙 과정을 보여줌

-z : 압축과정 진행. (100M 이하는 큰 의미 없음)

--delete : 원본에서 삭제된 파일은 백업본에서도 삭제처리 진행하는 옵션

-e ssh : ssh 를 통해서 통신한다.

 

[참고] rsync local과 remote 간의 동기화 관계

Source                    Destination

-------------------------------------

Local     --- sync --->  Local        (EX) rsync -avz --delete -e ssh /backup/ /test100

Local     --- sync --->  Remote     (EX) rsync -avz --delete -e ssh /backup/ IP:/test100

Remote  --- sync --->  Local        (EX) rsync -avz --delete -e ssh IP:/test100/ /backup

-------------------------------------

 

[참고] /의 유무 ( 넣을꺼면 둘다 넣고 뺼꺼면 둘다 뺴라)

# rsync -avz --delete -e ssh /backup/ /test101/  => /backup/* <---> /test101/*

# rsync -avz --delete -e ssh /backup /test101    => /backup/* <---> /test101/backup/*

 

[실습] / 의 유무에 따른 차이점을 비교하며 CMD를 수행해보자.

[실습] 원격 서버 <--> 로컬 환경에서 서로 백업을 주고 받아보자.

 

 

 2) 이기종간의 백업. (linux <--> windows)

백업 tool 이용 : freefilesync.org/download.php설치 진행 하여 진행 가능

 

FreeFileSync

Download FreeFileSync 11.9. FreeFileSync is a free open source data backup software that helps you synchronize files and folders on Windows, Linux and macOS.

freefilesync.org

 

 

 3) rsync 서버 설정 과정 (mirroring site 제작에 주로 쓰임)

원본 사이트와 미러링 사이트를 구성하여 원본사이트의 데이터를 미러사이트에서도 이용할 수 있도록 하는 기능.

 ssh를 이용한 rsync데이터 동기화를 위해서는 서버에 ssh서버가 작동 하고 있어야 한다.

 rsync 서버를 구축하기 위해서는 rsync 설정파일인 /etc/rsyncd.conf 파일을 설정해야 한다. 이때 설정파일을 구성한 곳이 서버가 되고 받아보는곳이 클라이언트가 된다.

 

선수작업

yum install rsync-daemon rsync

 rsync-daemon : 서버 용 패키지

  rsyncd.service : 항상 서비스 시 켜두는 데몬

  rsyncd.socket : 가끔 서비스 켜두는 데몬

 rsync : 클라이언트 용 패키지 (기본 설치 되어있음)

 

/etc/rsyncd.conf 생성

 vi /etc/rsyncd.conf

* 설정파일 내용분석 

uid=nobody  :  사용자 아이디

gid=nobody  :  그룹 아이디

use chroot=no  :  yes 지정된 경로 이외에 다른경로로 접속 못하게 함

max connections=5  :  최대 접속자 수 0=무한대

timeout=60  :  클라이언트 접속이 idle 상태일때 접속을 끊어버릴 초 시간단위

 

[Backup]  :  rsync 서비스 명

comment=Rsync Backup Server  :  서비스의 대한 설명 

path=/backup1  :  미러링 될 데이터의 경로 (대상파일경로)

read only=no   :  yes 다운로드 가능 / no 업로드 가능.

 

rsyncd.socket

 1) 데몬을 기동시켜준다.

systemctl enable --now rsyncd.socket

systemctl status rsyncd.socket

 2) 포트 확인

cat /etc/serivces | grep rsync -> rsync 포트번호 확인.

netstat -antp | grep 873  -> LISTEN 상태 여부 확인

 

통신 진행

server 는 rsyncd.socket 데몬 기동, 포트 확인이, 동기화 자료가 준비 되었다면 cliant는 rsync CMD를 수행한다.

이때 cliant 의 rsync CMD는 수행값이 조금 다르다

ex)

기존 : rsync -avz --delete -e ssh 172.16.6.252:/Backup /backup1

변경 : rsync -avz --delete -e ssh 172.16.6.252::Backup /backup1

 

[실습] server1, 2를 활용하여 미러링서버를 구축해보자.