나는 엄청난 양의 데이터(일종의 백업)를 구축하고 이를 네트워크(ssh 또는 rsync)를 통해 다른 호스트로 보내고 싶습니다. 원격 호스트에는 데이터를 저장할 공간이 충분하지만 로컬 호스트에는 공간이 부족하여 로컬 파일로 저장할 수 없습니다. 데이터가 파이프라인에 들어갈 때 데이터의 체크섬을 계산하고 생성된 원격 파일의 체크섬과 비교하고 싶습니다. 그래서 저는 파이프라인 중간에 배치하여 통과하는 모든 항목의 체크섬을 계산하도록 할 수 있는 프로그램을 찾고 있습니다.
두 개의 "MITM" 프로그램이 내 머릿속에 떠올랐지 pv
만 mbuffer
어느 쪽도 이 기능을 갖고 있지 않은 것 같았습니다. 그리고 cat
그것은 또한 dd
목표에 미치지 못합니다 :-) 체크섬을 계산하는 다양한 프로그램(예: md5sum
, sha1sum
등)은 입력을 소비하고 전달하지 않습니다. 돕다? 감사해요!
답변1
다음과 같은 대체 항목을 사용 tee
하고 처리 할 수 있습니다.>(…)
cat blob | tee >(md5sum >&2) | ssh user@remote 'tee >(md5sum >&2) >/tmp/blob'
이 파이프는 stdout을 방해하지 않도록 체크섬을 stderr에 기록합니다. 해시를 유지하려면 해시를 파일로 리디렉션할 수 있습니다.
cat blob | tee >(md5sum >blob.md5) | <your pipe>