잠시만 기다려 주세요

     '입만 나불거리고 행동하지 않는 민주당을 규탄한다.'
전체검색 :  
이번주 로또 및 연금번호 발생!!   |  HOME   |  여기는?   |  바다물때표   |  알림 (26)  |  여러가지 팁 (1125)  |  추천 및 재미 (166)  |  자료실 (25)  |  
시사, 이슈, 칼럼, 평론, 비평 (1037)  |  끄적거림 (150)  |  문예 창작 (729)  |  바람 따라 (75)  |  시나리오 (760)  |  드라마 대본 (248)  |  
살인!


    리눅스 서버

리눅스 서버 - ssh와 rsync 를 이용한 서버 백업 방법
이 름 : 바다아이   |   조회수 : 12766         짧은 주소 : https://www.bada-ie.com/su/?281591783478
'/home/폴더명'  에 있는 모든 데이터를 
'/home2/폴더명'  에 동기화 하는 것입니다.

ssh 이용한 원격 백업 (ssh 접속을 비번이 아닌 키로 접속할 때 입니다. ssh 키 설정은 서버, 클라이언트 세팅해야 합니다. 찾아보세요.)

rsync -avz -e 'ssh -i .ssh/id_rsa -p 22' 유저이름@주소:/home/폴더명/ /home2/폴더명/

로컬 복사 동기화

rsync -avz /home/폴더명/ /home2/폴더명/

**

폴더명 뒤에 / 붙이면 그 폴더 안에 모든 것을..... 이런 표현이고요
폴더명 뒤에 / 를 빼면 그 폴더를.... 이런 표현입니다.

--delete 옵션은 백업 데이터를 날려먹을 수 있으므로 안 쓰시는 게 좋고요...
원본 디스크에 문제가 생겨 마운트를 뺐다고 생각해 보세요..
보통 cron 으로 동기화 해 놓으실 것인데... 원본이 빈값 상태에서 cron 은 계속 돌 것이고 다음 상황은 ?? 끔찍하죠..
그러니 --delete 옵션은 쓰지 마세요.. -.-;


아래는 여러가지 설명인데 좀 예전 버전이네요 ^^;
그냥 둘게요... 위에 설명이면 다 아실 거 같네요...


---------------------------------------------------------------------------------------------------------------------


리눅스 시스템 사이에서 백업을 해야 할일이 생겨서 이것저것 찾아 보다가..
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 가 설치 되어 있지 않으면 설치 하시면 됩니다.
근데 대부분 배포본에서 기본으로 깔려 있습니다.

주의!!!

--delete 옵션은 주의해서 사용하세요... 잘못하면 백업 디스크 자료도 날려먹을 수 있습니다. -.-;
가급적 쓰지 않는 게 좋을 듯 싶습니다. 가끔 수동으로 한번씩 돌리는 게 좋습니다.





 
| |





      5 page / 6 page
번 호 카테고리 제 목 이름 조회수
43 리눅스 서버 OpenVZ vs KVM, Xen , 바다아이 12727
42 리눅스 서버 roundcubemail 4 바다아이 12333
41 리눅스 서버 [Imap] Qmail + Vpopmail + Dovecot 바다아이 16423
40 리눅스 서버 Roundcubemail 0.3.1 , 바다아이 15722
39 리눅스 서버 qmail + vpopmail 바다아이 12344
38 리눅스 서버 PHP 7.0 on CentOS/RHEL 6.7 and 7.1 via Yum 바다아이 21910
37 리눅스 서버 CentOS 7 firewalld iptables 바다아이 13040
36 리눅스 서버 , webalizer , 바다아이 12515
35 리눅스 서버 iptables ssh , ssh 바다아이 12276
34 리눅스 서버 ssh - fail2ban, SSH Brute-force attack 바다아이 15911
33 리눅스 서버 NGINX php ... 바다아이 61616
32 리눅스 서버 CentOS 7 | firewall-cmd 바다아이 12851
31 리눅스 서버 SSH (Secure Shell) 바다아이 16031
30 리눅스 서버 proftp , , proftpd.conf 바다아이 15727
29 리눅스 서버 centos 7 iptables firewall-cmd 바다아이 13662
28 리눅스 서버 바다아이 12706
27 리눅스 서버 netstat, nmap 바다아이 13185
26 리눅스 서버 Apache IP , 바다아이 12028
25 리눅스 서버 , 바다아이 12878
24 리눅스 서버 php php.ini , 바다아이 15702
23 리눅스 서버 mysql, mariadb (UTF8) .. ??? 바다아이 14422
22 리눅스 서버 , , , 바다아이 13006
21 리눅스 서버 top 바다아이 15846
20 리눅스 서버 [subversion] ubuntu subversion 바다아이 15505
19 리눅스 서버 2 mod_cband , 바다아이 17014
18 리눅스 서버 바다아이 12934
17 리눅스 서버 Apache event MPM, Prefork MPM, Worker MPM 바다아이 16211
16 리눅스 서버 Virtual Hosting 바다아이 15598
15 리눅스 서버 fedora selinux , ... , , ftp, mysql ... 바다아이 13614
현재글 리눅스 서버 ssh rsync 바다아이 12767
| |









Copyright ⓒ 2001.12. bada-ie.com. All rights reserved.
이 사이트는 리눅스에서 chrome 기준으로 작성되었습니다. 기타 브라우저에서는 다르게 보일 수 있습니다.
[ Debian + GoLang + PostgreSQL + Mariadb + PgBouncer + ProxySQL]
서버위치 : San Jose Datacenter  실행시간 : 0.03954
to webmaster... gogo sea. gogo sea.