2011-03-28 5 views
9

원격 서버의 파일을 로컬 컴퓨터로 복사하는 bash 스크립트를 작성하고 있습니다. 파일을 사용할 수 있는지 확인해야하므로 없으면 대체 조치를 취할 수 있습니다.bash : scp를 사용하여 원격 파일이 있는지 확인하십시오.

로컬 파일이 있는지 테스트하는 방법을 알고 있지만 scp를 사용하면 약간 복잡합니다. 상식적으로는 파일을 scp하려고 시도하는 것과 scp 명령에서 리턴 코드를 확인하는 것이 한 가지 방법이라고합니다. 이것이 올바른 방법일까요?

예인 경우, scp 호출에서 리턴 코드를 테스트하려면 어떻게합니까?

답변

9

ssh + cmd 행에 포함 된 일부 쉘 코드 사용. 파일 전송이 실패하기 전에 결정을 내릴 필요가있을 때이 방법을 사용하십시오.

ssh remote-host 'sh -c "if [ -f ~/myfile ] ; then gzip -c ~/myfile ; fi" ' | gzip -dc > /tmp/pkparse.py 

당신이 디렉토리를 전송하려는 경우, 당신은 할 수 있습니다에 "타르"- 그것은 첫째

당신이이 같은 반환 코드를 검사 할 수 scp를 사용하려면

:

if scp remote-host:~/myfile ./ >&/dev/null ; then echo "transfer OK" ; else echo "transfer failed" ; fi 

을 파일이 있는지 여부를 아는 것이 중요한지 여부에 달려 있습니다. 전송이 시작되기 전에 (ssh + sh 사용) 또는 완료된 후에.

0

글쎄, scp을 사용할 수 있으므로 ssh을 사용하여 진행하기 전에 파일의 목록을 표시하고 볼 수 있습니다.

관련 문제