잠시만 기다려 주세요

     '월급 200 받는 사람이 국회의원 되는 그날까지... 슈퍼기득권 전부 아웃... 국회의원 봉사직 전환을 꿈꾸며... '
전체검색 :  
이번주 로또 및 연금번호 발생!!   |  HOME   |  여기는?   |  바다물때표   |  알림 (16)  |  여러가지 팁 (1056)  |  추천 및 재미 (152)  |  자료실 (22)  |  
시사, 이슈, 칼럼, 평론, 비평 (602)  |  끄적거림 (129)  |  문예 창작 (705)  |  바람 따라 (69)  |  시나리오 (760)  |  드라마 대본 (248)  |  
살인!


    리눅스 서버

리눅스 서버 - ssh와 rsync 를 이용한 서버 백업 방법
이 름 : 바다아이   |   조회수 : 9283         짧은 주소 : https://www.bada-ie.com/su/?281591783478
리눅스 시스템 사이에서 백업을 해야 할일이 생겨서 이것저것 찾아 보다가..
rsync를 사용하기로 했습니다.

우선 ssh를 통해서 rsync 백업을 할려고 하면, password를 묻습니다.
한번씩 할 때는 패스워드를 치면 상관없지만, crontab을 사용해서 주기적으로 할려고 하면 문제가 발생합니다.

해결하는 방법을 이것저것 찾았는데 2가지 정도가 나오네요.

첫번째ssh-keygen을 통해서 패스워드를 묻지 않게 하는 방법 입니다.
# ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/root/.ssh/id_dsa): <ENTER>
Enter passphrase (empty for no passphrase): <ENTER>
Enter same passphrase again:  <ENTER>
Your identification has been saved in /root/.ssh/id_dsa.
Your public key has been saved in /root/.ssh/id_dsa.pub.
The key fingerprint is:
58:bd:ef:fd:3b:62:79:2e:ea:de:c4:73:2d:7d:11:2b root@web-tl
The key's randomart image is:
+--[ DSA 1024]----+
|                 |
|         .       |
|        . .    . |
|       o   .    o|
|      . S .  E o |
|           .. ..o|
|            .+o.+|
|           .o*o+.|
|          o++.*++|
+-----------------+
# cat ~/.ssh/id_dsa.pub | ssh [원격ID]@[원격HOST] "cat >> .ssh/authorized_keys"
password: 암호입력<ENTER>
# _

이렇게 설정을 해 두면, 해당 원격 서버에 접속할때 암호를 전혀 묻지 않게 됩니다.
 
# rsync -avz --delete -e ssh [원격HOST]:/home/source /home/target


이런식으로 백업 하시면 됩니다.

하지만, 뭔가 찝찔하죠..
누구나 이 자리에 앉으면 패스워드를 몰라도 원격 호스트에 접근을 할 수 있게 되죠...


두번째sshpass를 사용해서 접근하는 방법니다.
CentOS나 fedora에서는 기본 yum해서는 들어 있지 않습니다.
아래와 같이 epel을 통해서 받습니다.
 
# sudo su -
# rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-7.noarch.rpm
# yum update
# yum -y install sshpass

이렇게 설치해 주시면 됩니다.
Ubuntu를 쓰시는 분들은 apt-get으로 받으세요.
 
# sudo apt-get install sshpass

sshpass을 사용법을 알아보면..  아래와 같습니다.

sshpass -p '[암호]' ssh [원격ID]@[원격HOST]
 
# sshpass -p 'myPassword' ssh username@server.example.com

이런식이죠...

그러면, 이걸로 rsync를 해 봐야 겠죠?
 
# rsync --rsh="sshpass -p myPassword ssh -l username" server.example.com:/var/www/html/ /backup/

이렇게 하시면 됩니다.

참 쉽죠?

여기서 주기적으로 백업을 하고 싶다면..

 
# crontab -e

이렇게 뛰우시고 내용을 수정하시면 됩니다.
*/5 * * * * rsync --rsh="sshpass -p myPassword ssh -l username" server.example.com:/var/www/html/ /backup/

이렇게 해 두면 5분 주기로 백업이 진행 됩니다.


** 아래는 기본적인 rsync 사용법 입니다.

 

sync 사용법


 

기본적인 사용법

 

# rsync [옵션] [계정]@[sourcePC:/디렉토리] [target 디렉토리]
 

-a : archice mode ( 심볼릭 링크, 속성, 퍼미션, 소유권 등 보곤)
 

-v : verbose mode (자세한 정보 출력)
 

-z : compress (전송시 압축)
 

-r : 하위 디렉토리 포함
 

-u :  --update update only (don't overwrite newer files)
 

-e ssh : ssh를 이용한 rsync 동기화
 

--stats : 결과보고
 

--delete : 원본 서버에 없는 파일은 백업 서버에서 삭제
 

--progress : rsync 진행 상항 보기
 

--exclude : 제외할 파일 지정
 

--bwlimit : 대역폭(복사속도) 제어
 

--max-size : 특정 크기 이상 파일 제외(rsync 2.6.4 버전부터 추가된옵션)
 

--min-size : 특정 크기 이하 파일 제외(rsync 2.6.7 버전부터 추가된옵션)
 


 

응용

 

1) 단순동기화(원본파일 복사)
 

