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

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

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

답변1

tarssh 명령을 사용하여 이 작업을 수행할 수 있으며 표준 출력에 아카이브를 생성하도록 지시하면 됩니다 .

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

또 다른 방법은 원격 시스템의 파일 시스템을 마운트하는 것입니다. 이는 다른 시스템에서 많은 파일 작업을 수행하려는 경우 더 편리하지만 일회성 아카이브 생성에는 과도한 작업입니다.SSHFS(ㅏ퓨즈파일 시스템). 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

답변2

원격 대상에 복사하려면 이 명령을 사용하십시오.

tar -c --zstd <src files> | ssh user@target_host "cd target_dir && tar -x --zstd"

타르 마크:

-c: 새 tar 출력 생성(기본값은 stdout)

--zstd: zstd 압축 사용(tar의 알고리즘 gzip보다 빠릅니다.)

-x: 출력 추출(기본값은 표준 입력)

벤치마킹을 위한 회선 속도 측정:

tar -c --zstd <src files> | pv --timer --rate | ssh user@target_host "cd target_dir && tar -x --zstd"

압축 벤치마크

환경: 노트북과 데스크톱 간 로컬 Wi-Fi(~40MiB/s로 제한)

압축: 0:04:59

시간: 0:03:04

답변3

전송을 위해 디렉토리나 파일을 압축하여 복사하는 간단한 방법:

$ ssh domain.net 'ls foo'
file1   file2

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

$ ls foo
file1   file2

관련 정보