Eu precisava exatamente da mesma coisa. Eu criei este código Python surpreendentemente rápido (ele juntou dois arquivos de 2GB com uma sobreposição de 800MB em 30 segundos). Ajuste overlap_size conforme necessário para seus pedaços. Deve ser o maior tempo possível, mas menos do que o tamanho real de sobreposição.
#!/usr/bin/env python
import sys
overlap_size = 100000000 # 100MB
a = file(sys.argv[1]).read()
b = file(sys.argv[2]).read()
end = a[-overlap_size:]
offset = b.find(end)
c = file(sys.argv[3], 'wb')
c.write(a[:-overlap_size])
c.write(b[offset:])
c.close()
Uso:
./join.py chunkA chunkB outputAB
./join.py outputAB chunkC outputABC
./join.py outputABC chunkD outputABCD
...etc