본문 바로가기

Server Story..../script

rsync

rsync -avzru  --exclude=*.sql --exclude=*.zip root@xxxxxxxx::web ./




rsync를 사용하여 백업시
특정 파일 또는 디렉토리를 제외하고 백업을 하려면

--exclude=*.확장자
--exclude=파일명(디렉토리명)



http://devanix.tistory.com/246  여기서  참조.



[ ssh를 사용하여 tar아카이브 백업 ]

♧ OpenSSH(www.ppenssh.org)는 안전한 원격 로그인, 원격 실행, 그리고 네트워크 인터페이스를 통해

원격지로 파일을 복사할 수 있는 툴들을 제공.

 

▶ 원격 시스템의 파일을 → 로컬 시스템으로 복사.

$ ssh devanix@server1 'tar cf - myfile*' | tar xvf -

devanix@server1's password: ******

myfile1

myfile2

☞ 원격지 시스템에서 실행한 tar 명령어(파일을 압축된 아카이브로 생성)의 표준출력 스트림을

파이프로 보내고 ssh 명령어를 통해 로컬시스템으로 전달한 뒤 로컬의 tar 명령어로 풀어냄.

(로컬 디렉토리에 동일한 파일이 있을 경우 덮어쓰기 함)

 

▷ 로컬 시스템의 파일을 → 원격 시스템으로 복사.

$ tar cf - myfile* | ssh devanix@server1 'cd /data; tar xvf -'

devanix@server1's password: ******

myfile1

myfile2

☞ 원격지 시스템에 있는 특정 디렉토리로 이동하기 위해 cd명령 추가.

 

▶ 원격 시스템에서 전송받은 압축 파일을 풀어내지 않고 tgz 파일로 저장.

$ ssh devanix@server1 'tar czf - myfile*' | cat > myfiles.tgz

server1devanix사용자의 홈 디렉토리에서 myfile로 시작하는 모든 파일을 압축한 뒤

로컬 시스템에 myfiles.tgz로 저장.

 

▷ 로컬 시스템의 압축한 파일을 원격 시스템에 tgz파일로 전송.

$ tar czf - myfile* | ssh devanix@server1 'cat > myfiles.tgz'

 

 

 

 

[ rsync를 사용하여 파일 백업]

rsync는 체크섬을 사용하여 원격지 파일과 로컬 파일을 작은 블록 단위로 비교해 백업을 수행.

 

rsync 명령어는 원격 쉘 프로그램인 ssh를 이용하거나

원격 서버에서 실행되는 rsyncd데몬을 통해 동작할 수 있다.

 

▶ ssh를 통해 원격 디렉토리와 동일한 로컬 디렉토리(미러)를 만드는 rsync 예제 :

$ rsync -avz --delete devanix@server1:/home/devanix/data devadata/

(-a 옵션) : 원격지 디렉토리 이하의 모든 파일을 재귀적으로 복사.

(-v옵션) : 명령어가 실행되는 동안 보다 상세한 정보 출력.

(-z 옵션) : 압축 옵션.

(--delete) : rsync 원격 시스템에 존재하지 않은 파일은 로컬에서도 삭제.

(rsync는 기본적으로 변경된 파일만 백업하기 때문에, 원격지에서 파일이 삭제된 경우, 아무런 조치를

취하지 않는다. 따라서 --delete 옵션을 사용해 더 이상 백업할 필요가 없는 파일을 삭제해 준다)

 

▶ 매주 rsync를 이용하여 백업.

# mkdir /var/backups

# rsync --delete --backup \

--backup-dir=/var/backups/backup-`date +%A` \

-avz devanix@server1:/home/devanix/data/ \

/var/backups/current-backup/

☞ 원격시스템 server1/home/devanix/data 디렉토리의 모든 파일이

로컬 디렉토리 /var/backups/current-backup으로 복사.

☞ 당일 변경된 모든 파일은 /var/backups/backup-Monday와 같은 형태로 복사.

☞ 한 주 동안, 과거 7일간의 변경사항이 반영된 7개의 디렉토리가 생성 된다.

 

▶ 하드링크를 이용해 백업.

# rm -rf /var/backups/backup-old/

# mv /var/backups/backup-current/ /var/backups/backup-old/

# rsync --delete --link-dest=/var/backups/backup-old -avz \

devanix@server1:/home/devanix/data/ /var/backups/backup-current/

☞ 지난 backup-old 디렉토리 내용을 지우고,

☞ 기존의 backup-current 디렉토리 백업내용을 backup-old 디렉토리로 이동.

☞ 이렇게 2주가 지난 backup-old 디렉토리는 지난주 백업된 backup-current로 대체될 것이다.

☞ 새로운 백업은 rsync--link-dest 옵션과 함께 실행해 만든다.

원격시스템 server1data/ 디렉토리에서 새로 백업한 파일이 이전 백업(이제는 backup-old에 저장)과

동일한 경우, 해당 파일을 backup-currentbackup-old 디렉토리 간에 하드링크를 생성.

 

▷ 두 디렉토리간 하드링크를 통해 많은 디스크 공간을 절약할 수 있다.

만약 양쪽 디렉토리에 file1.txt 파일을 가지고 있다면, 다음 명령어를 통해 해당 파일의 inode가

하나의 동일한 물리적 파일을 향하는 것을 확인할 수 있다.

$ ls -I /var/backups/backup*/file1.txt

260761 /var/backups/backup-current/file1.txt

260761 /var/backups/backup-old/file1.txt

 

 


'Server Story.... > script' 카테고리의 다른 글

find 하여 특정 기간만큼 삭제 time awk  (0) 2014.09.15
Windows 2003 ipsec command  (0) 2014.01.12