Linux_ServerAdmin (12) 백업 과 복구
ENTERPRISE LINUX ADMIN GUIDE
백업과 복구
백업 개요
백업 종류
백업 / 복구 명령어
tar를 이용한 로컬 데이터 백업
tar를 이용한 특정 디렉터리 데이터 자동 백업
tar를 이용한 로컬 데이터 미러링하기
tar를 이용한 리눅스 운영체제 백업
rsync를 이용한 로컬 데이터 백업 및 서버 동기화
rsync 서버 설정(/etc/rsyncd.conf)
/etc/xinetd.d/rsync 설정
rsync 서비스 모듈(서비스명과 설명) 알아보기
로컬 시스템 데이터 백업
응급 복구
1 |
백업 개요(Backup Overview) |
백업(Backup)의 개념 : 데이타나 정보가 지닌 가치를 보존하는 것으로 외부의 침입자로부터 보호, 예기치 못한 사 고로부터의 복원, 시스템 백업은 매일 해야 한다.
▶ 백업이 필요한 이유
- 예기치 못한 천재지변
- 관리자의 실수
- 기계적 오류
- 소프트웨어 버그
▶ 주요 백업 대상
- 전체 파일 시스템
- 마지막 백업 후의 변경된 파일 시스템
- 어플리케이션
- 각종 환경 설정 파일
- 사용자 파일 등
▶ 데이터 손실의 주요 원인
- 하드웨어적인 사유
- 소프트웨어적인 사유
- 사용자의 부주의
- 해커의 침입
- 기타 도난, 자연재해
(주의) 백업시간 && 복구시간
백업은 복구를 위해서 존재한다. 하지만 백업은 거의 매일 같이 하고, 복구는 일년에 한번 있을까 말까하는 작 업이다. 백업시간이 긴 형태로 작업을 하면 보통은 복구시간은 줄어 들고, 백업시간을 짧게 하는 방식을 택하 면 보통은 복구시간이 길어 진다. 따라서 백업시간과 복구시간은 적당하게 조절할 필요가 있다. |
2 |
백업 종류(Backup Type) |
일반적으로 백업 종류는
(ㄱ) 완전 백업(Full Backup),
(ㄴ) 증분 백업(Incremental Backup)
(ㄷ) 차등백업(Differential Backup)
등이 있다.
(1) 완전 백업(Full Backup)
모든 데이터를통째로 한 번에 백업하는 방법을 말한다. 말 그대로 모든 것을 백업하기 때문에 백업하는데 오래
ltrks이 걸리며, 백업 매체의용량 또한 커야 하므로,비용 소모가 많은 것이 단점이다. 그러나 시스템에 문제가 발 생되었을 때 발생되기 이전의 상태로 시스템을 확실히 복구할 수 있는 장점이 있다. 리눅스를 설치한 후에는 완전
백업을 하는 것이 향후에 리눅스를 재설치 해야 할 경우를 리눅스를 다시 설치하지 않고서도 백업을 복원시켜 부트 로더만 수정해 주면 설치 원상태로 되돌려 놓을 수 있는 이점이 있다.
(2) 증분 백업(Incremental Backup)
일반적으로 백업은 완전 백업과 증분 백업을 병행하는데, 증분 백업은 완전 백업한 이후에 변경된 데이터만을 백업 하는 방법이다. 최근 백업이후에 변경된 파일에 대해서만 백업이 이뤄지기 때문에 빠른 시간 내에 백업이 이뤄지는
장점이 있다. 리눅스 설치 이후에 생성되는 데이터이후에 파일에 대해서 증분 백업으로 백업을 도모하는 것이 리눅
스 시스템에 문제가 발생되더라도 리눅스를 다시 설치하지 않고서도 완전 백업을 복원하여 그 이후의 생성된 데이 터이후에 파일을 문제 방생 이전의 상태로 되돌려 놓을 수 있게 된다.
증분 백업은 일반 백업이나 증분 백업을 마지막으로 수행한 후 만들어지거나 변경된 파일을 백업합니다. 해당 파일은 백업된 것으로 표시됩니다. 즉, 보관 특성의 선택이 취소됩니다. 일반 백업과 증분 백업을 함께 수행하는 경우 데이터를 복원하려면 모든 증분 백업 세트와 최신 일반 백업 세트가 있어야 합니다.
(3) 차등백업(Differential Backup)
보통 증분백업과 비슷하기 때문에 혼동하는 경우가 없지 않는데, 차등 백업은 완전 백업이 이뤄진 이후의 모든 데
이터에 대해서 백업이 이뤄지도록 하는 방법이다. 증분 백업으로 백업된 데이터가 있더라도 차등 백업은 이러한 것 을 가리지 않고, 전체 백업 이후의 모든 데이터를 백업하는 것을 말한다. 차등 백업은 완전 백업 이후의 모든 파일
에 대해서 백업이 이뤄지기 때문에 데이터를 복원하는데 있어서는 시간이 오래 걸리는 불편함이 있을 수 있다.
차등 백업은 일반 백업이나 증분 백업을 마지막으로 수행한 후 만들어지거나 변경된 파일을 복사합니다. 하지만 해당 파일이 백업된 것으로 표시되지는 않습니다. 즉, 보관 특성의 선택이 취소되지 않습니다. 일반 백업과 차등 백업을 함께 수행하는 경우 파일과 폴더를 복원하려면 최신 차등 백업과 최신 일반 백업이 있어야 합니다.
[참고] 백업 종류(용어)
https://msdn.microsoft.com/ko-kr/library/Cc784306(v=WS.10).aspx
3 |
백업/복구 명령어(Backup/Restore Command) |
(1) 백업/복구 명령어 종류
(백업 명령어의 특징)
디렉토리 단위의 백업
■ tar 명령어 마운트된 파일시스템내에서 백업하는 명령어
■ cpio 명령어 마운트된 파일시스템내에서 백업하는 명령어
파일시스템 단위의 백업
■ dump/restore 명령어 파일시스템 단위(파티션 단위)로 백업하는 명령어
디스크 단위의 백업
■ dd 명령어 디스크 마이그레이션(Migration)하는 명령어
이 문서에서는 가장 많이 사용되고 있는 tar 명령어를 통한 백업 부분만을 다룬다.
(2) tar 명령어
# tar cvf file.tar file1 file2 file3 (# tar cvf /dev/rmt0 /home)
# tar tvf file.tar
# tar xvf file.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
(절대경로)
# tar cf /mnt/backup/home-backup.tar /home
# cd /
# tar xf /mnt/backup/home-backup.tar /home
OPTIONS -c, --create create a new archive -f, --file=ARCHIVE use archive file or device ARCHIVE -z, --gzip, --gunzip, --ungzip filter the archive through gzip -t, --list list the contents of an archive -x, --extract, --get extract files from an archive -g, --listed-incremental=FILE handle new GNU-format incremental backup -G, --incremental handle old GNU-format incremental backup -j, --bzip2 filter the archive through bzip2 -p, --preserve-permissions, extract permissions information --same-permissions |
[EX1] tar 명령어를 이용한 풀백업(Full Backup) & 증분 백업(Incremental Backup)
매일 매일 증가하는 데이터가 큰 서버에서 풀백업을 매일 같이 받는 방법은 좋은 방법이 아니다. 중간에 적당하게
증분 백업을 섞어 쓰는 방법이 좋다. tar 명령어를 통해서 풀백업과 증분 백업을 적당하게 섞어 쓰는 방법을 배워
보자.
Target Directory : /home
# tar cvzf /backup/home_`date +%m%d`.tar.gz /home
(백업 방법)
■ 풀백업(Full Backup) 방법
# cd /home
# tar -g /backup/2002-05-11.list –cvzf /backup/2002-05-11-full.tar.gz .
■ 증분백업(Incremental Backup) 방법
# cd /home
# tar -g /backup/2002-05-11.list –czvf /backup/2002-05-12.tar.gz .
(복구 방법)
■ 풀백업(Full Backup) 복구방법
# cd /home
# tar -g /backup/2002-05-11.list –xzvf /backup/2002-05-11-full.tar.gz
■ 증분백업(Incremental Backup) 복구방법
# cd /home
# tar -g /backup/2002-05-11.list –xzvf /backup/2002-05-12.tar.gz
① tar 명령어를 사용한 풀 백업(Full Backup)
테스트할 때, 백업 받을 타켓 디렉토리는 /home/user01 로 정했다. 좀 작은 디렉토리를 선정했다.
# cd /home/user01
# cp -p /etc/passwd file1
# cp -p /etc/hosts file2
# cp -p /etc/group file3
# mkdir -p /backup
# tar -g /backup/backup.list -cvzpf /backup/full_backup.tar.gz /home/user01
tar: /home/user01/.mozilla: Directory is new tar: /home/user01/.mozilla/extensions: Directory is new tar: /home/user01/.mozilla/plugins: Directory is new tar: Removing leading `/' from member names /home/user01/ /home/user01/.mozilla/ /home/user01/.mozilla/extensions/ /home/user01/.mozilla/plugins/ /home/user01/.bash_logout /home/user01/.bash_profile /home/user01/.bashrc /home/user01/file1 /home/user01/file2 /home/user01/file3 |
# ls -l /backup
-rw-r--r-- 1 root root 132 Mar 3 02:59 backup.list -rw-r--r-- 1 root root 1839 Mar 3 02:59 full_backup.tar.gz |
# tar tvzf /backup/full_backup.tar.gz
drwx------ user01/user01 70 2010-03-03 02:59:31 home/user01/ drwxr-xr-x user01/user01 22 2010-03-03 00:34:57 home/user01/.mozilla/ drwxr-xr-x user01/user01 1 2010-03-03 00:34:57 home/user01/.mozilla/extensions/ drwxr-xr-x user01/user01 1 2010-03-03 00:34:57 home/user01/.mozilla/plugins/ -rw-r--r-- user01/user01 33 2010-03-03 00:34:57 home/user01/.bash_logout -rw-r--r-- user01/user01 176 2010-03-03 00:34:57 home/user01/.bash_profile -rw-r--r-- user01/user01 124 2010-03-03 00:34:57 home/user01/.bashrc -rw-r--r-- root/root 2027 2010-03-03 00:35:12 home/user01/file1 -rw-r--r-- root/root 265 2010-03-03 02:12:24 home/user01/file2 -rw-r--r-- root/root 776 2010-03-03 00:35:12 home/user01/file3 |
# cat /backup/backup.list
1267552779 2051 120364 /home/user01/.mozilla/plugins 2051 120365 /home/user01/.mozilla/extensions 2051 120363 /home/user01/.mozilla |
② tar 명령어를 사용한 증분 백업(Incremental Backup)
# cp /etc/passwd file4
# tar -g /backup/backup.list -cvzpf /backup/incremental1.tar.gz /home/user01
tar: Removing leading `/' from member names /home/user01/ /home/user01/.mozilla/ /home/user01/.mozilla/extensions/ /home/user01/.mozilla/plugins/ /home/user01/file4 |
# ls -l /backup
-rw-r--r-- 1 root root 132 Mar 3 03:02 backup.list -rw-r--r-- 1 root root 1839 Mar 3 02:59 full_backup.tar.gz -rw-r--r-- 1 root root 1075 Mar 3 03:02 incremental1.tar.gz |
# tar tvzf /backup/incremental1.tar.gz
drwx------ user01/user01 77 2010-03-03 03:01:32 home/user01/ drwxr-xr-x user01/user01 22 2010-03-03 00:34:57 home/user01/.mozilla/ drwxr-xr-x user01/user01 1 2010-03-03 00:34:57 home/user01/.mozilla/extensions/ drwxr-xr-x user01/user01 1 2010-03-03 00:34:57 home/user01/.mozilla/plugins/ -rw-r--r-- root/root 2027 2010-03-03 03:01:32 home/user01/file4 |
# cat /backup/backup.list
1267552935 2051 120364 /home/user01/.mozilla/plugins 2051 120365 /home/user01/.mozilla/extensions 2051 120363 /home/user01/.mozilla |
-> 이 파일은 기준이 되는 파일이므로 변화가 없다.(스냅샷 파일 = 사진 파일)
③ tar 명령어를 사용한 증분 백업(Incremental Backup)
# cp /etc/services file5
# tar -g /backup/backup.list -cvzpf /backup/incremental2.tar.gz /home/user01
tar: Removing leading `/' from member names /home/user01/ /home/user01/.mozilla/ /home/user01/.mozilla/extensions/ /home/user01/.mozilla/plugins/ /home/user01/file5 |
# ls -l /backup
-rw-r--r-- 1 root root 132 Mar 3 03:03 backup.list -rw-r--r-- 1 root root 1839 Mar 3 02:59 full_backup.tar.gz -rw-r--r-- 1 root root 1075 Mar 3 03:02 incremental1.tar.gz -rw-r--r-- 1 root root 99185 Mar 3 03:03 incremental2.tar.gz |
# tar tvzf /backup/incremental2.tar.gz
drwx------ user01/user01 84 2010-03-03 03:03:35 home/user01/ drwxr-xr-x user01/user01 22 2010-03-03 00:34:57 home/user01/.mozilla/ drwxr-xr-x user01/user01 1 2010-03-03 00:34:57 home/user01/.mozilla/extensions/ drwxr-xr-x user01/user01 1 2010-03-03 00:34:57 home/user01/.mozilla/plugins/ -rw-r--r-- root/root 362031 2010-03-03 03:03:35 home/user01/file5 |
④ tar 명령어를 사용한 증분 백업(Incremental Backup)
파일을 삭제하고 백업을 받아 본다.
# ls
file1 file2 file3 file4 file5 |
# rm -f file5
# ls
file1 file2 file3 file4 |
# tar -g /backup/backup.list -cvzpf /backup/incremental3.tar.gz /home/user01
-> 출력내용 확인 |
# ls -l /backup
-rw-r--r-- 1 root root 132 Mar 3 03:08 backup.list -rw-r--r-- 1 root root 1839 Mar 3 02:59 full_backup.tar.gz -rw-r--r-- 1 root root 1075 Mar 3 03:02 incremental1.tar.gz -rw-r--r-- 1 root root 99185 Mar 3 03:03 incremental2.tar.gz -rw-r--r-- 1 root root 272 Mar 3 03:08 incremental3.tar.gz |
⑤ tar 명령어를 사용한 복구 방법
(가정) 불의의 사고로 /home/user01 폴더의 내용이 지워졌다고 가정한다.
# cd /home/user01
# rm -rf *
# cd /
# tar -g /backup/backup.list -xvzf /backup/full_backup.tar.gz
home/user01/ home/user01/.mozilla/ home/user01/.mozilla/extensions/ home/user01/.mozilla/plugins/ home/user01/.bash_logout home/user01/.bash_profile home/user01/.bashrc home/user01/file1 home/user01/file2 home/user01/file3 |
# ls /home/user01
file1 file2 file3 |
# tar -g /backup/backup.list -xvzf /backup/incremental1.tar.gz
home/user01/ home/user01/.mozilla/ home/user01/.mozilla/extensions/ home/user01/.mozilla/plugins/ home/user01/file4 |
# ls /home/user01
file1 file2 file3 file4 |
# tar -g /backup/backup.list -xvzf /backup/incremental2.tar.gz
home/user01/ home/user01/.mozilla/ home/user01/.mozilla/extensions/ home/user01/.mozilla/plugins/ home/user01/file5 |
# ls /home/user01
file1 file2 file3 file4 file5 |
# tar -g /backup/backup.list -xvzf /backup/incremental3.tar.gz
home/user01/ home/user01/.mozilla/ home/user01/.mozilla/extensions/ home/user01/.mozilla/plugins/ tar: Deleting `home/user01/file5' |
-> 출력화면 확인
# ls /home/user01
file1 file2 file3 file4 |
[참고] 원격 서버에 백업하는 경우 |
------ ServerA ------ ----- ServerB ------ # vi /etc/exports /backup ServerB(rw,no_root_squash) # service nfs restart # exportfs # mount ServerA:/backup /backup # tar -g backup.list -cvzf /backup/backup.tar.gz /home |
[참고] tar 명령어를 이용한 풀백업 및 증분 백업에 대해서 |
■ 출처: http://smiletw.myscan.org/myarticle/TarBackup.txt ===================================================================================== 제 5회 데비안유저스 세미나 날 짜 : 2002년 5월 11일 작성자 : 엄태욱(smiletw) ===================================================================================== (1) tar 명령어를 이용한 풀백업 및 증분 백업
일반적으로 tar를 이용해서 아카이브를 만들면 풀백업이 된다. 그러나 사용자 홈디렉토리또는 한 파티션 전체 를 백업할때는 풀 백업을 자주 사용하기 힘들다. 이럴경우 풀 백업과함께 증분 백업을 해 주는 것이 좋다. GNU tar는 옵션 처리만으로 손쉽게 풀백업과증분 백업이 가능하게 해준다.
먼저 GNU tar의 풀 백업 및 증분 백업에 쓰이는 옵션이 2가지 있다. -G (--incremental)옵션과 -g snapshot-file (--listed-incremental) 이 그것이다.
-G 옵션은 예전 증분 백업 포맷으로 아카이브를 생성해 준다. 이 옵션으로 생성된아카이브에는 아카이브 내에 포함되어 있는 파일이나 디렉토리의 정보가 들어가므로 비표준 아카이브로 생성된다. 따라서 GNU버젼이 아닌 tar로도 내용을 볼 수가 없게 된다. -g snapshot-file 옵 션은 표준 아카이브로 생성되면서, 파일이나 디렉토리 등의 정보를 snapshot-file에 따로 저장함으로써, 표준 아카이브를 생성하게 만들어 준다. 따라서 GNU tar를 이용한 풀 백업 및 증분 백업에서는 -G 옵션이 아닌 -g snapshot-file 옵션을사용하는 것이 좋다.
■ 풀 백업(Full Backup) $ tar -g list -czvf backup.tar.gz home/ list 라는 snap-shot 파일이 생성된다. 그리고 backup.tar.gz이라는 백업된아카이브가 생성된다.
■ 증분 백업(Incremental Backup) $ tar -g list -czvf backup-1.tar.gz home/ 기존의 list 파일에서 이미 풀 백업된 내용을 확인하고, 그 이후에 변경되거나 추가되거나삭제된 파일들을 backup-1.tar.gz에 백업한다.
(2) GNU tar를 이용한 복구
먼저 풀 백업된 아카이브를 복구한다. $ tar -g list –xzvf backup.tar.gz
다음으로 증분 백업된 아카이브들 중 가장 최근에 백업한 것만 복구하면 된다. $ tar -g list –xzvf backup-10.tar.gz
(3) 백업 및 복구의 유용한 옵션
-W (--verify) 검증 백업을 하는 도중 변경되는 파일이 있을 경우가 있다. 특히 풀 백업과 같이 시간이 오래 걸리는 백업의 경우 아카이브가 생성되는 동안 변경될 가능성이 높다. 따라서 풀 백업의 경우 검증해주는 것이 좋다. $ tar -g list -cvf backup.tar home/ 이 경우 아카이브 생성 후, 아카이브의 내용과 실제 디렉토리의 내용과 같은지 확인한다.그러나 gzip으로 압축 하는 -z 옵션과 같이 사용할 수 없다. 따라서 검증 옵션을 사용해서아카이브를 생성할 경우 gzip압축은 따로 해주어야 한다.
(4) 백업 정책
GNU tar의 경우 앞서 말한 level 1 백업까지만을 지원해 준다. snapshot-file이 없을경우 풀 백업(level 0)을 하고, snapshot-file이 이미 존재할 경우 증분 백업(level 1)을하게 된다. 따라서 어느 시점에 풀 백업을 해야 하는지가 백업 정책에서 중요하다.백업할 파일들이 자주 변경될 경우, 풀 백업의 주기도 짧아진다. 또한 변화 될 데이터가매우 중요할 경우, 백업도 자주 해야한다.
일반적으로 level 1 백업만을 지원해 주는 GNU tar를 이용한다면, 1주일에 한번 풀 백업을 실행하고 매일 증분 백업을 한다. 백업하는 시간은 파일의 변화가 적은 새벽이 좋다.따라서 일요일 새벽12시를 전 후해서 풀 백업 을 하고, 매일 새벽에 증분 백업을 하는 것이좋다.
또한 풀 백업의 경우, 검증 옵션 (-W)을 사용하여, 아카이브를 검증해주는 것이 좋다.그리고 아카이브의 크기 를 줄이기 위해서 -z 옵션을 사용하여 압축해 주는 것이 좋다. 아카이브를 만들 때는 아카이브의 이름에 신경 을 써주어야 백업을 할 때, 혼란이 적다.풀 백업을 할 경우 다음과 같이 snapshot-file의 이름도 백업 날짜를 써주는 것이 좋다. $ tar -g 2002-05-11.list -W -cvf 2002-05-11-full.tar home/
증분백업 때도 마찬가지로 날짜를 써 주는 것이 좋다. $ tar -g 2002-05-11.list -czvf 2002-05-12.tar.gz home/
그리고 -g 옵션에 쓰이는 snapshot-file의 보관 또한 중요하다. snapshot-file이 없으면 증분 백업된 아카이브 는 수정된 부분만 저장되어 있는 일반 아카이브와 같아진다. 즉, 풀 백업 이후 삭제된 파일이 있음에도 불구하 고, 증분 백업된 아카이브를 복구할 때,풀 백업된 아카이브의 복구때 생성된 파일이 삭제되지 않는다. 따라서 용량이 작은snapshot-file은 꼭 따로 안전한 곳에 보관해 주어야 한다. |
위의 내용은 “http://metalbear.egloos.com/tag/tar/page/1” 참고하였습니다. 원작자의 글을 손상하지 않았습니다.
[EX2] tar 명령어를 이용한 특정 디렉토리 데이터 자동 백업
자동화 작업은 백업할 때 많은 도움을 주는데, 아래에서는 자동으로 백업하기 위해서 backup.cron이라는 스크립트 를 예를들어 설명하고 있다. 이 백업 스크립트는 몇 가지 변수(COMPUTER, DIRECTORIES, BACKUPDIR 그리고 TIMEDIR)만 변경해 주면 어떠한 환경에서도 사용할 수 있다. 이 스크립트를 이용해 첫 달 초에 실행하고 주된 변경 이 있기 전에 한 달 동안 실행한다. 이 예제에서는 로컬 서버의(BACKUPDIR) 디렉토리로 백업을 하는데 물론 이 스 크립트를 수정하여 로컬 서버에 있는 테이프나 nfs를 통한 백업도 할 수 있다.
① touch /etc/cron.daily/backup.cron 생성
# mkdir /backups /* 백업을 저장할 위치 */
# mkdir /backups/last-full /* 풀 백업한 시각을 저장할 파일 */
# touch /etc/cron.daily/backup.cron
# vi /etc/cron.daily/backup.cron
#!/bin/bash # # 각자의 환경에 맞도록 아래 5개의 변수를 수정한다. COMPUTER=wuddl # 이 컴퓨터의 이름 DIRECTORIES=/home # 백업할 디렉토리 BACKUPDIR=/backups # 백업을 저장할 위치 TIMEDIR=/backups/last-full # 풀 백업한 시각을 저장할 파일 TAR=/bin/tar # tar 명령의 위치
#아래는 전혀 변경할 필요가 없다. PATH=/usr/local/bin:/usr/bin:/bin DOW=`date +%a` # 일주일 중의 요일. 예를 들면 Mon DOM=`date +%d` # 한 달(31일) 중의 날짜. 예를 들면 27 DM=`date +%d%b` # 날짜와 달. 예를 들면 27Sep
# 한 달의 첫날(1일)에 영원한 풀 백업이 진행된다. # 매 일요일에는 지난 일요일의 백업을 덮어쓰는 풀 백업이 진행된다. # 나머지 시간에는 증가분 백업이 진행되는데, # 각각의 증가분 백업은 같은 이름으로 일주일 전의 증가분 백업을 덮어쓴다. # # 만약 NEWER = ""일 경우 tar는 디렉토리에 있는 모든 파일을 백업하고 # NEWER의 날짜는 매주 일요일에 쓰여지는 파일에서 읽어온다. #
# 매달 풀 백업 if( $DOM = "01" ]; then # 한달중 01이면 NEWER="" $TAR $NEWER -cf $BACKUPDIR/$COMPUTER-$DM.tar $DIRECTORIES # tar “” -cf /backups/wuddl-`date +%d%b`.tar /home의 명령어가 실행되는 것과 동일 fi
# 매주별 풀 백업 if [ $DOW = "Sun" ]; then NEWER="“ NOW=`date +%d-%b`
# 풀 백업 날짜를 갱신한다. echo $NOW > $TIMEDIR/$COMPUTER-full-date # echo `date +%d-%b`> /backups/last-full/wuddl-full-date의 명령어가 실행되는 것과 동일 $TAR $NEWER -cf $BACKUPDIR/$COMPUTER-$DOW.tar $DIRECTORIES # tar “” -cf /backups/wuddl-`date +%d%b`.tar /home의 명령어가 실행되는 것과 동일 # 증가분 백업을 한다. 지난 주의 데이터를 덮어쓴다. else
# 지난 풀백업의 날짜를 가져온다. NEWER="--newer `cat $TIMEDIR/$COMPUTER-full-date`" $TAR$NEWER -cf $BACKUPDIR/$COMPUTER-$DOW.tar $DIRECTORIES fi |
② TIMEDIR 디렉토리에 시간을 나타내는 파일을 생성
# date +%d%b > /backups/last-full/myserver-full-date
/* '/backups/last-full'은 TIMEDIR 변수로서 풀 백업을 한 시간을 저장 */
/* 'myserver-full-date'은 서버의 이름 */
③ root 권한만이 스크립트를 실행 가능하도록 권한 변경
# chmod 700 /etc/cron.daily/backup.cron
/* /etc/cron.daily 디렉토리에 있으므로 cron에 의해 매일 오전 1시에 자동으로 실행 */
[EX3] tar 명령어를 통한 데이터 마이그레이션
많은 데이터가 들어 있는 디렉토리를 다른 디렉토리로 마이그레이션 작업을 하기 위해서는 cp 명령어를 사용하 지 않고,
백업하는 명령어를 통해서 옮긴다.
CTRL+C / CTRL+V 복사 위험
(cp 명령어를 통한 디렉토리 복사)
# mkdir /test1 /test2
# cd /test1
# cp -p /etc/passwd file1
# ln -s file1 file2
# cp /bin/ls file3
# cp ~/.bashrc .file4
# mkdir dir1
# chmod 777 file1
# cp -r /test1/* /test2
# ls -al /test1 /test2
.file 환경파일은 복사되지 않았다. (합계다름)
시간이 다르다 ( 시간을 기반으로 하는 프로그램 동작 오류 )
소유자 그룹 권한이 다르다.
umask값에 의해 퍼미션 값이 달라진다 (file1)
(tar 명령어를 통한 디렉토리 복사)
# rm -rf /test1 /test2
# mkdir /test1 /test2
# cd /test1
# cp -p /etc/passwd file1
# ln -s file1 file2
# cp /bin/ls file3
# cp ~/.bashrc .file4
# mkdir dir1
# chmod 777 file1
# cd /test1
# tar cvpf - . | (cd /test2 ; tar xvpf -)
# ls -al /test1 /test2
/test1: total 124 drwxr-xr-x 3 root root 4096 Mar 3 04:01 . drwxr-xr-x 32 root root 4096 Mar 3 04:01 .. -rw-r--r-- 1 root root 289 Mar 3 04:01 .file4 drwxr-xr-x 2 root root 4096 Mar 3 04:01 dir1 -rw-r--r-- 1 root root 2027 Mar 3 04:01 file1 lrwxrwxrwx 1 root root 5 Mar 3 04:01 file2 -> file1 -rwxr-xr-x 1 root root 95116 Mar 3 04:01 file3 /test2: total 124 drwxr-xr-x 3 root root 4096 Mar 3 04:01 . drwxr-xr-x 32 root root 4096 Mar 3 04:01 .. -rw-r--r-- 1 root root 289 Mar 3 04:01 .file4 drwxr-xr-x 2 root root 4096 Mar 3 04:01 dir1 -rw-r--r-- 1 root root 2027 Mar 3 04:01 file1 lrwxrwxrwx 1 root root 5 Mar 3 04:06 file2 -> file1 -rwxr-xr-x 1 root root 95116 Mar 3 04:01 file3 |
(단순비교) # find /test1 | wc -l
# find /test2 | wc -l
(정밀비교) # diff --recursive /test1 /test2
[EX4] tar 명령어를 이용한 운영체제 전체 백업
운영체제를 백업하기 위해서 /proc, /mnt, /media, /tmp 디렉토리는 포함하지 않아도 된다. 제외할 디렉토리의
경우 ‘--exclude=’로 영역을 지정해준다. 지정된 영역을 제외한 나머지 부분이 '<백업파일명>.tar.gz'으로
백업되는 것이다.
(명령어 형식)
# tar cvzpf /backup<백업파일명>.tar.gz --exclude=<제외할 디렉토리> --absolute-name /
# du -sh /
3.6G / |
# df -h
Filesystem Size Used Avail Use% Mounted on /dev/sda1 6.4G 3.4G 2.7G 56% / /dev/sda8 487M 11M 451M 3% /data1 /dev/sda7 487M 11M 451M 3% /data2 /dev/sda6 487M 11M 451M 3% /data3 /dev/sda5 487M 11M 451M 3% /data4 /dev/sda3 487M 11M 451M 3% /home tmpfs 506M 0 506M 0% /dev/shm /dev/sdc1 7.9G 147M 7.4G 2% /RootBackup |
# mkdir -p /RootBackup
# time tar cvzfp /RootBackup/full_backup.tar.gz \
> --exclude=/proc --exclude=/tmp \
> --exclude=/media --exclude=/RootBackup \
> --absolute-name /
..... (중략) ..... /dev/pts/ /dev/pts/1 /boot/ /boot/grub/ /boot/grub/device.map /boot/grub/vstafs_stage1_5 ..... (중략) ...... real 5m12.019s (약 5분12초 정도) user 2m26.956s sys 1m55.439s |
# ls -l /RootBackup
-rw-r--r-- 1 root root 1167537829 3월 3 04:32 full_backup.tar.gz drwx------ 2 root root 16384 3월 3 04:23 lost+foukupK |
# df -h
Filesystem Size Used Avail Use% Mounted on /dev/sda1 6.4G 3.4G 2.7G 56% / /dev/sda8 487M 11M 451M 3% /data1 /dev/sda7 487M 11M 451M 3% /data2 /dev/sda6 487M 11M 451M 3% /data3 /dev/sda5 487M 11M 451M 3% /data4 /dev/sda3 487M 11M 451M 3% /home tmpfs 506M 0 506M 0% /dev/shm /dev/sdc1 7.9G 1.3G 6.3G 17% /RootBackup |
4 |
rsync 서비스를 이용한 백업 |
(주의) 이전 실습에서 사용한 환경 설정 내용 삭제하여라
/etc/profile, /etc/profile.d/test.sh, /etc/bashrc, ~/.bash_profile, ~/.bashrc
# vi /etc/profile
# rm -f /etc/profild/test.sh
# vi /etc/bashrc
# vi ~/.bash_profile
# vi ~/.bashrc
(1) rsync 서비스를 이용한 로컬 데이터 백업 및 서버 동기화
여러 대의 서버를 분산하여 서버 데이터를 동기화하는데 rsync 유틸리티가 많이 사용된다. rsync는 루트 권한없 이 서버로부터 데이터로 빠르게 전송받을 수 있으며, 원격 서버와 미러 서버와 전송 데이터를 비교하여 변화된데이터를 저장할 수 있다. 또한 SSH를 이용하면 rsync 서버가 구축되어 있지 않아도 미러링을 할 수 있는 이점 이 있다.
rsync 서버는 xinetd 방식으로 동작한다.
----- ServerA ----- ----- ServerB -----
rsync --daemon(873)
/etc/rsyncd.conf
/Mirror_Backup <------------------> /Backup
# rsync -avz --delete -e ssh ServerA:/Mirror_Backup /Backup
(a) rsync 서버 설정 과정
(ㄱ) /etc/rsyncd.conf 생성
(ㄴ) /etc/xinetd.d/rsync 수정
(ㄷ) xinetd 서비스 재시작
(b) rsync 클라이언트
(ㄱ) rsync 명령어를 이용한다.
(2) rsync 명령어
(명령어 형식)
# rsync -avz --delete -e ssh <원격서버:데이터경로> <백업경로>
# rsync -avz --delete -e ssh 192.168.0.250:/backup /backup
Options -a, --archive archive mode; same as -rlptgoD (no -H) -v, --verbose increase verbosity -z, --compress 중간에 데이터를 전송할 때 압축해서 전송(대용량 전송시) --delete 원본에서 삭제시 서버에서 삭제되지 않음 -r, --recursive recurse into directories -I, --ignore-times don't skip files that match in size and mod-time -p, --perms preserve permissions -o, --owner preserve owner (super-user only) -g, --group preserve group -t, --times preserve times -D same as --devices --specials |
[EX1] 로컬서버의 로컬 디렉토리와 로컬 디렉토리 동기화
(명령어 형식)
# rsync -avz --delete -e ssh /backup/ /test101/ 기본형식
# rsync -avz --delete -e ssh /backup/ /test101
# rsync -avz --delete -e ssh /backup /test101 백업디렉토리 와 test101안에 백업
# rsync -avz --delete -e ssh IP:/backup/ /test100/ 다른서버에있는게소스, 원본~ 그다음 타겟이 내 로컬. 순서가 바껴도 되요.
# rsync -avz --delete -e ssh IP:/backup/ /test100
# rsync -avz --delete -e ssh IP:/backup /test100
만약 rsync 프로그램이 설치되어 있지 않다면 프로그램을 설치해 준다.
# rpm -q rsync
rsync-3.0.6-6.el5_11
# yum install rsync
① 백업 디렉토리 확인
만약 /backup 디렉토리안에 내용이 없다면 만들어 준다.
# ls /backup
backup.list full_backup.tar.gz incremental1.tar.gz incremental2.tar.gz incremental3.tar.gz |
root[~]#cp /etc/hosts /backup
root[~]#cp /etc/passwd /backup
root[~]#cp /etc/group /backup
root[~]#
② /backup(Source 원본) 디렉토리와 /test100/backup(Target 미러) 디렉토리를 동기화
# rsync -avz --delete -e ssh 192.168.0.XXX:/backup /test100 (192.168.0.XXX : 자신의 서버의 IP)
The authenticity of host '192.168.0.240 (192.168.0.240)' can't be established. RSA key fingerprint is 40:36:17:cf:c8:4c:43:3d:0c:d5:aa:bf:08:0d:5b:fd. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.0.240' (RSA) to the list of known hosts. root@192.168.0.240's password: (root 사용자 암호 입력) receiving file list ... done created directory /test100 backup/ backup/backup.list backup/full_backup.tar.gz backup/incremental1.tar.gz backup/incremental2.tar.gz backup/incremental3.tar.gz sent 136 bytes received 104501 bytes 16098.00 bytes/sec total size is 104114 speedup is 1.00 |
# ls /test100
backup |
# ls /backup /test100/backup
/backup: backup.list full_backup.tar.gz incremental1.tar.gz incremental2.tar.gz incremental3.tar.gz /test100/backup: backup.list full_backup.tar.gz incremental1.tar.gz incremental2.tar.gz incremental3.tar.gz |
③ /backup(Source 원본) 디렉토리에서 backup.list 파일 삭제
# rm -rf /backup/backup.list
# ls /backup
full_backup.tar.gz incremental1.tar.gz incremental2.tar.gz incremental3.tar.gz |
④ /backup(원본) 디렉토리와 /test100/backup(미러) 디렉토리를 동기화
# rsync -avz --delete -e ssh 192.168.0.XXX:/backup /test100
root@192.168.0.240's password: (root 사용자 암호 입력) receiving file list ... done deleting backup/backup.list backup/ sent 26 bytes received 161 bytes 53.43 bytes/sec total size is 103982 speedup is 556.05 |
# ls /backup /test100/backup
/backup: full_backup.tar.gz incremental1.tar.gz incremental2.tar.gz incremental3.tar.gz /test100/backup: full_backup.tar.gz incremental1.tar.gz incremental2.tar.gz incremental3.tar.gz |
-> 2개의 디렉토리가 동기화 되어 있는 것을 확인 할 수 있다.
⑤ 로컬에 존재하는 디렉토리 미러링
# rsync -avz --delete -e ssh 192.168.0.240:/backup/ /test101/
The authenticity of host '192.168.0.240 (192.168.0.240)' can't be established. RSA key fingerprint is 40:36:17:cf:c8:4c:43:3d:0c:d5:aa:bf:08:0d:5b:fd. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.0.240' (RSA) to the list of known hosts. root@192.168.0.240's password: (root 사용자의 암호 입력) receiving file list ... done created directory /test101 ./ full_backup.tar.gz incremental1.tar.gz incremental2.tar.gz incremental3.tar.gz sent 114 bytes received 104356 bytes 18994.55 bytes/sec total size is 103982 speedup is 1.00 |
-> /test101 디렉토리가 없으면 생성한다.
# ls /backup /test101
/backup: full_backup.tar.gz incremental2.tar.gz incremental1.tar.gz incremental3.tar.gz /test101: full_backup.tar.gz incremental2.tar.gz incremental1.tar.gz incremental3.tar.gz |
(주의) 아래 사항의 차이점을 이해 해야 한다.
# rsync -avz --delete -e ssh /backup/ /test101/ (# rsync -avz --delete -e ssh /backup/ /test101)
-> (ㄱ) /test101 디렉토리가 없으면 생성된다.
-> (ㄴ) /backup 디렉토리의 내용과 /test101 디렉토리의 내용은 동일하다. (/backup/* <-sync-> /test101/*)
# rsync -avz --delete -e ssh /backup /test101
-> (ㄱ) /test101 디렉토리가 없으면 생성된다.
-> (ㄴ) /test101 디렉토리안에 backup 디렉토리가 생성된다. (/backup/* <-sync-> /test101/backup/*)
[추가적인 실습]
Local(/backup/*) ---> Local(/test100/*)
# rsync -avz --delete -e ssh /backup/ /test100/
# ls /backup /test100
Local(/linux2XX/*) ---> Remote(172.16.6.252:/backup/linux2XX/*)
# mkdir -p /linux2XX
# cp /backup/* /linux2XX
# rsync -avz --delete -e ssh /linux2XX 172.16.6.252:/backup
# ssh 172.16.6.252 ls /backup
Remote(172.16.6.252:/backup/linux2XX/*) ---> Local(/test101/*)
# rsync -avz --delete -e ssh 172.16.6.252:/backup/linux2XX/ /test101/
# ls /test101
[참고] Win-Rsync : Windows 방식 툴(모든 OS에서 호환)
ActiveSync : Window <- sync -> Windows
cwRsync : Window <- sync -> Linux/Unix
[EX2] rsync 서버 구축 및 rsync 명령어 사용
ssh를 이용한 rsync데이터 동기화를 위해서는 서버에 ssh서버가 작동 하고 있어야 한다.
rsync 서버를 구축하기 위해서는 rsync 설정파일인 /etc/rsyncd.conf 파일을 설정해야 한다.
(a) rsync 서버 설정 과정
(ㄱ) /etc/rsyncd.conf 생성
(ㄴ) /etc/xinetd.d/rsync 수정
(ㄷ) xinetd 서비스 재시작
(b) rsync 클라이언트
(ㄱ) rsync 명령어를 이용한다.
① /etc/rsyncd.conf 파일 작성
# rpm -q rsync (# rpm -qa | grep rsync)
rsync-2.6.8-3.1 |
# rpm -q rsync
# rpm -qi rsync
# rpm -ql rsync
# rpm –qf /bin/ls
# rpm -ql rsync
/etc/xinetd.d/rsync /usr/bin/rsync /usr/share/doc/rsync-2.6.8 /usr/share/doc/rsync-2.6.8/COPYING /usr/share/doc/rsync-2.6.8/README /usr/share/doc/rsync-2.6.8/tech_report.tex /usr/share/man/man1/rsync.1.gz /usr/share/man/man5/rsyncd.conf.5.gz .... (중략) .... |
# man rsyncd.conf
/EXAMPLES <----- 매뉴얼 페이지에서 빠른 검색을 한다. ..... (중략) ..... uid = nobody gid = nobody use chroot = no max connections = 4 syslog facility = local5 pid file = /var/run/rsyncd.pid [ftp] path = /var/ftp/pub comment = whole ftp area (approx 6.1 GB) [sambaftp] path = /var/ftp/pub/samba comment = Samba ftp area (approx 300 MB) [rsyncftp] path = /var/ftp/pub/rsync comment = rsync ftp area (approx 6 MB) [sambawww] path = /public_html/samba comment = Samba WWW pages (approx 240 MB)
[cvs] path = /data/cvs comment = CVS repository (requires authentication) auth users = tridge, susan secrets file = /etc/rsyncd.secrets The /etc/rsyncd.secrets file would look something like this: tridge:mypass susan:herpass ..... (중략) ..... |
# vi /etc/rsyncd.conf (# scp 172.16.9.252:/etc/rsyncd.conf /etc/rsyncd.conf)
uid=nobody /* 사용자 아이디 */ gid=nobody /* 그룹 아이디 */ use chroot=no /* yes : 지정된 경로 이외에 다른 경로로 접속 못하게 함 */ max connections=5 /* 최대 접속자 수 : 0은 무제한을 나타냄 */ timeout=60 /* Client의 접속이 idle상태일 때 접속을 끊어버릴 초 단위 시간 */
[Backup] /* rsync 서비스명 */ comment=Rsync Backup Server /* rsync 서비스에 대한 설명 */ path=/backup1 /* 미러링될 데이터의 경로 (대상파일경로) */ read only=no /* yes : 다운로드 가능 / no : 업로드 가능 */ |
(/etc/rsyncd.conf 파일의 다른 예)
motd file = /etc/rsyncd.motd log file = /var/log/rsyncd.log pid file = /var/run/rsyncd.pid lock file = /var/run/rsync.lock [simple_path_name] path = /rsync_files_here comment = My Very Own Rsync Server uid = nobody gid = nobody read only = no list = yes auth users = username secrets file = /etc/rsyncd.scrt host allow=192.168.0.4 /* ip주소 : 제한하지 않으면 누구나 데이터를 가져갈 수 있다. */ |
# mkdir /backup1 /backup2
② /etc/xinetd.d/rsync 파일 설정
# vi /etc/xinetd.d/rsync (# chkconfig rsync on)
# default: off # description: The rsync server is a good addition to an ftp server, as it \ # allows crc checksumming etc. service rsync { disable = no <----- yes을 no로 변경 socket_type = stream wait = no user = root server = /usr/bin/rsync server_args = --daemon log_on_failure += USERID } |
# service xinetd restart
xinetd 를 정지 중: [ OK ] xinetd (을)를 시작 중: [ OK ] |
-> 서비스 적용
③ 서버에서 rsync 서버 동작에 대한 간단한 테스트
# cat /etc/serivces | grep rsync
rsync 873/tcp # rsync rsync 873/udp # rsync airsync 2175/tcp # Microsoft Desktop AirSync Protocol airsync 2175/udp # Microsoft Desktop AirSync Protocol |
# telnet localhost 873 (# netstat -antp | grep 873)
Trying 127.0.0.1... Connected to localhost.localdomain (127.0.0.1). Escape character is '^]'. @RSYNCD: 29 quit <------ 'quit' 입력 @ERROR: protocol startup error Connection closed by foreign host. |
-> rsync 서비스가 873번 포트에서 정상적으로 동작 중이다.
④ 클라이언트에서 rsync 명령어 수행
----- 197.16.6.252 ----- ----- 172.16.6.XXX -----
/backup1/(내용) -----------------> # rsync -avz --delete -e ssh 192.168.0.250::Backup /backup1
(At linux250.example.com) 172.16.6.252
# cp -r /etc/init.d/* /backup1
# ls /backup1
NetworkManager dovecot killall oddjobd smb acpid dund krb524 pand spamassassin anacron firstboot kudzu pcscd squid apmd functions lvm2-monitor portmap sshd atd gpm mcstrans psacct syslog auditd haldaemon mdmonitor rawdevices tcsd autofs halt mdmpd rdisc tux avahi-daemon hidd messagebus readahead_early vmware-tools avahi-dnsconfd hplip microcode_ctl readahead_later vncserver bluetooth hsqldb multipathd restorecond vsftpd capi httpd named rpcgssd wdaemon conman ibmasm netconsole rpcidmapd winbind cpuspeed innd netfs rpcsvcgssd wpa_supplicant crond ip6tables netplugd rwhod xfs cups iptables network saslauthd xinetd cups-config-daemon irda nfs sendmail ypbind dc_client irqbalance nfslock setroubleshoot yum-updatesd dc_server isdn nscd single dnsmasq kdump ntpd smartd |
(At linuxXXX.example.com) 172.16.6.XXX
# rsync -avz --delete -e ssh 172.16.6.252:/backup1 /backup1
# rsync -avz --delete -e ssh 172.16.6.252::Backup /backup1
:(콜론)이 하나 더 입력되면 rsync 서비스 명을 입력해야 함
# rsync -avz --delete -e ssh 172.16.6.252::Backup /backup1
The authenticity of host '192.168.0.250 (192.168.0.250)' can't be established. RSA key fingerprint is 8d:f4:02:f4:69:6b:c1:8d:90:91:8e:99:56:26:bb:8f. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.0.250' (RSA) to the list of known hosts. root@192.168.0.250's password: (root 사용자 암호 입력) receiving file list ... done ./ NetworkManager acpid anacron apmd ..... (중략) ..... wdaemon winbind wpa_supplicant xfs xinetd ypbind yum-updatesd sent 2126 bytes received 118320 bytes 26765.78 bytes/sec total size is 299679 speedup is 2.49 |
# ls /backup1
NetworkManager dovecot killall oddjobd smb acpid dund krb524 pand spamassassin anacron firstboot kudzu pcscd squid apmd functions lvm2-monitor portmap sshd atd gpm mcstrans psacct syslog auditd haldaemon mdmonitor rawdevices tcsd autofs halt mdmpd rdisc tux avahi-daemon hidd messagebus readahead_early vmware-tools avahi-dnsconfd hplip microcode_ctl readahead_later vncserver bluetooth hsqldb multipathd restorecond vsftpd capi httpd named rpcgssd wdaemon conman ibmasm netconsole rpcidmapd winbind cpuspeed innd netfs rpcsvcgssd wpa_supplicant crond ip6tables netplugd rwhod xfs cups iptables network saslauthd xinetd cups-config-daemon irda nfs sendmail ypbind dc_client irqbalance nfslock setroubleshoot yum-updatesd dc_server isdn nscd single dnsmasq kdump ntpd smartd |
(At linux250.example.com) 172.16.6.252
# cd /backup1
# rm -r [a-v]*
# ls
NetworkManager winbind xfs ypbind wdaemon wpa_supplicant xinetd yum-updatesd |
(At linuxXXX.example.com) 172.16.6.XXX
# rsync -avz --delete -e ssh 172.16.5.252::Backup /backup1
root@192.168.0.250's password: (root 사용자 암호 입력) receiving file list ... done deleting vsftpd deleting vncserver deleting vmware-tools deleting tux deleting tcsd deleting syslog deleting sshd ..... (중략) ..... deleting avahi-dnsconfd deleting avahi-daemon deleting autofs deleting auditd deleting atd deleting apmd deleting anacron deleting acpid ./ sent 80 bytes received 203 bytes 80.86 bytes/sec total size is 18513 speedup is 65.42 |
# ls /backup1
NetworkManager winbind xfs ypbind wdaemon wpa_supplicant xinetd yum-updatesd |
(주의) 다음 명령어는 한대의 클라이언트에서만 수행한다.
# cp -r /backup1 /linuxXXX (XXX: 자신 서버의 자리번호, 예: linux200)
# rsync -avz --delete -e ssh /linuxXXX 172.16.6.252:/backup2
root@192.168.0.250's password: (root 사용자의 암호 입력) building file list ... done linuxXXX/ linuxXXX/NetworkManager linuxXXX/wdaemon linuxXXX/winbind linuxXXX/wpa_supplicant linuxXXX/xfs linuxXXX/xinetd linuxXXX/ypbind linuxXXX/yum-updatesd sent 8443 bytes received 202 bytes 1017.06 bytes/sec total size is 18513 speedup is 2.14 |
# ssh 172.16.6.252 ls /backup2
root@192.168.0.250's password: (root 사용자의 암호 입력) linux200 linux201 linux202 linux203 ..... (중략) ..... |
4 |
응급 복구 모드(Linux Rescue Mode) |
시스템의 중요한 파일을 환경 설정하는 경우 잘못하면 시스템이 부팅되지 않는 상황이 발생할 수 도 있다. 이러한
일을 대비하여 CentOS-5.4-i386-bin-DVD.isoo(설치CD)나 CentOS-5.4-i386-LiveCD.iso을 이용한 응급 복구 방법을 알아보자.
(시나리오) 부팅 오류를 발생시키기 위해 /etc/fstab 파일에 알 수 없는 장치명을 기입한다. /dev/hdd1은 기존에
없는 장치명으로 부팅 시 인식 할 수가 없다. 오류로 인해 복구가 안 될 때 CentOS-5.4-i386-bin-DVD.iso(설치CD)
나 CentOS-5.4- i386-LiveCD.iso을 이용하여 복구한다.
① /etc/fstab파일 수정
# vi /etc/fstab /* 파일시스템이 존재하지 않는 내용을 추가 => 부팅 실패 */
.... /dev/hdd1 /data ext3 defaults 1 1 |
② 시스템 재시작 한다.
# reboot /* 각종 파일 시스템에 대한 마운트가 되지 않는다 */
③ 시스템 재시작시 <F2>를 눌러 CD-ROM이 먼저 부팅할 수 있도록 부팅 순서를 바꿔준다.
boot” 탭 -> “CD-ROM Drive” <Shift+(+)> -> 가장 상단에 위치 -> F10 (Save&Exit)
(1) CentOS-5.4-i386-bin-DVD.iso(설치CD)를 이용한 복구
① 재부팅시 화면에 아래의 창이 나오면 "linux rescue"를 입력한다.
② 부팅 환경 설정 사용언어 → 영어
키보드 → US
네트워크 설정 → No
복구 모드 시작 => Continue 선택
③ 보안을 위해 가상의 루트디렉토리를 생성하여 접속.
부팅을 CD로 했기 때문에 현재는 CD롬의 내용을 보고 있으므로 CD에 있는 시스템 이미지 /mnt/sysimage로 마운트한 다.
# chroot /mnt/sysimage /* chroot : 루트 디렉토리를 변경할 때 사용 */
④ /etc/fstab 복구
# vi /etc/fstab /* 잘못 설정된 /etc/fstab 설정 파일을 수정한다 */
⑤ 재 시작한다.
# reboot
(2) CentOS-5.4-i386-LiveCD.iso를 이용한 복구
① 재부팅시 화면에 10초의 count가 나올 때 엔터키를 누르면 아래의 창이 나온다.
CD-ROM으로 부팅시 (GUI방식으로 부팅을 하기 위해 첫 번째 Boot를 선택한다.)
② 로 부팅되는 것을 확인 할 수 있다.
/* root만 입력시 로그인 가능 (password 입력 가능) */
③ 터미널 창을 열어 편집 한다.
# df –h
# umount /mnt/disc/sda1 /* /mnt아래에 sda1이 마운트 된 경우 cdrom에 마운트 되어 read-only상태 */
# mkdir /recovery /* /recovery 디렉토리를 만들어 리눅스운영체제가 설치된 Disk를 마운트 함 */
# mount /dev/sda1 /recovery
# vi /recovery/etc/fstab /* 잘못 설정된 /etc/fstab 설정 파일을 수정한다 */
# reboot
'Learning > └Essential & Admin' 카테고리의 다른 글
문서정리 Linux_ServerAdmin (0) | 2016.11.05 |
---|---|
문서정리 Linux_Essential (0) | 2016.11.05 |
Linux_ServerAdmin (11) 스케줄링 관리 (0) | 2016.11.04 |
Linux_ServerAdmin (10) 사용자 그룹관리 (0) | 2016.11.04 |