잠시만 기다려 주세요

     '대한민국이 더이상 발전하지 못하는 것은 부패한 언론들의 쓰레기짓 때문이다.'
전체검색 :  
이번주 로또 및 연금번호 발생!!   |  HOME   |  여기는?   |  바다물때표   |  알림 (24)  |  여러가지 팁 (1108)  |  추천 및 재미 (165)  |  자료실 (25)  |  
시사, 이슈, 칼럼, 평론, 비평 (923)  |  끄적거림 (143)  |  문예 창작 (719)  |  바람 따라 (75)  |  시나리오 (760)  |  드라마 대본 (248)  |  
살인!


    리눅스 서버

리눅스 서버 - ssh와 rsync 를 이용한 서버 백업 방법
이 름 : 바다아이   |   조회수 : 11696         짧은 주소 : 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
번 호 카테고리 제 목 이름 조회수
38 리눅스 서버 PHP 7.0 on CentOS/RHEL 6.7 and 7.1 via Yum 바다아이 19320
37 리눅스 서버 CentOS 7 firewalld iptables 바다아이 11808
36 리눅스 서버 , webalizer , 바다아이 11404
35 리눅스 서버 iptables ssh , ssh 바다아이 11180
34 리눅스 서버 ssh - fail2ban, SSH Brute-force attack 바다아이 14705
33 리눅스 서버 NGINX php ... 바다아이 60443
32 리눅스 서버 CentOS 7 | firewall-cmd 바다아이 11705
31 리눅스 서버 SSH (Secure Shell) 바다아이 14776
30 리눅스 서버 proftp , , proftpd.conf 바다아이 14409
29 리눅스 서버 centos 7 iptables firewall-cmd 바다아이 12671
28 리눅스 서버 바다아이 11703
27 리눅스 서버 netstat, nmap 바다아이 12107
26 리눅스 서버 Apache IP , 바다아이 11059
25 리눅스 서버 , 바다아이 11921
24 리눅스 서버 php php.ini , 바다아이 14517
23 리눅스 서버 mysql, mariadb (UTF8) .. ??? 바다아이 13450
22 리눅스 서버 , , , 바다아이 11997
21 리눅스 서버 top 바다아이 14671
20 리눅스 서버 [subversion] ubuntu subversion 바다아이 14325
19 리눅스 서버 2 mod_cband , 바다아이 15711
18 리눅스 서버 바다아이 11978
17 리눅스 서버 Apache event MPM, Prefork MPM, Worker MPM 바다아이 14936
16 리눅스 서버 Virtual Hosting 바다아이 14446
15 리눅스 서버 fedora selinux , ... , , ftp, mysql ... 바다아이 12569
현재글 리눅스 서버 ssh rsync 바다아이 11697
13 리눅스 서버 502 bad gateway using Nginx 바다아이 12132
12 리눅스 서버 nginx post .... 바다아이 10023
11 리눅스 서버 centos nginx php-fprm rpm 바다아이 11308
10 리눅스 서버 ssh ip or 바다아이 11420
9 리눅스 서버 nginx 405 바다아이 12289
| |









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