Skip to content

georgyangelov/pyrsync

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

=============================== #pyrsync2

This is a fork of the pyrsync package with some changes such as:

- The functions `blockchecksums` and `rsyncdelta` are now generators
  which make it easier to send through the network
- Some unittests are added
- Implementation changes (uses bytearray instead of a deque, faster hash lookup etc.)
- The block size is no longer in the delta itself, it needs to be passed
  to the patchstream function
- Does not use try/except for programming logic

It's a Python 3 only package!

pyrsync2 is a Python module which implements the [rsync algorithm] 1, written in pure Python. It is not a wrapper for rsync, but a set of functions which apply full rsync functionality through Python.

The majority of the code for this module is taken from [Eric Pruitt's post at ActiveState] 2. It was orginally licensed under an [MIT license] 3, and this license has been kept wthout modifications.

Installation


You need to have PIP:

$ sudo pip install pyrsync2

Use


An example use case for this module:

# On the system containing the file that needs to be patched
>>> import pyrsync2
>>> unpatched = open("unpatched.file", "rb")
>>> hashes = pyrsync2.blockchecksums(unpatched)

# On the remote system after having received hashes
>>> import pyrsync2
>>> patchedfile = open("patched.file", "rb")
>>> delta = pyrsync2.rsyncdelta(patchedfile, hashes)

# System with the unpatched file after receiving delta
>>> unpatched.seek(0)
>>> save_to = open("locally-patched.file", "wb")
>>> pyrsync2.patchstream(unpatched, save_to, delta)

About

A pure Python module which implements the rsync algorithm.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 100.0%