rsync 를 통해서 데이터 동기화 하기

1. 먼저 rsyncd 를 설치하여야겠다


2. 서버의 /etc/rsyncd.conf 파일을 편집한다.
접속가능한 IP주소를 host allow 에 쓰면 해당 IP 에서만 데이터를 가져갈수 있다.

[home]
path = /home
hosts allow = 175.123.232.56
hosts deny = *
list = true
uid = root
gid = root
read only = true



3. 클라이언트에서 rsync 접속을 테스트 한다. 여기서 서버IP주소를 219.254.32.80 일 경우 아래와 같다.
-avz : a옵션은 증분 백업을 뜻한다, 처음에는 모두 백업하지만, 그 뒤로는 변경된 파일만 추가로 백업한다. v 옵션은 전송되는 파일을 상세히 보는것이고 z 옵션은 데이터를 압축해서 전송하라는 뜻이다.
-- bwlimit=숫자 : 킬로바이트 단위로 속도를 제한한다. 1024는 초당 1메가 속도로 백업한다는 뜻이다. 이걸 생략하면 속도제한없이 빠르게 백업을 하게 된다. 본인은 서버 MAX트래픽이 10M라서 속도 제한을 걸었다. 솔직히 서버제공업체에서 말하는 10M 의 속도란 10메가 바이트가 아니고 10메가 비트를 뜻한다.
따라서 1024라는 숫자는 1메가바이트 속도로 다운로드를 받게되니 실제로 8M 의 네트웍 트래픽을 사용하게 된다는 뜻이다.

rsync -avz --bwlimit=1024 219.254.32.80::home /volume1/web



4. 만약 접속이 안되거나 에러가 뜰 경우 서버의 방화벽으로 인한 포트가 열려있는지 확인하자.

PHP 에서 $_SERVER(서버변수) PHP_SELF SCRIPT_NAME REQUEST_URI 차이?

홈페이지 루트에 test.php 를 접근했을 경우 아래와 같이 똑같은 변수가 있다.
    $_SERVER['REQUEST_URI'] => /test.php
    $_SERVER['SCRIPT_NAME'] => /test.php
    $_SERVER['PHP_SELF'] => /test.php
 SCRIPT_NAME  과 PHP_SELF 는 기본적으로 같다고 보면 좋을 것 같다.

Example 1. 요청된 URL 이 파일이름을 포함할때다음과 같을때:
http://example.com/test.php/foo/bar
[REQUEST_URI] => /test.php/foo/bar
[PHP_SELF] => /test.php/foo/bar
[SCRIPT_NAME] => /test.php


Example 2. REQUEST_URI 는 파라미터를 포함하고, SCRIPT_NAME, PHP_SELF는 파라미터를 포함하지 않는다.:
http://example.com/test.php?foo=bar
[REQUEST_URI] => /test.php?foo=bar
[PHP_SELF] => /test.php
[SCRIPT_NAME] => /test.php


Example 3. 서버측 리다이렉션이 동작했을 때 (for example mod_rewrite on apache):
웹브라우저 : http://example.com/test.php
실제서버경로 : /htdocs/test2.php
[REQUEST_URI] => /test.php
[PHP_SELF] => /test2.php
[SCRIPT_NAME] => /test2.php


Example 4. 브라우저에서 없는URL을 요청할 경우 404 Error 페이지를 보여줄때 REQUEST_URI 는 클라이언트의 요청주소를 알수있다.
Using apache directive ErrorDocument 404 /404error.php
http://example.com/test.php
[REQUEST_URI] => /test.php
[PHP_SELF] => /404error.php
[SCRIPT_NAME] => /404error.php


** 관련 레퍼런스 : https://stackoverflow.com/a/326331