반응형

이번에 WD 10TB를 구매하면서, 기존에 예비용으로 쓰던 USB 2TB 외장하드의 데이터를 10TB로 옮기는 작업을 주말간 진행했다.

 

그동안 모았던 자료들은 대부분 RSS 통해서 받아진 자료이고, 관리를 안하다보니 2TB를 거의 꽉 채운 데이터를 옮겨야 했었고, GUI 환경은 아무래도 대용량 처리에 적합하지 않으므로 rsync로 옮기기로 결정!

 

데이터가 적을 경우에는 Rsync를 쓰던 cp를 쓰던 mv를 쓰던 사실 문제가 안된다.

하지만, 우리에겐 시간이 없기 때문에 최대한 고효율을 뽑아야 한다.

 

그러던 중 머리에 떠오른 것은 Rsync가 Single Thread이지만, xargs를 통해 Multiple Thread처럼 처리를 하면 좀 더 효율적이지 않을까하는 생각이 들었다. (결국은 Disk-iops의 한계가 있으므로 Thread를 적정량 설정해야 하겠다.)

 

아래와 같은 커맨드를 이용해봤다.

Source Directory의 목록을 ls로 가져오고, xargs를 통해 rsync와 연계하는데 쓰레드는 5개로 세팅

 

$ ls /root/2T/Video/TV | xargs -I {} -P 5 -n 1 rsync -avz --progress /root/2T/Video/TV/{} /root/10T/Video/TV/

 

이 명령어를 실행하고, 프로세스 목록을 보면, 서브프로세스들이 생성되며 작업을 잘 나눠서 처리하는 것을 볼 수 있다.

앞으로도 효율적인 대용량 데이터 처리에 참고해야겠다.

반응형
,