syrep [options...] --list SNAPSHOT ... syrep [options...] --info SNAPSHOT ... syrep [options...] --history SNAPSHOT ... syrep [options...] --dump SNAPSHOT ... syrep [options...] --update DIRECTORY ... syrep [options...] --diff SNAPSHOT SNAPSHOT syrep [options...] --merge SNAPSHOT DIRECTORY syrep [options...] --merge PATCH DIRECTORY syrep [options...] --merge DIRECTORY DIRECTORY syrep [options...] --makepatch DIRECTORY SNAPSHOT syrep [options...] --extract SNAPSHOT ... syrep [options...] --cleanup DIRECTORY ... syrep [options...] --forget SNAPSHOT ...

Syrep is a generic file repository synchronization tool. It may be used to synchronize large file hierarchies bidirectionally by exchanging patch files. Syrep is truely peer-to-peer, no central servers are involved. Synchronizations between more than two repositories are supported. The patch files may be transferred via offline media, e.g. removable hard disks or compact discs.

Files are tracked by their message digests, currently MD5.

Syrep was written to facilitate the synchronization of two large digital music repositories without direct network connection. Patch files of several gigabytes are common in this situation.

Syrep is able to cope with 64 bit file sizes. (LFS)

Syrep is optimized for speed. It may make use of a message digest cache to accelerate the calculation of digests of a whole directory hierarchy.

A syrep repository is a normal UNIX directory tree containing a special directory .syrep with a file current.syrep (called snapshot) which holds file system history data. A directory is turned into a syrep repository by running --update on it. Snapshots are used to perform basic tasks like comparing repositories (command --diff) or creating patches between them (command --make-patch).

Syrep will ignore all files and directories that have the extended attribute user.syrep set to omit. Currently, this works on Linux only. Keep in mind, that only newer kernel versions and some file system support extended attributes. See for more information.

Exactly one command has to be specified on the command line. On the other hand multiple options are allowed.

A syrep file repository is a POSIX file hierarchy with some additional log data, which is used to track changes. Normally this log data is saved as "snapshot" in the file $(REPOSITORY)/.syrep/current.syrep. You may create and update it by running --update. The more often this log is updated the better modifications may be tracked. Therefore this operation should be called at least once a day via

Two snapshots of two distinct repositories (possibly from different hosts) may be compared with ---diff. This will show you which files should be copied or deleted from or to the other repository. --makepatch will attach the data of the local missing in the remote repository to a snapshot and write it to a patch file. This file should be transferred to the other repository and applied there with --merge.

Keep in mind that patches contain the snapshot data of the originating host. Because of that you may use it as a snapshot, e.g. by running --diff on it. On the other hand you are also able to merge snapshots without attached patch data to a repository. This will do all required deletions and renames, but naturally won't add any new data to the file tree.

To extract the contents of a patch you may use --extract. This will write all files contained in the patch or snapshot to the local directory, including snapshot log data. Files are named by their message digests.

$(REPOSITORY)/.syrep/current.syrep is the current snapshot of the repository. It is created and updated by running --update on the directory. Use this file to create patches on other repositories against this one. This file may be compressed by specifiying --compress when running --update.

$(REPOSITORY)/.syrep/md-cache is the message digest cache which may be used to accelerate the repeated operation of ---update. It associates device numbers, inode numbers, file sizes and modification times with the message digest calculated for that file. The file is only valid on the host it was created on since it contains device numbers.

$(REPOSITORY)/.syrep/trash/ is the trash directory used by --merge. Files are moved in here on deletion. After successful completion it is emptied unless --keep-trash is specified.

$(REPOSITORY)/.syrep/tmp/ is used as temporary file space for extracting snaphots when option --local-temp is used.

0 Success

Nonzero Failure

Syrep was written by Lennart Poettering <@PACKAGE_BUGREPORT@>.

Syrep is available at

You are encouraged to improve this documentation, feel free to send me patches. This is free software, after all.

, ,

This man page was written using by Oliver Kurth.