네트워크를 통해 ZFS 스냅샷을 보내고 있습니다. 그러나 다른 쪽 끝에 zfs recv가 있는 대부분의 예와는 달리 내 서버에는 zfs 지원이 없으므로 그냥 대용량 파일로 저장합니다.
문제는 zfs 전송을 위해 cron 작업을 사용하고 싶지만 주기적으로 컴퓨터를 최대 절전 모드로 전환한다는 것입니다. 내 두려움은 백업, 최대 절전 모드, ssh 연결 시간 초과를 시작하고 불행히도 zfs send POOL/vol@snap | ssh user@server "cat > /backup.zfs"
ssh (-보기 흉하고 개선 될 수 있음) 시간 초과시 zfs가 여전히 0을 반환한다는 것입니다.
전송되는 내용(md5, sha, crc는 중요하지 않음)의 해시를 가져와 결과 파일과 비교할 수 있는 방법이 있습니까? 아니면 md5에 한 번, md5에 한 번 전송해야 합니까? 다시 서버로?
답변1
고쳐 쓰다:
Bash 셸을 사용하면 비슷한 작업을 수행할 수 있습니다.
zfs send [snip] | tee >(md5sum > checksum.log) | ssh [snip]
Process Substitution
섹션을 참조하세요 man bash
. (이러한 단순화를 지적한 Ole Tange에게 감사드립니다.)
원래 답변:
원하는 것을 수행하는 방법에는 여러 가지가 있습니다.
stdin
(a) 체크섬을 계산하고 (b) 데이터를 하위 프로세스(예: )로 전송하는 동안 데이터를 읽는 스크립트(또는 Python 또는 선택한 언어로 프로그램)를 작성할 수 있습니다 ssh
.
또는 Bash에서 다음을 수행할 수 있습니다.
zfs send [snip] | tee /proc/self/fd/4 4>(md5sum > checksum.log) | ssh [snip]
위의 사항을 테스트하지 않았으므로 작동한다고 보장할 수 없습니다. 시스템에 존재하지 않는 경우에는 과 의 섹션 , 특히 해당 하위 섹션을 참조 /proc/self/fd/N
하십시오 .tee
man tee
REDIRECTION
man bash
Redirecting Output