ex) rsync -avz root@soucepc:/data/backup  /data/backup
 

2) 동기화(삭제파일도 동일적용)
 

ex) rsync -avz --delete root@soucepc:/data/backup  /data/backup
 

3) 대역폭 조절
 

ex) rsync -avz --bwlimit=1024 root@soucepc:/data/backup  /data/backup
 

4) -e ssh
 

ex) rsync -avz -e "ssh -i /home/test/rsync-key" root@soucepc:/data/backup  /data/backup
 

5) 특정파일 제외
 

ex) rsync -avz --exclude=.txt --exclude=.sh root@soucepc:/data/backup  /data/backup/
 

6) 특정폴더 제외 (폴더 이름은 상대경로 입니다. 아래 같은 경우 backup 폴더 밑에 aa 가 있으면 --exclude=aa)
 

ex) rsync -avz --exclude=aaa(폴더1) --exclude=bbb(폴더2) root@soucepc:/data/backup  /data/backup/
 

7) 날짜(3일이내 파일만 복사)
 

ex) find . -type f -mtime -3  | rsync -avz --files-from=- /soucepc /data/backup



동기화에 지운 파일도 지우고 이게 일반적인 백업이니까 아래 예제를 보세요...
아래는 rsync 설치되어 있고 ssh 접속이 되면 아무런 설정도 없이 가능한 방법입니다.

rsync -avz --delete -e 'ssh -p 포트번호' 사용자@서버주소:/home/사용자폴더/ /백업받는폴더/

폴더 끝에 / 슬래시가 있고 없고는 큰 차이가 있습니다. 슬래시가 있으면 그 폴더 안에 모든 것을
폴더 끝에 / 슬래시가 없으면 그 폴더 자체를 복사합니다.


p.s

만약 rsync 가 설치 되어 있지 않으면 설치 하시면 됩니다.
근데 대부분 배포본에서 기본으로 깔려 있습니다.
 
| |





      1 page / 5 page
번 호 카테고리 제 목 이름 조회수
148 리눅스 서버 samba ... , ... 바다아이 452
147 리눅스 서버 postfix main.cf ... 바다아이 3434
146 리눅스 서버 /etc/crontab ... 바다아이 2122
145 리눅스 서버 - MEMTEST, , 바다아이 3306
144 리눅스 서버 top , top 바다아이 4118
143 리눅스 서버 , systemd-networkd, archlinux network setting 바다아이 5205
142 리눅스 서버 mirror .. ... 바다아이 5679
141 리눅스 서버 [Ubuntu] (swapfile) , ... 바다아이 5566
140 리눅스 서버 ufw , iptables 바다아이 6833
139 리눅스 서버 ... grub . submenu, grub-mkconfig 바다아이 5641
138 리눅스 서버 CentOS 7 Upgrade Kernel, centos 바다아이 7440
137 리눅스 서버 , dd , 바다아이 5556
136 리눅스 서버 ... ntp .. ... 바다아이 6597
135 리눅스 서버 archlinux netstat , netstat ... 바다아이 6344
134 리눅스 서버 ps , ps option 바다아이 6068
133 리눅스 서버 , swap , ... swap . 바다아이 6306
132 리눅스 서버 crontab , .... 바다아이 6257
131 리눅스 서버 ssh , ssh 바다아이 7359
130 리눅스 서버 SSH SSH , ssh-keygen rsa 바다아이 6897
129 리눅스 서버 , date : () , () , 바다아이 7080
128 리눅스 서버 aws lightsail, ssh .. .pem 바다아이 12135
127 리눅스 서버 , ubuntu generic kernel 바다아이 7479
126 리눅스 서버 .. apt ... 바다아이 7362
125 리눅스 서버 ... ubuntu kernel compile 바다아이 9953
124 리눅스 서버 nginx http2 , . 바다아이 8840
123 리눅스 서버 psql libreadline.so.7: cannot open shared object file: No such file or directory 바다아이 9203
122 리눅스 서버 ssh .bashrc , bash .. .bash_profile 바다아이 8543
121 리눅스 서버 , , 바다아이 7753
120 리눅스 서버 rc.local ... , 바다아이 8465
119 리눅스 서버 ? - IPv4 Subnetting, (Subnet Mask) 바다아이 8174
| |









Copyright ⓒ 2001.12. bada-ie.com. All rights reserved.
이 사이트는 리눅스에서 firefox 기준으로 작성되었습니다. 기타 브라우저에서는 다르게 보일 수 있습니다.
[ Ubuntu + GoLang + PostgreSQL + Mariadb ]
서버위치 : 오라클 클라우드 춘천  실행시간 : 0.06809
to webmaster... gogo sea. gogo sea.