프로그램/LINUX

linux 에서 expect, rsync 로 동기화가 안 될 때.

(주)CKBcorp., 2022. 12. 28. 19:09
반응형

말 그대로다. 

rsync 명령어로 복사, 백업 등 동기화를 할 때, 이게... 동기화가 안 되는 경우가 있다.

매우 당황하게 되는데, 
인터넷 뒤져봐도 딱히 내용이 없다.
그러다가 우연히 해결하게 되어서 기록으로 남긴다. 


1. rsync 도입
패키지 설치하고, rsync 테스트 해 보니 정상 작동.
sync 가 되는지 확인하기 위해, 원본 디렉토리와 복사본 디렉토리를 
파일 추가 삭제 변경하면서 
동기화 되는걸 확인.

참고 : 
expect 사용법 
https://engineer-mole.tistory.com/233

rsync 사용법 
http://knamhun.blogspot.com/2008/04/linux-rsync-ssh.html
https://www.lesstif.com/system-admin/rsync-data-backup-12943658.html


2. 정상 작동으로 생각하고, 해당 스크립트로 원래 작업하려던 대용량 디스크 동기화 시작.

3. rsync 가 동기화 안됨.
스크립트 자체는 정상 동작하지만,
원본/복사본 위치의 파일들을 비교해 보면 파일 갯수 차이 발생 

파일 갯수 비교 :
$ find . -type f | wc -l

4. 삽질의 시작.
인터넷도 검색해보고, 옵션 값도 바꿔보고, -vv 로 메시지 따라가면서 확인해보고 ...
그런데 안된다. 
생각할 수 있는건 다 해 봤는데 안된다. 

인터넷 뒤져보면, 그나마 가능성 있는 = 동기화 안되는 원인 
> 권한 문제
> 디스크 / 시스템 / OS 간의 파일 시스템 차이 ( NTFS - EXT 등등 ) 
> 원본과 타겟 간에 시간 정보 system time 이던 뭐던 차이 가능성 
정도.


5. 얻어걸린 검색 

http://knamhun.blogspot.com/2008/04/linux-expact.html

작업 시간이 오래 걸려야 정상인 rsync script 의 경우, 
작업의 timeout 값을 늘려줘야 한다고 한다.
rsync 문제가 아니라 
rsync 구문을 실행하는 expect 의 경우 
expect 명령의 default timeout 이 30초 라서, 
작업 시간이 오래 걸리는 command 나 script 의 경우, 명시적으로 timeout 값을 늘려줘야 하는 것.
즉, 지금까지는 작업 돌다가 timeout 걸리면, 타임아웃까지 실행하뎐 script 혹은 cmd 까지만 실행하고, expect 자체가 종료해 버린 것.


명시적으로 
set timeout -1 
으로 타이머 값을 무시하게 했더니
rsync 잘 돌아간다.

젠장.

반응형