2024_02_08_백업

이기태·2024년 2월 8일

리눅스

목록 보기
9/27

1. 백업

풀(full) 백업

  • 모든 데이터를 통째로 한 번에 백업.

증분(Incremental) 백업

  • 완전 백업 이후 변경된 데이터만 백업하는 방법.

차등(differential) 백업

  • 처음 풀 백업하고 이후 증가분의 누적본 이후 몇일 뒤 풀백업 이후 누적본 반복.

백업 명령

  • 파일& 디렉토리 단위: tar/cpio CMD
  • 파일시스템 단위: dump/restroe CMD
  • 디스크 단위: dd CMD

대표적인 백업 종류

(로컬 백업) tar CMD
(원격 백업) rsync CMD

로컬 백업

  • tar CMD
    # tar cvf file.tar file1 file2
    # tar tvf file.tar
    # tar xvf file.tar

[참고] tar CMD OPTIONS
-z : gzip
-j : bzip2
-J : xz
[절대경로 vs 상대경로]
절대경로: 백업시 절대 경로를 사용하면 복원시 루트에서 복원
#tar cf /mnt/backup/home-backup.tar /home

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

상대경로: 백업시 상대 경로를 사용하면 복원시 그 경로에 들어가서 복원
#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

[실습] 백업 full -> incremental 복원 full -> incremental
# cd /home/user01
# tar -g /backup/backup.list -cvzf /backup/fullbackup.tar.gz /home/user01

# cd /home/user01
# tar -g /backup/backup.list -cvzf /backup/incremental1.tar.gz /home/user01

디렉토리 마이그레이션

cp -r 명령으로 속성이 변경되거나 장치파일등 옮겨지지않는 파일이 있을 수 있다. 권한등도 변경되어 보안이 약해 질 수 있다.

  • /test1/ -> /test2/
    # cd /test1
    # time tar cvf - . | (/test2 ; tar xvf -) // 내용 많으면 v 빼자
    - : stdout -> 스탠다드 아웃풋, 모니터 | 위에선 file.tar

OS 전체 백업

만약 전체를 백업하고 싶은데 몇몇 파일은 백업하고 싶지 않을때
'--exclude=<제외할 디렉토리>' 를 이용.

# tar cvzpf /backup/<백업파일명>.tar.gz --exclude=<제외할 디렉토리> --absolute-name /
# tar cvzf /backup/backup_$(date +%m%d).tar.gz --exclude=/test/b --exclude=/test/c --absolute-name /test

  • OS 백업
    mkdir -p /RootBackup
    time tar cvzf /RootBackup/full.tar.gz --exclude=/proc --exclude=/tmp --exclude=/media --exclude=/sys --exclude=/run --exclude=/mnt --exclude=/RootBackup --absolute-name /
    -> 백업파일,임시파일, 부팅시 생성파일은 빼자. 백업 디렉토리 이름도 특이하게 짓자.

복원

전체 복원

# tar tzvf /backup/backup.tar.gz // 상대경로 절대경로 확인
(전체) # cd /test; tar xzvf /backup/test.tar.gz

일부 복원

(일부) # cd /test; tar xzvf /backup/test.tar.gz ./user01 ./user02/.bashrc

원격 백업

rsync CMD

rsync CMD

  • 원본데이터에 /를 붙이냐 안붙이냐 주의하자.

  • (L -> L) # rsync -avz --delete -e ssh /src /dest

  • (L -> R) # rsync -avz --delete -e ssh /src server2:/dest

  • (R -> L) # rsync -avz --delete -e ssh server2:/src /dest

[참고] $HOME/.bashrc
alias LS='rsync -a --delete'
alias RS='rsync -avz --delete -e ssh'
-> # RS /src /dest

[참고] File Synchronization

  • (Unix/Linux) <-- sync --> (Unix/Linux)
    => rsync CMD : LOCAL - LOCAL , LOCAL - Remote
  • (WiN) <--sync-->(WIN)
    => FreeFileSync:
    - L - L,
    - L - R: 공유폴더 활용
  • (Unix/Linux)<--sync--> (WIN) cwRsync

Mirror Site

  • (rsync Server)
    # yum -y install rsync-daemon rsync
    # vi /etc/rsyncd.conf
    ---------------------------------------
    uid = nobody / 사용자 아이디 /
    gid = nobody / 그룹 아이디 /
    use chroot = yes / yes : 지정된 경로 이외에 다른 경로로 접속 못하게 함 /
    max connections = 30 / 최대 접속자 수 : 0은 무제한을 나타냄 /
    timeout = 120 / Client의 접속이 idle상태일 때 접속을 끊어버릴 초 단위 시간 /
    [src] / rsync 서비스명 /
    comment = Rsync Backup Server / rsync 서비스에 대한 설명 /
    path = /backup1 / 미러링될 데이터의 경로 (대상파일경로) /
    host allow = 192.168.10.20
    secrets file = /root/rsyncd.secret
    auth users = user01
    read only = yes / yes : 다운로드 가능 / no : 업로드 가능 /
    ---------------------------------------
    ---------------------------------------
    # vi /root/rsyncd.secret
    ---------------------------------------
    user01:password
    ---------------------------------------
    # chmod 600 /root/rsyncd.secret // 시크릿 파일을 /etc일때
    # systemctl enable --now rsyncd.socket
  • (rsync Client)
    # rsync -avz --delete -e ssh server2::src /dest

0개의 댓글