$treeview $search $mathjax $extrastylesheet
librsync
2.3.1
$projectbrief
|
$projectbrief
|
$searchbox |
00001 # librsync 00002 00003 http://librsync.sourcefrog.net/ 00004 00005 \copyright 00006 00007 Copyright 1999-2016 Martin Pool and other contributors. 00008 00009 librsync is distributed under the [GNU LGPL v2.1][LGPL] 00010 (see COPYING), which basically 00011 means that you can dynamically link librsync into non-GPL programs, but you 00012 must redistribute the librsync source, with any modifications you have made. 00013 00014 [LGPL]: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html 00015 00016 librsync contains the BLAKE2 hash algorithm, written by Samuel Neves and 00017 released under the [CC0 public domain dedication][CC0]. 00018 00019 [CC0]: http://creativecommons.org/publicdomain/zero/1.0/ 00020 00021 00022 ## Introduction 00023 00024 librsync is a library for calculating and applying network deltas, 00025 with an interface designed to ease integration into diverse 00026 network applications. 00027 00028 librsync encapsulates the core algorithms of the rsync protocol, which 00029 help with efficient calculation of the differences between two files. 00030 The rsync algorithm is different from most differencing algorithms 00031 because it does not require the presence of the two files to calculate 00032 the delta. Instead, it requires a set of checksums of each block of 00033 one file, which together form a signature for that file. Blocks at 00034 any in the other file which have the same checksum are likely to be 00035 identical, and whatever remains is the difference. 00036 00037 This algorithm transfers the differences between two files without 00038 needing both files on the same system. 00039 00040 librsync is for building other programs that transfer files as efficiently 00041 as rsync. You can use librsync in a program you write to do backups, 00042 distribute binary patches to programs, or sync directories to a server 00043 or between peers. 00044 00045 This tree also produces the \ref page_rdiff that exposes the key operations of 00046 librsync: generating file signatures, generating the delta from a signature to 00047 a new file, and applying the delta to regenerate the new file given the old 00048 file. 00049 00050 librsync was originally written for the rproxy experiment in 00051 delta-compression for HTTP. 00052 librsync is used by: [Dropbox](https://dropbox.com/), 00053 [rdiff-backup](http://www.nongnu.org/rdiff-backup/), 00054 [Duplicity](http://www.nongnu.org/duplicity/), and others. 00055 (If you would like to be listed here, let me know.) 00056 00057 ### What librsync is not 00058 00059 1. librsync does not implement the rsync wire protocol. If you want to talk to 00060 an rsync server to transfer files you'll need to shell out to `rsync`. 00061 You cannot make use of librsync to talk to an rsync server. 00062 00063 2. librsync does not deal with file metadata or structure, such as filenames, 00064 permissions, or directories. To this library, a file is just a stream of bytes. 00065 Higher-level tools can deal with such issues in a way appropriate to their 00066 users. 00067 00068 3. librsync also does not include any network functions for talking to SSH 00069 or any other server. To access a remote filesystem, you need to provide 00070 your own code or make use of some other virtual filesystem layer. 00071 00072 00073 ## More information 00074 00075 * \ref page_downloads 00076 * \ref versioning 00077 * \ref page_install 00078 * \ref page_rdiff 00079 * \ref page_api 00080 * \ref page_formats 00081 * \ref page_support 00082 * \ref page_contributing 00083 * \ref NEWS.md