Python ctypes wrapper for librsync.
A ctypes wrapper for librsync. Provides signature(), delta(), and patch() functions.
There are three steps necessary to synchronize a file. Two steps are performed on the source file and one on the destination.
- Generate a signature for the destination file.
- Generate a delta for the source file (using the signature).
- Patch the destination file using the generated delta.
Usually, these steps involve remote systems. Here is an example of synchronizing two local files.
import librsync # The destination file. dst = file('Resume-v1.0.pdf', 'rb') # The source file. src = file('Resume-v1.2.pdf', 'rb') # Where we will write the synchronized copy. synced = file('Resume-latest.pdf', 'wb') # Step 1: prepare signature of the destination file signature = librsync.signature(dst) # Step 2: prepare a delta of the source file delta = librsync.delta(src, signature) # Step 3: synchronize the files. # In many cases, you would overwrite the destination with the result of # synchronization. However, by default a new file is created. librsync.patch(dst, delta, synced)
This wrapper only exposes the most common operations that librsync provides. It is not meant to be a full wrapper, but should cover most use-cases. You can easily extend this wrapper. Information about librsync is available in it’s manual which is linked below (I wish I had found this BEFORE writing this wrapper!)