SSH를 통해 tar / gz를 사용하여 디렉토리를 로컬 컴퓨터로 압축 하시겠습니까?


15

본질적으로 원격 컴퓨터의 디렉토리를 tar / gz하고 원격 컴퓨터에서 로컬 컴퓨터에 다시 연결하지 않고도 파일을 로컬 컴퓨터에 저장하고 싶습니다. SSH를 통해 이것을 수행하는 방법이 있습니까? tar 파일은 원격 시스템에 저장할 필요가 없으며 로컬 시스템에만 저장해야합니다. 이게 가능해?

답변:


26

ssh 명령 tar을 사용하여 표준 출력에 아카이브를 작성하도록 지시하십시오.

ssh remote.example.com 'cd /path/to/directory && tar -cf - foo | gzip -9' >foo.tgz

다른 머신에서 많은 파일 조작을 원하지만 원샷 아카이브 작성에는 너무 많은 다른 접근 방식은 SSHFS ( FUSE 파일 시스템)를 사용 하여 원격 머신의 파일 시스템을 마운트하는 것입니다 . SSH 수준에서 압축을 활성화해야합니다.

mkdir ~/net/remote.example.com
sshfs -C remote.example.com:/ ~/net/remote.example.com
tar -czf foo.tgz -C ~/net/remote.example.com/path/to/directory foo

3
그냥 궁금해서 왜 또는 tar -cf - foo | gzip -9대신에 추천 하시겠습니까? tar -czf - footar -cz foo
Patrick

@Patrick 약간 더 이식성이 뛰어납니다. 예를 들어 Solaris에서 작동합니다.
Gilles 'SO- 악한 중지'

모든 주장을 설명해 주시겠습니까?
Rootical V.

3
@RooticalV. 파일의 표준 출력 ( ) 에 아카이브를 tar -cf - foo작성 합니다 . 최상의 (가장 느린) 압축 방법을 사용합니다. 신경 쓰지 않으면을 사용할 수 있습니다 . -c-f -foogzip -9ssh remote.example.com tar cz /path/to/directory/foo > foo.tar.gz
arekolek

-1

전송 용으로 만 압축하여 디렉토리 또는 파일을 복사하는 간단한 방법 :

$ ssh domain.net 'ls foo'
file1   file2

$ ssh domain.net 'tar czf - foo' | tar xz

$ ls foo
file1   file2

1
이것은 tar의도 한 로컬 시스템에 아카이브를 저장하지 않습니다 .
Kusalananda

1
이것은 압축으로 SSH를 통해 무언가를 복사하는 방법을 검색 할 때이 질문에 착륙하는 사람들을위한 것입니다. tar xz더 간단하고 읽기 쉬운 예제와 함께 파이프 외부에 추가 항목이 있습니다 .
Pierre de LESPINAY
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.