Não estou oferecendo uma solução completa aqui, mas espero poder direcioná-lo ao longo do caminho para criar sua própria solução. Pessoalmente, acho que existem ferramentas melhores, como rsync
, mas isso não parece se encaixar nos critérios da sua pergunta.
Eu realmente não usaria split
porque isso exige que você armazene os dados divididos e o original. Em vez disso, eu iria extrair blocos com dd
. Algo como essa abordagem pode ser útil para você.
file=/path/to/file
blocksize=1024 # Bytes per block
numbytes=$(stat -c '%s' "$file")
numblocks=$((numbytes / blocksize))
[[ $((numblocks * blocksize)) -lt $numbytes ]] && : $((numblocks++))
blockno=0
while [[ $blockno -lt $numblocks ]]
do
md5sum=$(dd bs=$blocksize count=1 skip=$blockno if="$file" 2>/dev/null | md5sum)
# Do something with the $md5sum for block $blockno
# Here we write to stdout
echo "$blockno $md5sum"
: $((blockno++))
done