로그인한 셸에서 tar를 가져와 해당 tar 파일을 원격 호스트로 전송한 다음 그곳에서 tar 파일을 추출하고 싶습니다. 다음 명령이 있지만 tar 자체가 생성되지 않습니다.
time=`date`
timestamp=`date +%F_%H%M`
backpfilename=db${timestamp}.tar.gz
cd /home/aryan/ && tar -cvzf $backupfilename | ssh root@remoteserver 'cd /home/aryantest/ && tar -xvzf $backpfilename'
답변1
tar 파일을 디스크에 쓰지 않고 반대편에서 직접 추출할 수 있습니다.
tar czv <files>| ssh root@remoteserver 'cat | tar xz -C /remotedir'
파일을 복사 하는 데에도 사용할 수 있습니다 netcat
.
진행률 표시줄을 원하면 pv
이것을 사용할 수 있습니다. 속도를 표준 출력으로 인쇄하므로 복사 속도를 확인할 수 있습니다.
tar czv <files> | pv | ssh root@remoteserver 'cat | tar xz -C /remotedir'
tar 파일이 이미 있는 경우 pv
SSH를 통해 파이프할 수 있습니다.
pv backupfile.tgz| ssh root@remoteserver 'cat | tar xz -C /remotedir'
답변2
이 시도:
cd /home/aryan
tar cfvz /dev/stdout . |
ssh root@remoteserver 'cat > file.tar.gz && tar zxvf file.tar.gz'
조금만 익숙해지면 돼
노트
/dev/stdout
로 대체될 수 있습니다 -
.
tar를 사용하여 압축 파일을 만드는 기본 방법은 다음과 같습니다 tar opts file.ext dir/
. 여기서는 대상 파일 이름을 STDOUT
SSH를 통해 전송할 수 있는 이름으로 명시적으로 대체합니다.