
파일을 gzip으로 압축한 다음 즉시 다른 서버로 rsync하여 생성된 gzip 파일이 로컬 서버에 기록되지 않도록 하고 싶습니다. 이런 걸 하려고 했는데... 분명히 실패했습니다.
gzip 파일 | rsync -auv another_server
누구든지 이것에 대해 어떤 생각을 가지고 있습니까? 아니면 이것이 가능합니까?
답변1
이에 대한 나의 일반적인 접근 방식은 다음과 같이 gzip과 ssh를 사용하는 것입니다.
gzip -c 파일 | SSH[이메일 보호됨]"고양이 > 목적지.gz"
그러면 ssh를 통해 zip 출력이 원격 호스트의 "destination.gz" 파일로 바로 전송됩니다. 이 작업을 수동으로 수행하는 경우 SSH 비밀번호를 입력하세요. 자동으로 수행하려면 다음과 같이 SSH 키를 설정해야 합니다.
답변2
이것을 개인적으로 받아들이지 마십시오. 그러나 귀하의 질문과 의견을 보면 rsync가 실제로 무엇인지 이해하지 못하는 것 같습니다.~을 위한. 한 곳에서 다른 곳으로 파일을 이동하기 위한 것이 아닙니다.동기화 중두 장소 사이의 파일. 로컬 컴퓨터에 복사본을 보관하고 싶지 않다면 동기화하지 않은 것이며 rsync는 원하는 도구가 아닙니다.
파일을 전송하려고 합니다. 이를 위해 디스크에 넣고 ssh, ftp, sftp, ftps 등을 사용하거나 Glenn이 제안한 대로 ssh를 통해 파이프할 수 있습니다. 이것이 정답이자 원하는 작업을 수행하는 유일한 올바른 방법입니다. 리소스 활용도가 걱정된다면(고대역폭 연결의 경우 차이가 발생할 수 있음) 암호를 변경하세요.
gzip -c somefile | ssh -c blowfish user@host 'cat > someotherfile'
어떤 작업(예: 파이프에서 rsync로)을 시도했는데 작동하지 않는다면, 잘못하고 있거나 잘못된 작업을 시도하고 있을 가능성이 있습니다. 이는 작업을 위한 도구의 문제이며, 무엇을 하려고 하든 그에 맞는 적절한 도구가 있다는 점을 배제하지 않는 것이 중요합니다.
UNIX 환경에서 사용할 수 있는 다양한 도구의 목적을 이해하고 염두에 두면 해당 환경을 보다 효과적으로 사용하고 조작할 수 있습니다. 많은 도구에는 미묘한 차이가 있거나 기능이 중복되지만, 모두 주의를 기울이지 않으면 작업을 수행하는 가장 좋은 방법을 많이 놓치게 됩니다.
답변3
Rsync는 보내는 콘텐츠가 고유하므로 이 경우 아무런 이점을 제공하지 못할 가능성이 높습니다.
파일을 압축하고 출력을 STDOUT으로 보내는 것은 매우 간단합니다.
gzip -c file > another-file
속도를 찾고 양쪽 끝을 제어할 수 있다면 netcat에는 오버헤드가 거의 없습니다.
포트 1234에서 수신할 대상 시스템을 설정합니다.
user@bar$ nc -l -p 1234 > file.gz
'file.gz'를 머신 bar:1234로 보냅니다.
user@foo$ gzip -c file | nc bar 1234
답변4
gzip과 rsync를 결합하면 작동하지 않습니다.
압축되지 않은 파일을 보내면 rsync는 변경된 비트만 보내는 방식으로 작동합니다. 그러나 파일을 gzip으로 압축하면 결과 파일이 매번 크게 달라집니다. rsync로 파이프하면 기껏해야 ssh와 비슷한 결과를 얻을 수 있으며 더 나쁠 수도 있습니다.
압축된 파일이 매번 다른 이유는 압축하기 전에 데이터를 프로파일링하기 때문입니다. 즉, 파일이 조금만 변경되어도 프로필이 변경되어 압축된 모든 바이트에 영향을 미칠 수 있습니다.