압축된 tar.gz 파일을 다운로드할 수 있나요?

압축된 tar.gz 파일을 다운로드할 수 있나요?

10GB가 넘는 거대한 디렉터리를 압축하고 있는데, 압축하는 데 시간이 걸립니다. 하지만 그동안 다른 새 서버에 다운로드해야 합니다.

그러면 압축이 진행되는 동안 다른 서버에서 파일을 다운로드할 수 있나요? 다운로드 후 정상적으로 사용이 가능한가요?

답변1

tar, gzip, tee, nc를 사용하여 서버에 하나, 클라이언트에 하나라는 두 가지 명령으로 이 모든 작업을 수행할 수 있습니다.

서버에서: tar cf - dirname/ | gzip -c - |tee dirname.tar.gz | nc -l 3333

클라이언트에서 nc serveraddress 3333 > dirname.tar.gz

nc는 네트워크에서 사용되는 cat처럼 동작하는 유용한 도구인 netcat을 나타냅니다. nc -l 3333로컬 포트 ​​3333에 청취 소켓이 생성되고 stdin의 내용이 여기에 연결하는 사용자에게 스트리밍됩니다.

nc serveraddress 3333서버에 대한 TCP 연결은 포트 3333에서 설정되고 소켓 연결에서 수신된 모든 내용은 stdout으로 스트리밍됩니다.

이는 다양한 명령 체인(예: tar/gzip/tee...)을 실행하는 동안 다른 컴퓨터에서 파일을 전송하는 매우 간단한 방법입니다.

답변2

rsync기존 압축 프로세스를 다운로드할 수 있는지 확실하지 않지만 이 --inplace지시문 과 함께 사용할 수 있습니다 . 호스트가 압축 프로세스를 완료할 때까지 이 작업을 반복해야 합니다. 압축이 완료된 후 변경 사항의 최종 델타를 얻으려면 압축을 다시 수행해야 합니다.

또 다른 방법은 아카이브를 생성할 때 파일 다운로드를 직접 시작하는 것입니다.

ssh user@host "tar cf - /path/to/files|gzip -c -| \
tee /path/to/compressed_file" > /path/to/local_compressed_file

위의 명령은 tar에 아카이브를 생성하고 stdout, 스트림을 압축하고, 파일을 호스트에 쓰는 데 stdout사용하고 , 다시 로컬 복사본에 저장할 수 있습니다.teestdout

관련 정보