scp를 사용하여 원격 호스트에 파일 복사 및 복사

scp를 사용하여 원격 호스트에 파일 복사 및 복사

다음 명령을 사용하여 파일을 원격 호스트에 복사 scp한 다음 원격 호스트에 파일을 복사하여 추가된 날짜 스탬프 버전을 생성합니다.

scp myfile.tar.gz [email protected]:/root/myfolder
ssh [email protected] "cd /root/myfolder && cp myfile.tar.gz myfile_2020-06-23.tar.gz"

그런데 추가 원격 복사(대용량 파일의 경우 시간이 다소 소요됨) 없이 한 단계로 이를 달성할 수 있는 방법이 있습니까? 나는 다음과 같은 것을 파이핑 하고 사용할 ssh때 무엇을 할 수 있을지 생각하고 있습니다.cat - | tee

... | ssh [email protected] "cat - | tee myfile.tar.gz > myfile_2020-06-23.tar.gz"

이 질문을 표현하고 싶은 또 다른 방법은... .tar.gz파일을 원격 호스트로 어떻게 파이프합니까 ssh? 입니다. 이렇게 하면 and then 을 사용하는 대신 위의 트릭을 사용하여 두 파일에 동시에 파이프 myfile.tar.gz하고 쓸 수 있습니다 .sshscpcp

답변1

원격 서버가 일반적인 Unix 명령을 수락한다고 가정하면 다음을 수행할 수 있습니다.

cat myfile.tar.gz | ssh [email protected] \
        "cd /root/myfolder && tee myfile.tar.gz > myfile_2020-06-23.tar.gz"

cat원격 서버에서 실행할 필요가 없습니다. cat로컬 서버에서 실행하는 것도 꼭 필요한 것은 아닙니다. 다음과 같이 할 수 있습니다.

ssh [email protected] \
        "cd /root/myfolder && tee myfile.tar.gz > myfile_2020-06-23.tar.gz" \
        < myfile.tar.gz
        ^^^^^^^^^^^^^^^-- Redirect from the file

필요한 경우 tar파이프로 연결할 수도 있습니다.ssh

tar czf - myfiles | ssh [email protected] \
        "cd /root/myfolder && tee myfile.tar.gz > myfile_2020-06-23.tar.gz"

관련 정보