백업과 복구
- 백업 테이프 드라이브
/dev/rmt/<unit-number>[<density>][<no-rewind>]
<unit-number>
몇 번째 백업 테이프 드라이브인지 숫자를 이용하여 나타낸다. 0일 경우에는 첫 번째 백업테이프 드라이브임.
<density>
l(low), m(medium), h(high), u(ultra), c(compressed) 중 하나를 사용한다.
생략시 일반적으로 가장 높은 밀도를 사용해서 데이터를 기록한다.
<no-rewind>
백업이나 복구 명령어 수행 후 테이프가 되감기지 않고 현재 상태에서 가만히 둔다. 하나의 백업 테이프에 여러 내용을 백업하여 기록하기 위하여 사용한다.
- ufsdump 명령어
ufsdump [[0123456789]unvloSf] dump_name (file or directory or partition)
ufs 파일 시스템에서만 사용 가능하다.
백업할 파일이나 디렉토리 외에 다른 이름을 입력하지 않으면 9uf /dev/rmt/0를 기본 사용.
옵션 |
의 미 |
0~9 |
/etc/dumpdates를 참조해서 완전백업 및 증분백업을 결정한다. 레벨은 항상 자신보다 이전의 레벨을 참조한다. 이전의 레벨이 자신보다 작으면 그 레벨 이후의 변경 내용을 백업하고, 자신과 레벨이 같거나 크면 자신보다 작은 레벨을 찾아서 그 레벨 이후의 변경 내용을 백업한다. |
u |
update) /etc/dumpdates 파일의 내용을 갱신한다. 백업하는 대상이 반드시 파일이나 디렉토리가 아닌 파티션을 입력해야 정보가 남는다. /etc/dumpdates 파일은 백업을 시작한 시간이 기록된다. |
n |
notify) sys그룹에 속한 사용자들 중에서 현재 로그인한 사용자가 있을 경우 해당 사용자에게 메시지를 전달 할 수 있다. |
l |
autoloading) 하나의 백업 매체에 데이터를 모두 기록하지 못하면 자동으로 다른 백업 매체로 바꾸어서 기록한다. |
o |
offline) 백업이 끝나면 백업 매체를 자동으로 배출한다. |
s |
estimate) 주로 증분백업을 하기 전에 사용한다. 백업하는 데이터의 양을 출력하므로 그 양에 따라 필요한 백업 매체를 선택할 수 있다. |
v |
verify) 백업한 데이터와 하드디스크에 있는 데이터를 비교한다. 데이터가 정확하게 기록되었는지 다시 한 번 확인하기 위해 사용한다. 단 데이터를 백업하는 파티션이 반드시 마운트 되어 있어야 한다. |
f |
file) f 다음에는 백업 장치명을 적는다. 생략시 /dev/rmt/0를 기본으로 사용한다. |
하드디스크를 언마운트한 후에 백업하는 것이 좋다. 언마운트하지 않고 백업을 하면 파일시스템에 있는 데이터가 변경될 가능성이 있다.
remote로 백업시 백업 장치가 연결된 시스템의 .rhosts에 백업을 실행할 host가 추가되어 있어야 한다. 또한 /etc/default/login 파일에서 console 이외의 터미널에서도 로그인이 가능하도록 한다.
<백업스케줄>
|
유동 |
월요일 |
화요일 |
수요일 |
목요일 |
금요일 |
매월 1일 |
0 |
|
|
|
|
|
첫째주 |
|
9 |
9 |
9 |
9 |
5 |
둘째주 |
|
9 |
9 |
9 |
9 |
5 |
세째주 |
|
9 |
9 |
9 |
9 |
5 |
네째주 |
|
9 |
9 |
9 |
9 |
5 |
|
|
|
|
|
|
|
매월 1일 |
a |
|
|
|
|
|
첫째주 |
|
b |
b,c |
b,c,d |
b,c,d,e |
b,c,d,e,f |
둘째주 |
|
g |
g,h |
g,h,i |
g,h,i,j |
b,c,d,e,f,g,h,i,j,k |
세째주 |
|
l |
l,m |
l,m,n |
l,m,n,o |
b,c,d,e,f,g,h,i,j,k,l,m,n,o,p |
네째주 |
|
q |
q,r |
q,r,s |
q,r,s,t |
b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u |
|
유동 |
월요일 |
화요일 |
수요일 |
목요일 |
금요일 |
매월 1일 |
0 |
|
|
|
|
|
첫째주 |
|
9 |
9 |
9 |
9 |
3 |
둘째주 |
|
9 |
9 |
9 |
9 |
4 |
세째주 |
|
9 |
9 |
9 |
9 |
5 |
네째주 |
|
9 |
9 |
9 |
9 |
6 |
|
|
|
|
|
|
|
매월 1일 |
a |
|
|
|
|
|
첫째주 |
|
b |
b,c |
b,c,d |
b,c,d,e |
b,c,d,e,f |
둘째주 |
|
g |
g,h |
g,h,i |
g,h,i,j |
g,h,i,j,k |
세째주 |
|
l |
l,m |
l,m,n |
l,m,n,o |
l,m,n,o,p |
네째주 |
|
q |
q,r |
q,r,s |
q,r,s,t |
q,r,s,t,u |
|
유동 |
월요일 |
화요일 |
수요일 |
목요일 |
금요일 |
매월 1일 |
0 |
|
|
|
|
|
첫째주 |
|
3 |
4 |
5 |
6 |
2 |
둘째주 |
|
3 |
4 |
5 |
6 |
2 |
세째주 |
|
3 |
4 |
5 |
6 |
2 |
네째주 |
|
3 |
4 |
5 |
6 |
2 |
|
|
|
|
|
|
|
매월 1일 |
a |
|
|
|
|
|
첫째주 |
|
b |
c |
d |
e |
b,c,d,e,f |
둘째주 |
|
g |
h |
i |
j |
b,c,d,e,f,g,h,i,j,k |
세째주 |
|
l |
m |
n |
o |
b,c,d,e,f,g,h,i,j,k,l,m,n,o,p |
네째주 |
|
q |
r |
s |
t |
b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u |
- ufsrestore 명령어
ufsrestore (i|r|x|t)vf
ufsdump 명령어로 백업한 파일을 다시 원복하기 위해 사용한다.
옵션 |
의 미 |
i |
interactive) 백업 데이터를 돌아다니면서, 백업 데이터 안에 있는 파일이나 디렉토리의 목록도 직접 보고, 또한 복구할 파일을 마음대로 선택할 수 있는 기능을 제공한다. ls, cd, add, delete, extract, quit, marked 명령어를 사용한다. add : 복구할 파일 목록에 현재 디렉토리나 특정 파일을 추가한다. delete : 복구할 파일 목록에서 현재 디렉토리나 특정 파일을 삭제한다. extract : 선택한 모든 파일과 디렉토리를 복구한다. marked : 현재 디렉토리에서 선택된 파일의 목록을 출력한다. |
r |
restore) 백업 데이터를 원래대로 복원한다. 현재 디렉토리를 기준으로 복구하므로 원하는 위치로 이동후 데이터를 복원한다. 명령어 실행시 디렉토리에 restoresymtable 파일이 생성된다. 복구되는 모든 파일의 목록,백업 레벨, 날짜 등의 정보를 제공한다. 증분 백업한 백업 데이터에서 파일을 복구할 경우 참조하고 갱신하는 파일이다. |
x |
extract) 원하는 파일이나 디렉토리만 복구할 때 사용한다. 반드시 복구할 파일이나 디렉토리의 이름을 아규먼트로 명시해야 한다. |
t |
list) 백업 데이터에 있는 파일과 디렉토리의 목록을 i-node 번호와 함께 출력한다. x 옵션을 사용하기에 앞서 원하는 파일을 확인하는데 주로 사용한다. |
v |
verbose) 백업 데이터에 있는 파일이나 디렉토리를 복구할 때 목록을 함께 출력한다. |
f |
file) 백업한 데이터가 /dev/rmt/0 장치가 아닌 다른 곳에 있을 경우에 그 위치를 명시한다. |
-원칙은 unmount 후에 백업을 하여야 하지면 여기에서는 생략한다.- # vi /etc/vfstab (/p3에 파티션 할당.) # mount /p3 # cd /p3 # cp -r /etc/init.d /p3 # ufsdump 0uf dump00 /p3 (완전백업) # cp -r /etc/default /p3 # ufsdump 1uf dump01 /p3 (이전 레벨0 이후의 증분백업) # more /etc/dumpdates (레벨별 백업 시작 시간 기록) # cp -r /etc/mail /p3 # ufsdump 4uf dump04 /p3 (이전 레벨1 이후의 증분백업) # cp -r /etc/nfs /p3 # ufsdump 2uf dump02 /p3 (이전 레벨4가 아닌 레벨1 이후의 증분백업. 레벨4의 내용도 백업한다.) # cp -r /etc/skel /p3 # ufsdump 2uf dump02 /p3 (이전 레벨2가 아닌 레벨1 이후의 증분백업. 레벨4뿐만 아니라 이전의 레벨2의 내용도 백업한다. 동일한 백업 레벨을 사용할 경우 /etc/dumpdates 파일에 있던 이전 내용이 삭제되고 새로운 내용이 추가된다.) # cp -r /etc/dfs /p3 # ufsdump 8uf dump08 /p3 (이전 레벨2 이후의 증분백업) # ufsdump 6Suf dump06 /p3 (S 옵션을 사용하면 백업을 하지 않고 백업후 생성되는 파일의 크기만 출력한다.) # ufsdump 1uf dump11 /p3 (맨 처음의 레벨0 이후의 모든 내용을 증분백업) # ufsdump 5f dump05 /p3 (이전 레벨1 이후의 증분백업. /etc/dumpdates 파일에 기록이 남지 않는다.) # ufsdump u /p3 (기본적으로 레벨9, /dev/rmt/0으로, 이전 레벨5가 아닌 레벨1 이후의 증분백업. /etc/dumpdates 파일에 기록이 되어 있지 않아서 레벨1을 이전 레벨로 인식한다.) hostA# rsh hostB cat /.rhosts (hostB의 .rhosts에 등록이 되어 있다.) hostA root hostA# ufsdump 0uf hostB:/dev/rmt/0 /p3 (remote 백업이 가능하다.)
# cd /p4 # ufsrestore tf /p3/dump00 (dump00을 복구하지 않고 내용만 확인한다.) # ufsrestore rf /p3/dump00 (dump00을 복구한다. v 옵션이 없으므로 작업 진행 과정은 출력되지 않는다.) # ufsrestore vrf /p3/dump04 (dump01 이후만 백업했으므로 dump01이 복구된 후에 복구가 가능하다.) # ufsrestore vrf /p3/dump01 (dump00이 복구되어 있으므로 복구가 가능하다.) # ufsrestore vrf /p3/dump04 (dump01이 복구되어 있으므로 복구가 가능하다.) # ufsrestore ivf /p3/dump00 ufsrestore> cd mail (백업 파일내의 mail 디렉토리로 이동한다.) ufsrestore> add aliases sendmail.cf submit.cf (복구 파일 목록에 추가한다.) ufsrestore> marked (복구 파일 목록에 있는 파일이나 디렉토리 목록만 출력한다.) ufsrestore> delete submit.cf (복구 파일 목록에서 삭제한다.) ufsrestore> extract (선택한 파일이나 디렉토리만 복구한다.) Specify next volume#: 1 Set directory mode, owner, and times. Set owner/mode for '.'? [yn] y (디렉토리(.)의 권한과 소유주를 백업 파일의 내용과 비교한다. y 로 대답하면 현재 디렉토리의 권한과 소유주가 백업 파일의 내용과 동일하게 변경된다.) ufsrestore> q # ufsrestore rvf hostB:/dev/rmt/0 (remote 복구) |
- 스냅샷(snapshot)
ufsdump 명령어는 데이터를 백업하면서 실시간으로 정보를 수집하지 않고 미리 필요한 정보를 완전하게 구축한 후에 데이터를 백업하므로 정보를 구축한 이후에 변경된 내용은 전혀 반영되지 못한다.
S 런 레벨에는 시스템에서 필수적으로 필요한 서비스와 파티션을 마운트하여 사용하기 때문에 백업과 복구용으로 가장 좋다. 하지만 외부에서 필요한 서비스를 제공할 수 없기 때문에 사용자의 불편을 초래한다. 이런 환경에 대처하기 위해서 snapshot 기능을 사용한다. snapshot 기능을 사용하면 snapshot을 만든 이후에 변경되거나 제거된 파일이 있어도 안전하게 데이터를 백업할 수 있다. 파일시스템의 변화가 많으면 snapshot의 크기도 커진다.
snapshot은 /tmp나 NFS로 공유된 디렉토리에도 만들 수 있다. 여유공간이 넉넉한 파일시스템을 사용한다. 하지만 snapshot 저장 파일이 있는 파티션은 snapshot으로 지정할 수 없다.
fssnap 명령 수행시 /dev/fssnap(가상 block device), /dev/rfssnap(가상 raw device)가 생성된다. 이 가상 장치 파일은 어떤 백업 명령어에서도 사용 가능하다.
옵션 |
의 미 | |
-i |
information) 스냅샷 정보 보기. | |
-d |
delete) 스냅샷 삭제. | |
-o |
여러 조건을 명시할 수 있다. | |
|
bs=path |
스냅샷을 저장할 경로명 지정. 백업 대상이 되는 파일에 만들 수 없다. |
|
unlink |
스냅샷을 위한 가상 장치 파일은 생성한 후에 스냅샷 파일을 지운다. |
|
maxsize=n[kmg] |
스냅샷의 최대 크기를 지정한다. |
|
raw |
스냅샷을 위한 raw 가상 장치 파일의 경로명을 출력한다. |
# df -k # mkdir /p5/snapshot (여유 공간이 많은 파일시스템 선택) # ls -l /dev | grep fssnap (아직 /dev 밑에 /fssnap과 /rfssnap이 존재하지 않는다.) # fssnap -o maxsize=2g,bs=/p5/snapshot/root0 / (/의 스냅샷을 /p5/snapshot/root0 파일에 생성하고, 최대크기는 2기가이다.) # fssnap -i (현재 시스템에 정의된 모든 스냅샷의 정보 출력) # fssnap -i / (해당 스냅샷의 자세한 정보 출력) # ls -l /dev | grep fssnap (가상 장치 파일이 생성 여부 확인) # ls -F /dev/fssnap /dev/rfssnap # ls -l /p5/snapshot (/p5/snapshot/root0 스냅샷 파일이 생성된다. 파일의 크기는 존재하지만 실제 데이터 블록은 할당되지 않아서 디스크 공간은 거의 줄지 않는다.) # mkdir /new # cp -r /etc/init.d /new # ls -l /p5/snapshot (새로운 내용이 복사되면 스냅샷의 내용도 변한다.) # ufsdump 0ufN /dev/rmt/0 /dev/rdsk/c0t0d0s5 /dev/rfssnap/0 (N 옵션과 함께 /etc/dumpdates 파일에 넣을 장치의 경로명을 명시하면 /etc/dumpdates파일에 올바른 내용이 기록된다.) # fssnap -i / # fssnap -d / # rm /p5/snapshot/root0 (스냅샷을 제거해도 스냅샷을 저장한 파일은 남아 있으므로 직접 제거한다.) # fssnap -o maxsize=2g,maxsize=/p5/snapshot/root0,unlink / (unlink 옵션을 사용하면 스냅샷을 저장하는 파일을 별도로 생성하지 않는다.) # fssnap -d / # ufsdump 1ufN /dev/rmt/0 /dev/rdsk/c0t0d0s0 `fssnap -o maxsize=2g,bs=/p5/ snapshot/root0,unlink,raw /` (라인 하나에 증분 백업을 위한 모든 내용을 입력할 수 있다.) # ufsdump 2ufN /dev/rmt/0 /dev/rdsk/c0t0d0s0 `fssnap -o maxsize=2g,bs=/p5/ snapshot/root0,unlink,raw /` (스냅샷은 만들어질 당시의 내용을 유지하기 위한 것이므로, 동일한 스냅샷에서 증분 백업을 시도하면 백업되는 내용이 없다.) # fssnap -d / # ufsdump 2ufN /dev/rmt/0 /dev/rdsk/c0t0d0s0 `fssnap -o maxsize=2g,bs=/p5/ snapshot/root0,unlink,raw /` (스냅샷을 이용해서 증분 백업을 하기 위해서는 반드시 이전 증분 백업으로 사용한 스냅샷을 지우고 다시 생성해야 한다. 스냅샷이 수행된 지점까지의 완전 백업은 가능하다.) |
- ufsdump 명령어를 이용한 하드디스크 교체
# init 0
ok> setenv auto-boot? false
ok> boot cdrom -s
# ufsdump 0f /dev/rmt/0 /dev/rdsk/c0t0d0s0
# init 5
하드디스크 교체
ok> boot cdrom -s
# format
# newfs /dev/rdsk/c0t0d0s0
# fsck -y /dev/rdsk/c0t0d0s0
# mount /dev/dsk/c0t0d0s0 /a
# cd /a
# ufsrestore rvf /dev/rmt/0
# rm restoresymtable
# installboot /usr/platform/`uname -m`/lib/fs/ufs/bootblk /dev/rdsk/c0t0d0s0
# cd /
# umount /a
# init 6
- ufsdump와 ufsrestore를 이용한 파일 복사
특수한 파일(파이프나 소켓)은 cp 명령어 등을 사용해서 복사할 수 없다. ufsdump 명령어와 ufsrestore를 사용하면 모든 파일을 복사할 수 있다.
# du -sk /etc
# cd /p5
# ufsdump 0f - /etc | ufsrestore vrf -
(‘-’ 는 메모리(SWAP)를 이용하란 뜻. 즉, 실제로 저장할 필요없으니 /etc를 메모리에 올렸다가 내리게 된다.)
# rm restoresymtable
# du -sk ./etc
- cpio 명령어
format: [ command | ] cpio options [ >> filename ]
옵션 |
의 미 |
o |
arvhive create ( backup ) |
i |
extract (restore) |
p |
directory 를 그대로 다른 file system 에 복사하고자 할경우 |
d |
-i 나 -p 옵션 사용시 함께 사용하면 디렉토리 자동 생성 |
B |
Block 단위로 작업 ( default = 512byte block ) |
c |
information |
H |
head information ( -c 와 같이 사용함 ) |
v |
verbose mode |
t |
file name 의 list 를 보여줌. |
m |
-i 나 -p 옵션 사용시 함께 사용하면 원래의 날짜를 그대로 유지한다. |
# find . -print | cpio -ovcB > /dev/rmt/0lb (현재 부터 모든것을 백업) # cpio -ivcB test_file < /dev/rmt/0lb (test_file만 restore) # find . -mtime -7 -print | cpio -ovcB > /dev/rmt/0lb (7일이 경과한 파일 백업) # find . -name 'file*' -print | cpio -ovcB > file.list (현재부터 file*로 시작되는 모든 list backup) # cpio -ivt < file.list (file.list 의 모든 것을 restore) # find /etc -print | cpio -dpmv /p3 (/p3/etc로 cp로 복사가 불가능한 파일까지 모든 파일이 복사된다.) |
- mt 명령어
# mt -f /dev/rmt/0 status (tape 상태 표시)
# mt -f /dev/rmt/0 eom (맨 끝으로 이동, 끝부분 헤더로 이동)
# mt -f /dev/rmt/0 rewind (처음으로 되감기)
# mt -f /dev/rmt/0n fsf count (count만큼 뒤로 이동)
# mt -f /dev/rmt/0n nfsf count (count+1만큼 뒤로 이동)
# mt -f /dev/rmt/0n bsf count (count만큼 앞으로 이동)
# mt -f /dev/rmt/0n nbsf count (count+1만큼 앞으로 이동)
# mt -f /dev/rmt/0 erase (모든 내용 삭제)
# mt -f /dev/rmt/0 offline (eject)
'OS > SOLARIS' 카테고리의 다른 글
[펌] [ UNIX ] 각종 명령어 (0) | 2005.08.04 |
---|---|
[펌] 솔라리스 백업 정책 (0) | 2005.07.14 |
[펌] Solaris Memory 관리 (0) | 2005.07.12 |
[펌] Fast Ethernet Duplex 설정 (0) | 2005.07.12 |
[펌] /etc 파일 설명 (0) | 2005.07.12 |