반응형

OS: Ubuntu 14.04 Desktop



scp 명령으로 IP주소를 알고 있는 원격 리눅스 머신에 파일을 전송할 수 있는데, 이 때 콘솔 창 마지막에 실시간으로 전송 현황이 갱신되어 출력된다. 보통은 지금 전송하고 있는 파일명, 전송률(%), 전송 속도(KB/s, MB/s 등), 남은 시간 등의 정보가 출력된다.


ping의 경우에는 RTT 측정 결과가 새로운 라인으로 찍히기 때문에 콘솔 화면에 이전의 기록을 모두 볼 수 있는 반면, scp는 그런 것 없이 마지막으로 갱신된 정보가 이전 라인에 계속 덮어써지는 구조라서 이전 기록을 확인할 수 없다.


scp를 통해 전송중인 정보를 ping과 유사하게 line-by-line으로 기록으로 남기기 위해서는 다른 도구와 조합해서 써야 하는데, script가 유용하다고 한다 [1]. Script는 콘솔 창에서 변화가 생기는 것(?? 적당한 표현을 찾지 못함...)을 모두 기록하는 도구이다.


인용한 StackOverflow에 달린 두 번째 답변에 의하면, 아래와 같이 할 수 있다:


$ script -c "아웃풋을 기록하고자 하는 명령어" [아웃풋을_저장할_파일]


예를 들어,

$ script -c "scp [sending_file_location] [receiving_host_and_location]" scplog.txt


맨 끝에 아웃풋을 저장할 파일을 지정하지 않으면, 

콘솔의 현재 위치에 typescript라는 파일을 자동으로 생성해서 저장한다.



123.yuv라는 20MB짜리 파일을 Remote host에 전달했을 때, 

예제로 생성된 로그파일(scplog.txt)은 아래와 같다:


Script started on 2016년 05월 13일 (금) 오전 03시 30분 26초


123.yuv                                         0%    0     0.0KB/s   --:-- ETA

123.yuv                                        34% 7072KB   6.9MB/s   00:01 ETA

123.yuv                                        59%   12MB   6.7MB/s   00:01 ETA

123.yuv                                        84%   17MB   6.6MB/s   00:00 ETA

123.yuv                                       100%   20MB   6.7MB/s   00:03    


Script done on 2016년 05월 13일 (금) 오전 03시 30분 30초



Script로 ping 명령을 테스트해 보면 그냥 콘솔에서 보는 것과 똑같이 찍힌다. 자세한 원리는 모르겠지만 실제로 변화가 생긴 라인을 기록하는 것 같은데, 여러 라인에 변화가 생기면 여러 라인이 동시에 기록되는지는 아직 모르겠다.


어쨌든 SCP도 그때그때 눈으로 보고 속도를 메모하던 안습한 짓을 하지 않아도 돼서 다행이다. (=_=)



<참고자료>

[1] How to best capture and log scp output? http://stackoverflow.com/questions/202432/how-to-best-capture-and-log-scp-output



반응형
블로그 이미지

Bryan_

,