본문 바로가기

Learning/ └Essential & Admin

Linux_ServerAdmin (12) 백업 과 복구

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