원격 파일 전송하는 방법중 scp 와 rsync 를 주로 사용한다.
rsync 도 -e ssh 옵션을 붙여서 쓰니 둘의 차이는 별로 없다.

그런데, scp 의 경우 문제가 있다. 바로 symbolic link 의 처리.

scp -pr {local} {remote}
를 하면  local 의 파일을 원격으로 복사할 수 있다. 서브디렉토리포함, 파일시간 보존등.
그런데, 파일중 symbolic link 가 있다면 링크된 원본파일이 전송된다. symlink 가 유지 되지 않는다.

그런경우 rsync 를 쓴다.

rsync -avzu -e ssh  {local} {remote}
이렇게 하면 된다.
둘중 편한거 쓰면 된다.

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
백업할때 rsync 를 많이 쓴다.

보통 이런식이다.
rsync -avzrt -e 'ssh -p 2222 '  {SRC} {DEST}

그런데, 서버측과 백업측의  uid , gid 가 동일 하지 않으면 백업측의 전송된 파일이 바뀌는 경우가 있다.
즉, 서버측의 mysql 의 uid , gid 가 각각 27  이고, 백업측은 55 라고 하면.
rsync 로 백업이 되면서 27 에서 55 로 자동 변환되어 백업된다.

서버측의 uid/gid 를 그대로 가져오고 싶다면 다음과 같은 옵션을 추가해 준다.
rsync -avzrt --numeric-ids -e 'ssh -p 2222 '  {SRC} {DEST}
그러면 uid,gid 가 유지된채 백업이 된다.

uid, gid 에 엄격한  mysql , named 등을 rsync 로 백업할 때 주의한다.

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
rsync + ssh 에 대한 팁은 많다.
그런데, ssh 를 root 로 로그인을 허용해야 하는 방법의 설명이 많다. /etc/ssh/sshd_config 에서
PermitRootLogin yes
로 해야 한다.  그러나 왠지 root 로 허용하는 것은 좀 꺼려지게 된다.
(ssh brute force 공격이 일상화 되어 있기 때문에 더 염려된다.)


root 로 접근은 못하게 하면서,  rsync+ssh 를 쓸 수 없을까?

물론 있다.
PermitRootLogin forced-commands-only
라는 옵션이 있다.

.ssh / authorized_keys  의 public key 에 적어준 명령만 허용하는 옵션이다.
from="192.168.0.1",command="/root/bin/validate-rsync" ssh-dss IEUHFKSJHDOG ....
위 밑줄 친 부분이 추가된 것이다. 딱 보면 감이 올것이다.

from 부분
의 IP 는 허용할 IP주소이다. 이 주소가 제대로 들어가지 않으면..     이런 에러로그를 보게 된다. 허용한 IP가 아니라는 메세지이다.
sshd[21670]: Authentication tried for root with correct key but not from a permitted host (host=backup, ip=192.168.0.1).
from 부분에 IP 를 직접 적어주거나,  /etc/hosts  에 등록해서  host 값을 적어줘도 된다.
from="backup",command="...."
/etc/hosts 에는 다음과 같이 적어준다.
192.168.0.1  backup
도메인을 직접적어주는것은 안되는 듯 하다.


command 부분에 적어준 스크립트를 통해 실행하게 된다.
validate-rsync (이름은 아무거나 상관없음) 의 내용은 다음과 같다.
#!/bin/sh
case "$SSH_ORIGINAL_COMMAND" in
*\&*)
echo "Rejected"
;;
*\(*)
echo "Rejected"
;;
*\{*)
echo "Rejected"
;;
*\;*)
echo "Rejected"
;;
*\<*)
echo "Rejected"
;;
*\`*)
echo "Rejected"
;;
rsync\ --server*)
$SSH_ORIGINAL_COMMAND
;;
*)
echo "Rejected"
;;
esac
파일을 만들고, 실행권한을 준다.




참조문서
http://www.linux.com/archive/feature/113847
http://www.debianhelp.co.uk/rsync.htm
http://troy.jdmz.net/rsync/index.html
https://people.chem.umass.edu/wiki/index.php?title=RSYNC_and_SSH_With_Automated_Login
http://www.iwlearn.net/websitetoolkit/help/how-to/using-rsync-and-ssh

http://zakorea.tistory.com/24
http://bluetech.tistory.com/2

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,