freezer.engine.rsync.pyrsync module

freezer.engine.rsync.pyrsync module

This is a pure Python implementation of the [rsync algorithm] [TM96]. Updated to use SHA256 hashing (instead of the standard implementation which uses outdated MD5 hashes), and packages for disutils distribution by Isis Lovecruft, <isis@patternsinthevoid.net>. The majority of the code is blatantly stolen from Eric Pruitt’s code as posted on [ActiveState] [1]. [1]: https://code.activestate.com/recipes/577518-rsync-algorithm/ [TM96]: Andrew Tridgell and Paul Mackerras. The rsync algorithm. Technical Report TR-CS-96-05, Canberra 0200 ACT, Australia, 1996. https://samba.anu.edu.au/rsync/.

freezer.engine.rsync.pyrsync.rollingchecksum(removed, new, a, b, blocksize=4096)

Generates a new weak checksum when supplied with the internal state of the checksum calculation for the previous window, the removed byte, and the added byte.

freezer.engine.rsync.pyrsync.weakchecksum(data)

Generates a weak checksum from an iterable set of bytes.

freezer.engine.rsync.pyrsync.rsyncdelta(datastream, remotesignatures, blocksize=4096)

Generates a binary patch when supplied with the weak and strong hashes from an unpatched target and a readable stream for the up-to-date data. The blocksize must be the same as the value used to generate remotesignatures.

freezer.engine.rsync.pyrsync.blockchecksums(instream, blocksize=4096)

Returns a list of weak and strong hashes for each block of the defined size for the given data stream.

Creative Commons Attribution 3.0 License

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.