잠시만 기다려 주세요

     '애도와 추모가 책임있는 사람들에게 면죄부를 주어서는 안됩니다. -더불어 민주당 국회의원 김용민-'
전체검색 :  
이번주 로또 및 연금번호 발생!!   |  HOME   |  여기는?   |  바다물때표   |  알림 (19)  |  여러가지 팁 (1095)  |  추천 및 재미 (163)  |  자료실 (28)  |  
시사, 이슈, 칼럼, 평론, 비평 (799)  |  끄적거림 (142)  |  문예 창작 (719)  |  바람 따라 (75)  |  시나리오 (760)  |  드라마 대본 (248)  |  
살인!


    리눅스 서버

리눅스 서버 - ssh와 rsync 를 이용한 서버 백업 방법
이 름 : 바다아이   |   조회수 : 10809         짧은 주소 : 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 옵션은 주의해서 사용하세요... 잘못하면 백업 디스크 자료도 날려먹을 수 있습니다. -.-;
가급적 쓰지 않는 게 좋을 듯 싶습니다. 가끔 수동으로 한번씩 돌리는 게 좋습니다.





 
| |





      1 page / 6 page
번 호 카테고리 제 목 이름 조회수
155 리눅스 서버 apt ... ... apt 바다아이 306
154 리눅스 서버 , smartctl, hdd ssd 바다아이 458
153 리눅스 서버 , .... arch kernel compile.... 바다아이 448
152 리눅스 서버 [Vim, Vi] 바다아이 427
151 리눅스 서버 ... 바다아이 507
150 리눅스 서버 vps root .. 바다아이 459
149 리눅스 서버 Ubuntu 24.04 LTS - SSH Port , ssh 바다아이 491
148 리눅스 서버 samba ... , ... 바다아이 1386
147 리눅스 서버 postfix main.cf ... 바다아이 5033
146 리눅스 서버 /etc/crontab ... 바다아이 3357
145 리눅스 서버 - MEMTEST, , 바다아이 5040
144 리눅스 서버 top , top 바다아이 5678
143 리눅스 서버 , systemd-networkd, archlinux network setting 바다아이 7045
142 리눅스 서버 mirror .. ... 바다아이 7306
141 리눅스 서버 [Ubuntu] (swapfile) , ... 바다아이 7342
140 리눅스 서버 ufw , iptables 바다아이 8291
139 리눅스 서버 ... grub . submenu, grub-mkconfig, grub 바다아이 6839
138 리눅스 서버 CentOS 7 Upgrade Kernel, centos 바다아이 9220
137 리눅스 서버 , dd , 바다아이 7167
136 리눅스 서버 ... ntp .. ... 바다아이 7927
135 리눅스 서버 archlinux netstat , netstat ... 바다아이 7539
134 리눅스 서버 ps , ps option 바다아이 7362
133 리눅스 서버 , swap , ... swap . 바다아이 7532
132 리눅스 서버 crontab , .... 바다아이 7538
131 리눅스 서버 ssh , ssh 바다아이 8785
130 리눅스 서버 SSH SSH , ssh-keygen rsa 바다아이 8294
129 리눅스 서버 , date : () , () , 바다아이 8548
128 리눅스 서버 aws lightsail, ssh .. .pem 바다아이 13565
127 리눅스 서버 , ubuntu generic kernel 바다아이 8934
126 리눅스 서버 .. apt ... 바다아이 8808
| |









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