![scp/sftp 명령의 출력은 Linux 서버의 표준 출력 및 파일로 진행됩니다.](https://linux55.com/image/1824/scp%2Fsftp%20%EB%AA%85%EB%A0%B9%EC%9D%98%20%EC%B6%9C%EB%A0%A5%EC%9D%80%20Linux%20%EC%84%9C%EB%B2%84%EC%9D%98%20%ED%91%9C%EC%A4%80%20%EC%B6%9C%EB%A0%A5%20%EB%B0%8F%20%ED%8C%8C%EC%9D%BC%EB%A1%9C%20%EC%A7%84%ED%96%89%EB%90%A9%EB%8B%88%EB%8B%A4..png)
원격 서버에서 파일을 가져오기 위해 scp/sftp를 사용하는 릴리스 스크립트를 작성 중입니다. 또한 이 스크립트의 출력을 release.log 파일에 기록하려고 합니다. 나는 이것을 달성하기 위해 "tee"를 사용하고 있으며 모든 것에 대해 잘 작동합니다. stdout 및 오류를 의미하지만 파일 다운로드 진행 상황(복사하는 데 시간이 걸림)에 관해서는 콘솔이나 파일에 표시되지 않습니다. .
티 없이 scp 출력
[email protected]:/apps/flowrisk/valservice/release/London/uat2/vs-server-2.1.16-21190-linux-amd64-frod-uat2-London-dist.zip /apps/flowrisk/uatldn/valservice
vs-server-2.1.16-21190-linux-amd64-frod-uat2-London-dist.zip 100% 78MB 39.1MB/s 00:02
티가 있는 scp 출력
[email protected]:/apps/flowrisk/valservice/release/London/uat2/vs-server-2.1.16-21190-linux-amd64-frod-uat2-London-dist.zip /apps/flowrisk/uatldn/valservice
사용자가 무슨 일이 일어나고 있는지 알 수 있도록 tee를 사용하여 콘솔에서 scp/sftp 명령의 진행 상황도 출력하는 방법을 알려주실 수 있나요?
답변1
로그 파일에 진행률 표시기를 포함하는 것은 그리 유용하지 않은 것 같습니다. scp
표준 출력을 터미널에 연결하여 실행해 보는 것은 어떨까요? 이는 전송 중에 스크립트가 중단되면 로그에 진행 상황을 나타내는 내용이 없다는 단점이 있습니다(그러나 이는 부분 전송의 크기를 고려할 때 매우 사소한 단점입니다).
scp remotehost:/path/to/file /local/file >/dev/tty
진행 상황 출력을 저장하려면 scp
다음을 사용할 수 있습니다.script
.
script -q /dev/stdout -c 'scp remotehost:/path/to/file /local/file' | tee scp.log
또는 다음을 삽입할 수 있습니다.pv
파이프라인에서 진행률 표시를 가져옵니다. 총 바이트 수가 아니라 전송된 바이트 수만 알 수 있기 scp
때문에 이는 좋지 않습니다 .pv
ssh remotehost 'cat /path/to/file' | pv -bpt >/local/file
답변2
것 같다stdout이 tty가 아닌 경우 scp는 진행률 표시기를 비활성화합니다.. 제가 링크한 기사에는 귀하에게 도움이 될 수 있는 몇 가지 의사 터미널 해킹 기술이 포함되어 있습니다. 또는 scp 소스로 이동하여 isatty()
검사를 비활성화할 수도 있습니다.