tgz 폴더를 압축하고 base64로 인코딩하여 즉시 전송합니다.

tgz 폴더를 압축하고 base64로 인코딩하여 즉시 전송합니다.

폴더를 압축하고 base64로 인코딩하여 항공편으로 보내려고 하는데 오류가 발생합니다.

tar: 빈 아카이브 생성을 비겁하게 거부합니다.

tar -czf Pictures | base64 | nc remote_host 443  

nc -lvp 443 | base64 -d > secret.tgz # remote host

폴더를 압축하여 비행기로 올바르게 보내려면 어떻게 해야 합니까?

답변1

이 명령은 압축을 위해 tar에 아무것도 전달하지 않기 때문에 "빈" 아카이브 오류를 발생시킵니다.

사용하는 경우 -f생성할 아카이브의 이름과 압축할 아카이브(귀하의 경우 디렉터리)가 뒤에 와야 합니다.

stdout으로 전송하여 파이프하려면 가상 옵션/단축키 "-"를 사용해야 합니다.

좋다:

tar -czf - Pictures | base64 | nc remote_host 443 

@muru가 올바르게 지적했듯이 tar는 기본적으로 stdout으로 출력되므로 "-f"를 제거하면 다른 옵션이 있습니다.

tar -cz Pictures | base64 | nc remote_host 443

nc이론적으로는 바이너리 파일을 콘솔로 보내지 않고도 문제 없이 처리할 수 있어야 하며 추가 Base64 인코딩 및 디코딩 단계를 수행할 필요가 없습니다. 저는 Base64를 사용하지 않고 문자 그대로 이 작업을 수천 번 수행했습니다.

나는 또한 nc다음과 같이 -v 없이 원격 측에서 스크립트를 작성하는 것을 선호합니다.

tar -czf - Pictures | nc remote_host 443  
nc -lp 443 > secret.tgz # remote host

관련 정보