tar 와 ssh 를 이용한 파일 원격 전송 속도 향상 하기
수많은 수의 파일과 디렉토리를 원격지 서버로 빠르게 전송하는 방법으로 tar 와 ssh 를 이용한 방법을 소개함.
적은 수의 대용량 파일을 복사할 경우 흔히 사용하는 ftp나 scp를 이용하는 것이 성능 측면에서 더 효율적이다. 하지만 작은 크기의 수많은 파일을 원격지에 전송할때는 실제 전송되는 파일의 전체 크기에 비해 많은 시간이 소요된다.
이는 파일 전송 시 전체 용량의 문제가 아니라 전송해야하는 파일의 수가 문제가 된다.
즉 파일을 원격지로 전송하기 위해서는 ftp 나 ssh 프로토콜을 통해 해당 프로그램에서 전송에 관련된 instance 를 열어 전송을 하는데, 파일이 하나 전송될때 마다 이런 절차가 내부적으로 반복되어진다. 많이 파일 수가 수천만개라면, 실제 파일 용량을 전송하는데, 소요되는 시간보다, 해당 instance를 open/close하는 데 소요되는 시간이 더 많이 걸리게 된다. 이런 비효율적인 시간을
최대한 축소하고자 할때 아래 방법을 사용하면 된다.
# tar cz – <전송하는 최상위 디렉토리>/ | ssh <원격지서버주소> tar xz -C <전송받을디렉토리 위치>
위와 같이 처리하면 전송하고자 대상의 최상위 디렉토리를 tar로 하나의 파일로 묶으면서, 동시에
원격지서버로 전송을한 후, 바로 묶인 파일을 해제하게 된다.
전송 대상 파일 수가 많으면 많을수록 기존의 ftp 나 scp에 비해 높은 성능을 나타낼것이다.
테스트 결과 좋은 결과를 얻을 수 있었습니다.
테스트는 다음과 같이 하였습니다.
i=0
while [ $i -le 100000 ]; do touch $i; i=$((i+1)); done
위와 같이 100000개 파일을 생성하여 원격지로 파일을 전송해 보았습니다.
결과는 많은 차이가 있었습니다.
일반적으로 ssh로 전송 결과 4분정도의 시간이 소요 되었지만
tar cz – /ttttt | ssh root@192.168.123.245 tar xz -C /root
위와 같이 실행결과 4초정도의 시간에 모든 파일을 전송할 수 있었습니다.
좋은 정보 감사합니다.
scp 사용이 금지된 상태에서 ssh를 이용해서 파일 전송을 하는 방법을 찾다가 관련된 내용이 있어 테스트를 해보니 전송이 잘 됩니다.
속도 부분은 테스트 하지 못했지만 윗 분 결과를 보건데 성능 부분도 좋은 것 같습니다.
좋은 정보 감사합니다.
This is really interesting, You’re a very skilled blogger. I’ve joined your feed and look forward to seeking more of your magnificent post. Also, I’ve shared your site in my social networks!
You’re so awesome! I don’t believe I have read a single thing like that before. So great to find someone with some original thoughts on this topic. Really.. thank you for starting this up. This website is something that is needed on the internet, someone with a little originality!
I am truly thankful to the owner of this web site who has shared this fantastic piece of writing at at this place.
I like the efforts you have put in this, regards for all the great content.
After reading your article, I have some doubts about gate.io. I don’t know if you’re free? I would like to consult with you. thank you.
Reading your article helped me a lot and I agree with you. But I still have some doubts, can you clarify for me? I’ll keep an eye out for your answers.
Your article helped me a lot, is there any more related content? Thanks!