원격호스트에 할당된 용량이 거의 다 된 상태일때 원격호스트의 일부 데이터를 다른 제2원격컴퓨터에 옮기려고 하고 있습니다.
이 경우 퍼미션이라던가 기타의 이유때문에 tar 를 쓰고 싶은데요.
문제는 용량이 얼마 남지 않아서 tar 를 쓰게 되면 용량 초과가 됩니다.


이런경우 tar 로 묶으면서 곧바로(즉, 원격호스트의 하드용량은 그다지 잡아먹지 않고) 제2원격컴퓨터로 옮길 수 있을까요?

답)


tar cvzf - /home | ssh remote-host "cd /test ; cat > home.tar.gz


tar czv - /home 을 하면 우선 /home을 tar로 묶은 후 gzip으로 압축해서 표준출력(-)으로 보냅니다.
그 출력을 파이프로 받아서 ssh에 넘기게되는데, ssh로 원격호스트에 접속이 된 후에 " " 안에있는 명령이 차례대로 실행이 됩니다. 따라서 cd /test 를 한 후에 cat이 앞의 파이프에서 받은 내용을 표준입력으로 받아서.. home.tar.gz로 저장을 합니다.
"cat > home.tar.gz" 대신에 "tar zxf -"를 하시면 복사하듯이 바로 저장이 되고요..


관례적으로 리눅스에서 - 는 표준 입력/출력 을 나타냅니다.
많은 프로그램이 - 를 인식합니다. 예를 들어
ls -a | vim -
하면 vim 으로 ls -a 내용을 편집할 수 있습니다.
wget 'http://어쩌구/저쩌구' -O - | md5sum -
하면 원격 파일의 md5sum 을 구할 수 있습니다.

tar 로 묶으면서 곧바로 리모트서버로 데이터 옮기기

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다