a modular python-based file synchronization tool
current release: 3.2.2512
state: production-stable


Parsley keeps a configured set of places in file systems in sync.


  • Keeps configured file system places in sync (local and ssh)
  • Robust infrastructure with working retry and error handling
  • Customizable behavior with the availability to add additional program logic for various situations
  • Optional 'move to sink mode': always moves all files from the source to a sink and so keep the source empty
  • Has a mechanism for metadata synchronization (tags, rating, ...)
  • Can be used stand-alone or embedded in other tools with a flexible and extensible api
  • Rich graphical interface for configuration and for executing synchronization
  • Graphical interface for manually resolving conflicts which occurred in a synchronization run
  • Designed for being driven by a scheduled task (a.k.a. cronjob), which executes a background command (e.g. each minute)
  • In background mode: Own handling of synchronization intervals (independent of the interval for the scheduled task)


parsley is distributed under the terms of the GPLv3 or higher license. This also affects all included files without a license header (non-source files like images), unless they are explicitly mentioned as third-party content. Read the Dependencies section for included third-party stuff.


The following documentation is available:


Developer Documentation


The following packages are available. Choose the one which matches your operating system or environment. Please also check for requirements.

Debian/Ubuntu package

sha256sum: 8cc0e5ca52ccf495871a7ad67223e1a255aee578c09f94bdabba607889d2e633
created: 2019-08-17 12:43        size: 1.1 MB
sha256sum: b669d69679859a48a2b50e01bbaaa786f33463400d9a385d87fac235f5648a4b
created: 2016-09-29 21:36        size: 2.1 MB
sha256sum: fc1d7755e17c7b70796b0bacc80ccd3c7867913759c65d16fe94d2f3076a1e94
created: 2015-10-03 19:43        size: 1.2 MB

Python wheel package

sha256sum: bfb219e54956e06258e565d7f47f676fd54b15f62149111ea1a741eb2e47c579
created: 2019-08-17 12:43        size: 291.5 KB
sha256sum: 5005dd6b66c373dbb2b42f506fd97e37b3d49c2fc29775778c053654bdd215e8
created: 2016-09-29 21:36        size: 163.2 KB
sha256sum: a133104229df5555ec48ed5cf47772493f88c06e3938371af2f99ba874f74648
created: 2015-10-03 19:43        size: 141.0 KB

Windows package

sha256sum: 20dfb9ac4407d94ba16dd3736d423ba5377a7fe76bc32110f91414c8e39de38a
created: 2019-08-17 12:43        size: 5.3 MB
sha256sum: 3de589215eefdde4107114ba8879623cc61471419efeaacf1d41ffdf21765ebb
created: 2016-09-29 21:36        size: 5.7 MB
sha256sum: 5d871b271f088436ecf5e6cc1fe39650ef13ca0750768e68ed48b5f0251baeb2
created: 2015-10-03 19:43        size: 2.3 MB


Install parsley as Flatpak on most modern Linux systems by installing application '' from repository ''.
Install $ sudo pacman -S flatpak before you can use Flatpak in Arch Linux.
Install $ yum install flatpak as root before you can use Flatpak in CentOS.
Install $ apt install flatpak as root before you can use Flatpak in Debian.
Flatpak is directly usable in Fedora without further work.
Install before you can use Flatpak in Gentoo.
Install $ sudo zypper install flatpak before you can use Flatpak in openSUSE.
Install $ yum install flatpak as root before you can use Flatpak in Red Hat.
Install $ sudo apt install flatpak before you can use Flatpak in Ubuntu.

See above how to prepare Flatpak and then run:

$ flatpak remote-add --user --no-gpg-verify parsley
$ flatpak install --user parsley
$ flatpak run
or install it with just:
$ flatpak install --user --from


sha256sum: 6a423215763d438958b66325eda6532238e1fe2ae62eb0e032532ae6308e1c7e
created: 2019-01-24 21:46        size: 2.4 KB
Use the .gpg for optional repository signature verification.


sha256sum: 0a40600de0f79c9cc2f528d7a77bf9b9eb15723efaf1c3740ec81d8dccd2671f
created: 2019-01-24 21:46        size: 1.6 KB

source tarball

sha256sum: 1d22bd2aa9a81d6290ee2c9725e34c20bdc9df6b81fa2a1eb50e1283c7e6e4e9
created: 2019-01-24 21:46        size: 5.1 MB
sha256sum: b55413b9ea78601a657f2d5e47dd6a86706e15895848134affe6ff5af2c84ae8
created: 2016-09-29 21:36        size: 5.5 MB
sha256sum: 9e36c1dc591b3c26886aa058e26cfed76a8ae705adddf6971a048dc19fd57c36
created: 2015-10-03 19:43        size: 2.1 MB

There are external parts which are used by parsley. Many thanks to the projects and all participants.
Python 3.4 required
Typical GNU/Linux Desktop recommended
PyQt5 incl. WebEngine required (has alternatives) : for some user interface enhancements; you can comfortably work without it (inside the browser then)
sshfs optional
python3-pyxattr optional
font 'Symbola' included : for logo symbol; free for use; copied from here.
banner image included : _meta/homepage_bannerimage.png; license CC BY-SA 3.0; copied from here.
all files in /_meta included : if not mentioned otherwise, Copyright 2015 Josef Hahn under license CC BY-SA 3.0 license.


The Parsley overview window with a synchronization task added
Executing a synchronization task in foreground
Detail configuration for a synchronization task
The synchronization history log
Manually solving file conflicts
gallery0/v_parsley001.mp4|||Screencast: First steps
gallery0/v_parsley002.mp4|||Screencast: Custom aspects
gallery0/v_parsley003.mp4|||Screencast: High level customization
gallery0/v_parsley004.mp4|||Screencast: Windows

Change Log

The last changes brought the following improvements.

2017-03-14 (3.2.1729)
  • The new report feature shows performance data and logging information for sync tasks.
  • A new, web-based user interface replaces the old, Tk-based one.
  • New feature for fine-grained time measurement of sync runs.
  • Dropped some exotic functionality (like repeated task execution).
  • Refactored many internal structures and clarified large parts of the programming interfaces.


Publisher: Josef Hahn, Boxgraben 112-114, 52064 Aachen, Germany | website: | mail:


If you have funny rants about parsley itself or about some techniques it uses, some constructive feedback, a cool patch or a mysterious problem, feel free to mail it to

Please use the bugtracker if you have found an error in the software.