파일을 복사하는 명령어 1 - rsync
제목은 파일을 복사하는 명령어라고 썼지만,
서버 대 서버로 복사도 가능하다.
이번 글에서는 로컬에서 사용하는 방법만 작성한다.
rsync : 빠르고 다양한 복사툴이다. (man rsync 직역)
옵션
- -a : 기존에 갖고있는 소유주, 권한 정보를 그대로 복사하는 옵션이다.
- -v : 진행상황을 표시하는 옵션이다.
- -z : 데이터를 압축해서 전송하는 옵션이다.
- --delete : 원본에 없으면 대상에서도 삭제하는 옵션이다.
- --bwlimit=속도 : kbyte 단위로 속도를 제한하여 복사하는 옵션이다.
- --exclude 경로 : 경로를 복사에서 제외하는 옵션이다.
- --include 경로 : 경로를 복사에 포함시키는 옵션이다.
- --progress : 복사되고 있는 상황을 자세히 보는 옵션이다.
-z는 써본적도 없고 쓸 계획도 없어서
따로 다루지 않겠다.
우선 rsync를 사용할 수 있는 환경인지 부터 확인한다.
이 파일은 원래 disable = yes 로 되어있다.
vi 로 열어 disable = no로 바꾼다음
service xinetd restart 혹은 /etc/rc.d/init.d/xinetd 를 입력해준다.
여기서 xinetd 를 못찾는다고 하면
yum install xinetd 를 해준다.
rsync.txt 라는 파일을 생성하여 권한을 이상하게 줬다.
이 파일을 단순히 상위 디렉토리로 복사하는 예제이다.
rsync -av 파일 복사할위치
이렇게 입력해주면 소유주, 권한정보가
똑같이 복사된 것을 확인 할 수 있다.
옵션을 쓰지 않아도 똑같이 복사된 것을 볼 수 있다.
이제 디렉토리를 포함시켜서 복사해보도록 한다.
rsync 라는 디렉토리를 생성해서 옵션 없이 rsync를 사용했다.
하지만 옵션이 없으면 디렉토리는 스킵해버린다.
그럼 옵션을 주면?
디렉토리를 포함하여 같이 복사한다.
그래서 내손은 rsync를 치면 무의식적으로 -av 가 따라붙는다 허허
이번엔 --delete 옵션에 대해 설명하려고 한다.
위에 적어놓은 옵션설명은 너무 전체적으로 적어놓은
느낌이 있어서 상세히 적으려고 한다.
현재 예제로 만들어놓은 구조이다.
원본으로 사용할 디렉토리에서는 rsync_delete.txt라는 파일이 없고,
대상으로 사용할 디렉토리에는 rsync 디렉토리 안에 만들어 두었다.
--delete 옵션을 사용했을 때,
서로 비교를 해서 대상에 원본에 없는게
있으면 대상에서도 삭제를 해버린다.
100% 동기화가 되는 것이다.
명령어를 실행한 직후 뜨는 문구를 보면
deleting rsync/rsync_delete.txt
라고 떠있다.
--bwlimit 은 복사하는 속도를 제한하는 명령어다.
보통 로컬복사에서는 사용하지않고,
서버대 서버로 복사할 때 많이 사용한다.
특히 트래픽이 급격히 상승하는게
문제가 될경우 많이 사용한다.
지금 예제는 초당 1Kbyte 속도로 복사하는 것이다.
--progress 를 이용한 것도 있다.
--exclude 는 파일을 제외하고 싶을때 사용하는 옵션이다.
exclude 뒤에 붙는 경로는 상대경로만 먹힌다.
내가 테스트 할때는 ../ ./ 이것도 안먹히고,
그냥 현재경로에 있는 것들만 됐다.
예제에 보면 rsync.txt는 제외하고 복사하라고 입력했다.
입력한대로 결과가 나왔다.
하나하나 exclude에 포함시킬 필요는 없다.
--exclude-from=FILE
을 지정하면 그 파일에 있는 이름은 전부 제외시켜준다.
이미지에 있는 예제가 그러하다.
다음 글에서는 서버 대 서버로
복사하는 방법에 대해 알아보도록 한다.
3줄 요약
rsync는 빠르고 다양한 복사툴이다. (힘세고 강한아침?)
옵션을 어떻게 쓰냐에 따라 복사결과가 달라진다.
나는 아직도 exclude 쓸 때 헤맨다.