리눅스에서 이쪽원격에서 다른쪽 원격으로 파일을 백업해 놓고 싶을때,
xcopy보다 rsync를 쓴다.
rsync 옵션 /원본폴더 /목적지폴더 써주면 된다.
이쪽에서 다른쪽 서버로 보낼때는 밑에처럼 해주면 된다.
목적지를 쓸때는 아이디@아이파: /폴더주소
이렇게 쓰면 되는데,
rsync -avz /serverComputer/backup test@192.168.0.2:~/backup
내 추천은 아에 리모트 마운트를 해 놓고 작업하는걸 추천한다.
그러면, 계속 한쪽에서 용량 확인도 할수있으니 좀 더 편하다.
마운트는
$ sudo mkdir /data
$ sudo mount xxx.xxx.xxx.xxx:/target_path /data
mount 아이피:/목적지경로 /마운트원하는폴더
이렇게 해준다.
정보 확인은
df -h 하면 된다.
마운트해제를 원하면 umount 하면 된다.
$ sudo umount /data
이렇게 마운트 하고, 이제 복사를 하자.
$ rsync -arvh /original_data /data
rsync 옵션 /원본 /복사할곳
이렇게 적어주면 된다.
옵션 목록은 맨 밑에 추가해 놓았다.
나같은 경우는 -arvh만 했는데,
-a는 아카이브라고하고,
-r은 하위폴더이고,
-v는 로그 보기 편하게 보여주는거고,
-h는 기계어로 나오는 로그를 사람이 보기편하게 해주라는건데, 그냥 툳였다.
그리고 복사하다보면 퍼미션 오류가 뜨는데,
rsync: chown "/data/ff" failed: Operation not permitted
이라는 에러가 뜰때가 있다.
퍼미션 문제는
rsync 메뉴얼에는
이 부분을 해결하기 위해 rsync 메뉴얼을 보면
-p, --perms preserve permissions
라고 나와 있는 것을 확인할 수 있다. 문제는 -p 옵션을 쓰지 않았는데도 퍼미션이 똑같이 유지되어서 문제를 일이키는 것이다.
문제의 해답 역시 메뉴얼 안에 있다.
-a, --archive archive mode; equals -rlptgoD (no -H,-A,-X)
무심코 쓰는 -a 옵션 안에 -p 옵션이 숨어있다.
즉, -a 옵션 대신 -rltgoD 옵션을 쓴다면 퍼미션이 동기화되는 것을 막을 수 있다.
[원본 소스 http://chungsy02.tistory.com/88]]
난 그냥 -a 대신에 -rltgoD를 썼다.
혹시나 다른 작업을 하고 백그라운드에서 계속 작업을 원하면,
$ rsync -arvh /original_data /data &
명령어 뒤어 &를 붙여 주면 된다.
옵션
-v | –verbose | 동기화시 상세정보를 표시함. 해당 옵션은 3개까지 설정가능. 2,3개동시에 설정하면, 더욱 상세한 정보를 표시함 |
-q | –quiet | 동기화 정보를 표시하지 않음. cron등에 의한 배치처리등에서 사용함. |
-c | –checksum | 전송전에 128비트 MD4의 체크섬을 사용하여, 송신서버의 모든 파일의 체크섬을 만든다. 그 체크섬은 수신서버에서 확인함. 그리고 송신서버와 같은 체크섬, 같은 사이즈, 같은 이름인 파일은 스킵. 해당 옵션을 사용하면 매우 느려짐. |
-a | –archive | 아카이브 모드로 실행함. [-rlptgoD]옵션을 지정하면 같은 동작을 하나, 해당 옵션 하나로 대부분의 디렉토리, 파일의 정보를 유지하며 동기화가 가능하므로 편리함. |
-r | –recursive | 재귀적으로 디렉토리를 카피함. 해당 옵션을 지정하지 않으면, rsync명령어로는 디렉토리를 동기화 하지 않음. |
-b | –backup | 동기화할 디렉토리에 이미 파일이 존재하는 경우, 동기화할 디렉토리에 백업. 이 경우 디폴트로 [~]이 붙는다. |
-u | –update | 동기화할 디렉토리에 원본소스보다 최신인 파일이 있을경우, 해당 파일은 동기화하지 않음. |
–inplace | 데이터를 업데이트 해야하는경우, rsync가 파일을 전송하는 방법을 변경한다. 디폴트로는 새로운 복사본을 만들어서 전송하는데, 해당 옵션을 설정하면 동기화 대상 파일에 rsync가 직접 업데이트된 데이터를 쓴다. 이 명령어는 몇가지 영향 끼치는 것이 있다. 1) 바이너리 파일에 사용하면 업데이트 되지 않음. 2) 파일 전송중에는 해당파일은 불일치 상태가 됨. 3) 파일 전송중 실패 혹은 중단이 되면, 해당 파일은 불일치 상태로 남겨짐. 4) 해당파일에 쓰기권한이 없으면 업데이트되지 않음. 그리고 5) rsync의 델타-전송 알고리즘의 효능이 떨어짐. 주의! : 다른 곳에서 해당파일에 접근한다면 사용하지말라, 그리고 복사용으로 사용할경우는 충분히 주의를 기울여서 사용하라. 해당옵션은 큰파일의 블록단위 변화나 데이터의 추가, 그리고 시스템 디스크의 용량이 제한된 상황에서는 유용하다. (네트워크 트래픽 제한은 관계없다.) 또한 해당 옵션은 –partial을 적용시킨다. (전송중 실패한경우 파일을 삭제하지 않기위해서), 그러나 –partial-dir 과 –delay-updates와 같이 사용하면 충돌(conflict)이 일어날 것이다. |
-l | –links | 동기화할 서버에 심볼릭 링크를 작성함. 해당옵션을 지정하지 않을경우에는 심볼릭 링크 파일은 동기화하지 않음 |
-p | –perms | 퍼미션 정보를 유지하면서 동기화를 함. |
-o | –owner | 소유자 정보를 유지하면서 동기화를 함. root권한을 가진 유저만 실행가능. |
-g |–group | 그룹 정보를 유지하면서 동기화를함. |
-D | –devices | 동기화할 디바이스를 재작성함. root권한을 가진 유저만이 실행가능. |
-t | –times | 파일의 타임 스탬프를 유지하면서 파일을 동기화함. 해당옵션을 지정하지 않는경우는, 모든 파일에 대해 비교 작업을 실행함. |
-n | –dry-run | 실제로 동기화를 실행하지는 않고, 동기화 하게될 때의 동작을 표시해줌 |
-e | –rsh=커맨드 | rsync커맨드로 사용할 리모트 쉘 프로그램(ssh같은거)를 지정함. 디폴트로는 rsh를 사용 |
–del|–delete | 동기화 소스에 없는 파일이 동기화할 곳에 있는 경우, 그 파일을 삭제함. |
–partial | 부분적으로 전송된 파일을 유지시킴 |
–partial-dir=DIR | 부분적으로 전송된 파일을 지정한 DIR에 둠. |
–delay-updates | 업데이트할 파일들을 가장마지막에 둠. |
-z | –compress | 동기파일을 압축함. |
–exclude=패턴 | 지정한 패턴에 일치하는 파일을 동기대상에서 제외시킴. |
–exclude-from=FILE | 파일에 기술된 패턴과 일치하는 파일을 제외. |
–deamon | rsync를 데몬 모드로 실행함. |
–config=FILE | 별도의 rsyncd.conf파일을 지정 |
–stats | rsync알고리즘의 송신효율을 표시함. |
-h | –human-readable | 결과의 수치들을 사람이 읽기편한 포맷으로 출력 |
–progress | 전송의 진행 상황을 표시 |
-P | –partial –progress 와 동일 |
-i | –itemize-changes | 모든 업데이트에 대한 요약을 출력 |
–log-file=FILE | 무슨 작업을 했는지에 대한 상세로그를 파일로 남김 |
동기화 소스 디렉토리 | 동기화 소스 디렉토리를 지정함. |
[[유저명@]호스트명:]동기화할디렉토리 | 동기화할 서버와 디렉토리를 지정함. 리모트 호스트를 (동기화)타겟으로 할 경우는, 반드시 호스트와 유저명을 같이 지정해야한다. |
–version | 커맨드의 버전을 표시함. |
–help | 커맨드의 도움말을 표시함. |
[원본소스 : http://gyus.me/?p=214]]
'컴퓨터 > 리눅스 클라우드(AWS, GCP)' 카테고리의 다른 글
리눅스 복사 프로그램(쉘스크립트)만들기 (0) | 2018.02.01 |
---|---|
cp를 이용한 폴더 복사 (0) | 2018.01.31 |
리눅스 폴더 소유자 바꾸기 (0) | 2018.01.31 |
도메인 여러개 포트별로 설정해주기 (0) | 2018.01.29 |
리눅스 프로세스 찾아서 죽이기 (0) | 2018.01.29 |