백업(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설치 진행 하여 진행 가능
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를 활용하여 미러링서버를 구축해보자.
'모의해킹 침해대응 과정 > Liunx 관리' 카테고리의 다른 글
리눅스 SELinux /day 15 (0) | 2021.04.15 |
---|---|
리눅스 네트워크 인터페이스 관리 / day 14 (0) | 2021.04.15 |
리눅스 잡 스케줄링 / day 12 (0) | 2021.04.14 |
리눅스 사용자 그룹관리 / day 12 (0) | 2021.04.14 |
리눅스 software 관리 RPM/YUM / day 10 (0) | 2021.04.12 |