Chapter 16 백업 및 복구 Solaris 2 . ufsdump 와 ufsrestore 솔라리스10 Chapter 16 백업 및 복구 Solaris 2 . ufsdump 와 ufsrestore
Solaris2. ufsdump 와 ufsrestore UFS 파일 시스템 백업 : ufsdump UFS 파일 시스템 복구 : ufsrestore 백업의 종류 풀 백업 ( Full backup ) 인크리멘탈 백업 ( Incremental Backup )
백업 명령어 형식 ufsdump [0123456789fustdWwnNDCcbavloS [argument]] filesystem 옵 션 설 명 백업 레벨, 0은 항상 풀 백업, 1부터 9까지 인크리멘탈 백업 레벨(Incremental Backup Level) 로 사용 u 백업 대상이 파일 시스템일 경우 /etc/dumpdates 파일에 백업 레벨을 기록하게 해준다. 백업 대상은 디렉토리, 파일도 가능하다. 이 경우에는 /etc/dumpdates 파일에 백업 로그를 남기지는 않는다. f 백업 장치를 지정한다. /dev/rmt/0n 하면 norewind를 지정한 것이다.
풀 백업 # ufsdump -0uf /dev/rmt/0n /back DUMP: 이 레벨 0 덤프의 날짜: DUMP: 마지막 레벨 0 덤프의 날짜: epoch DUMP: /dev/rdsk/c0t0d0s6을(를) 덤프하는 중 (solaris10:/test) /dev/rmt/0n(으)로. DUMP: 매핑 (패스 I) [정규 파일] DUMP: 매핑 (패스 II) [디렉토리] DUMP: 32 KB 레코드를 쓰는 중 DUMP: 898 블록 (449KB)이 예상됩니다. DUMP: 덤프 중 (패스 III) [디렉토리] DUMP: 덤프 중 (패스 IV) [정규 파일] DUMP: 볼륨 1의 894 블록 (447KB) 1568 KB/sec DUMP: 덤프 완료 DUMP: 에서 레벨 0 덤프
/etc/dumpdates 파일 # cat /etc/dumpdates /dev/rdsk/c0t0d0s6 0 Sat Sep 20 2008 백업 받은 파일 시스템 백업레벨 백업 받은 날짜
인크리멘탈 백업 백업 스케쥴 인크리멘탈 백업은 풀백업을 받고 나서 변화된 부분만을 백업 받는 것이다. 매월 1일 풀백업 월,화,수,목,금,토 인크리멘탈 백업, 일=월~토 변경된 내용 백업 날 짜 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 … 요 일 일 월 화 수 목 금 토 백업레벨
크론탭에 등록 # crontab -e #ident "@(#)root 1.21 SMI" <중간 생략...> 0 11 1 * * * /usr/sbin/ufsdump -0uf /dev/rmt/0n /test >> /var/adm/backuplog 2>&1 0 11 * * * 0 /usr/sbin/ufsdump -1uf /dev/rmt/0n /test >> /var/adm/backuplog 2>&1 0 11 * * * 1 /usr/sbin/ufsdump -2uf /dev/rmt/0n /test >> /var/adm/backuplog 2>&1 0 11 * * * 2 /usr/sbin/ufsdump -3uf /dev/rmt/0n /test >> /var/adm/backuplog 2>&1 0 11 * * * 3 /usr/sbin/ufsdump -4uf /dev/rmt/0n /test >> /var/adm/backuplog 2>&1 0 11 * * * 4 /usr/sbin/ufsdump -5uf /dev/rmt/0n /test >> /var/adm/backuplog 2>&1 0 11 * * * 5 /usr/sbin/ufsdump -6uf /dev/rmt/0n /test >> /var/adm/backuplog 2>&1 0 11 * * * 6 /usr/sbin/ufsdump -7uf /dev/rmt/0n /test >> /var/adm/backuplog 2>&1
인크리멘탈 백업 # cal > /back/cal.txt # ps -ef > /back/ps_ef.txt # ls /back/*.txt /back/cal.txt /back/ps_ef.txt # ufsdump -2uf /backup/back.inc.MON /back DUMP: 이 레벨 2 덤프의 날짜: <중간 생략...> DUMP: 볼륨 1의 318 블록 (159KB) 6913 KB/sec DUMP: 덤프 완료 DUMP: 에서 레벨 2 덤프 # cat /etc/dumpdates /dev/rdsk/c1d1s0 0 Sun Sep 6 2009 /dev/rdsk/c1d1s0 2 Sun Sep 6 2009
백업한 내용 복구 하기 # mkdir /restore # cd /restore # ufsrestore -rvf /backup/back.FULL Verify volume and initialize maps Media block size is 126 Dump date: Fri Sep 04 2009 Dumped from: the epoch Level 0 dump of /back on solaris10:/dev/dsk/c1d1s0 Label: none Begin level 0 restore <중간 생략...> extract file ./vold.conf Add links Set directory mode, owner, and times. Check the symbol table. Check pointing the restore
인크리멘탈 백업 파일 복구 # ufsrestore -rvf back.inc.MON Verify volume and initialize maps Media block size is 126 Dump date: Fri Sep 04 2009 Dumped from: Fri Sep 04 2009 Level 2 dump of /back on solaris10:/dev/dsk/c1d1s0 Label: none Begin incremental restore <중간 생략...> extract file ./vold.conf Remove leaf ./RSTTMP025 extract file ./cal1.txt extract file ./ps_ef.txt Add links Set directory mode, owner, and times. Check the symbol table. Check pointing the restore
DATE=`/usr/bin/date | nawk '{print $3}'` if (( $DATE == 1 )) then cd / # vi /down/backup.ksh #!/bin/ksh LANG=C DATE=`/usr/bin/date | nawk '{print $3}'` if (( $DATE == 1 )) then cd / /usr/sbin/ufsdump -0uf /backup/back.FULL /back /usr/bin/date >> /backup.log
else DAY=`/usr/bin/date | nawk '{print $1}'` case "$DAY" in 'Mon') cd / /usr/sbin/ufsdump -2uf /backup/back.MON /back /usr/bin/date >> /backup.log ;; 'Tue') /usr/sbin/ufsdump -3uf /backup/back.TUE /back
'Wed') cd / /usr/sbin/ufsdump -4uf /backup/back 'Wed') cd / /usr/sbin/ufsdump -4uf /backup/back.WED /back /usr/bin/date >> /backup.log ;; 'Thu') /usr/sbin/ufsdump -5uf /backup/back.THU /back 'Fri') /usr/sbin/ufsdump -6uf /backup/back.FRI /back
‘Sat') cd / /usr/sbin/ufsdump -7uf /backup/back ‘Sat') cd / /usr/sbin/ufsdump -7uf /backup/back.SAT /back /usr/bin/date >> /backup.log ;; ‘Sun') /usr/sbin/ufsdump -1uf /backup/back.SUN /back esac fi # chmod 755 /test/backup.ksh solaris10 #
매일 새벽 2시 30분에 백업 스크립트 실행 # crontab -e #ident "@(#)root 1.21 SMI" <중간 생략...> 30 2 * * * /test/backup.ksh # crontab -l 30 2 * * * /test/backup.ksh
파일 이미지 백업 # mkdir /BACKUP # ufsdump -0uf /BACKUP/etc.dump /etc DUMP: 마지막 레벨 0 덤프의 날짜: epoch DUMP: /dev/rdsk/c0t0d0s0을(를) 덤프하는 중 (solaris10:/) /BACKUP/etc.dump(으)로. DUMP: 매핑 (패스 I) [정규 파일] DUMP: 매핑 (패스 II) [디렉토리] DUMP: 32 KB 레코드를 쓰는 중 DUMP: 106220 블록 (51.87MB)이 예상됩니다. DUMP: 덤프 중 (패스 III) [디렉토리] DUMP: 덤프 중 (패스 IV) [정규 파일] DUMP: 볼륨 1의 105790 블록 (51.66MB) 3811 KB/sec DUMP: 덤프 완료
ufsrestore 복구 명령어 ufsrestore 옵션 백업장치(백업파일) 옵션 설명 -rvf r (Recursive)은 전체 복구, v (Verbose)는 자세한 정보, f (file)는 백업 장치나 백업 파일 지정 -ivf i (Interactive)는 일부 복구, v (Verbose)는 자세한 정보 f (file)는 백업 장치나 백업 파일 지정 -tvf t는 복구하지 않고 어떤 백업 내용이 있는지 확인, f는 백업 장치나 백업 파일 지정
-ivf 옵션 사용 하위 명령어 설명 ls 현재 디렉토리의 내용을 보여준다. cd 디렉토리 복구하고자 하는 디렉토리로 들어간다. add 디렉토리 add 파일 복구하고자 하는 디렉토리를 선택한다. 복구하고자 하는 파일을 선택한다. delete 디렉토리 delete 파일 add 로 선택한 디렉토리를 선택 해제 한다. add 로 선택한 파일을 선택 해제 한다. extract 선택한 내용을 복구한다. ufsrestore > extract 볼륨을 아직 읽지 않았습니다. 파일이 어느 볼륨에 있는지 모를 경우 마지막 볼륨에서 시작하여 첫 번째 볼륨 방향으로 작업해야 합니다. 다음 볼륨 #를 지정: 1 소유자/모드 설정 '.'? [yn] n quit ufsrestore> 프롬프트를 종료한다. 복구 모드에서 빠져나온다.
백업 및 복구 # cd / # ufsdump 0uf /backup/etc.dump ./etc # mkdir /restore ; cd /restore # ufsrestore -ivf /backup/etc.dump 1. passwd 와 shadow 파일만 선택적으로 백업 한다. 2. etc.dump 전체 파일을 복구 한다.
데이터 마이그레이션 파일 시스템이 100% full 이 나거나 스토리지를 변경 할 경우 데이터를 이동시킨다. /etc 의 내용을 /etc_tmp 에 이동 # mkdir /etc_tmp # cd / # ufsdump -0uf - ./etc | ( cd /etc_tmp ; ufsrestore –rf - )