[rsync] 서버 백업
0. 명령어 예제
rsync like/photo.zip subscribe #like 폴더의 photo.zip 파일을 subscribe 폴더에 복사 합니다.
rsync -r like/ subscribe #like 폴더내 파일을 subscribe 폴더내부로 copy 합니다. (파일생성날자가 오늘로 바뀜)
rsync -a like/ subscribe #like 폴더내 파일을 subscribe 폴더내부로 copy 합니다. (파일생성날짜 유지)
rsync -a --delete like/ subscribe #subscribe 폴더에만 존재하는 파일 삭제 (양쪽 비교 후)
#또는 무조건 like 폴더와 일치하게 만듭니다. (지울건 지우고)
rsync -a --remove-source-files like/ subscribe #like 폴더파일을 suscribe 폴더로 옮기고, like 폴더내 파일은 지운다
(단, 빈 폴더는 흔적이 남아 있습니다. 따로 지워야 합니다.)
**리모트서버
rsync -ahPz like [email protected]:/root #like 폴더를 리모트 서버의 root 디렉토리 내부에 copy 한다
#해석
-ahPze ; a 파일날짜유지 (attribute) h 파일용량 보기편하게표시(human)
P 파일이동진행상황표시+중지 후 연결진행 (progress + partial)
z 압축해서 파일이동
rsync -ahPz [email protected]:/root/like/ like01/ #리모트서버 like 폴더내부 파일을 내 로컬 like01 폴더 내부에 복사한다
1. 서버1와 서버2 접속 하기
- 공개키와 개인키 만들고, 어느쪽에서 어느쪽으로 접속 할지 정합니다.
예를 들어 서버1 에서 서버2로 접속할 거면, 서버1(private keys) 이고, 서버2 (public keys and authorized_keys) 입니다.
이때, 각 서버의 ssh 버전을 확인합니다.
만일 ssh 버전이 서로 다르면, 버전이 높은 쪽에서 하위버전으로 접속해야 합니다.
서버1
hhh@hcp:~/web$ ssh -V
OpenSSH_8.9p1 Ubuntu-3ubuntu0.1, OpenSSL 3.0.2 15 Mar 2022
서버2
[ddd@server2 ~]$ ssh -V
OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013
서버2가 낮은 버전을 사용합니다. 그래서 서버1에서 서버2로 접속해야 합니다.
반대로 하면 (서버2 -> 서버1), 아래와 같이 error 가 발생합니다.
[ddd@server2 ~]$ ssh [email protected]
no hostkey alg
접속 방향을 정했으니 (서버1 -> 서버2), 공개키와 개인키를 만들어 배치해야 합니다.
서버1에서 keys 를 만들어 줍니다.
$ ssh-keygen -t rsa
서버2에 공개키를 보내야 합니다. 공개키는 서버2 authorized_keys 파일에 기록하면 됩니다.
** 아래내용참조
[ssh, public keys, private keys] SSH 접속시 공개키, 개인키
** 키 알고리즘 사용 (상위버전에서 하위버전 접속할때, 사용할 알고리즘을 밝혀 줍니다.)
서버1에서 서버2로 접속할때,
ssh -oHostKeyAlgorithms=ssh-rsa [email protected]
접속이 가능함을 확인 했으면, rsysnc 를 실행해 봅니다.
(서버1 테미널에서 실행)
rsync -ahPze 'ssh -p 21098 -oHostKeyAlgorithms=ssh-rsa' [email protected]:/home/ddd/public_html/com/ /home/hhh/web/org/
#해석
-ahPze ; a 파일날짜유지 (attribute) h 파일용량보기편하게표시(human)
P 파일이동진행상황표시+중지 후 연결진행 (progress + partial)
z 압축해서 파일이동 e 따움표 사용해서 추가사항 입력
-p 21098 사용포트가 특별할 경우
-oHostKeyAlgorithms=ssh-rsa 사용할 키알고리즘을 알려줌
[email protected]:/home/ddd/public_html/com/ 서버에 접속해서 com 폴더 내용을 copy 합니다.
/home/hhh/web/org/ 내 서버의 org 폴더에 copy 합니다.
2. 서버1에서 서버2로 연결시 키알고리즘 에러 발생 (-oHostKeyAlgorithms=ssh-rsa)
hhh@hcp:~/web/org$ ssh -p 21098 [email protected]
Unable to negotiate with 90.90.90.90 port 21098: no matching host key type found. Their offer: ssh-rsa,ssh-dss