Welcome to the DirsSync homepage

I'm redisigning the GUI interface of DirsSync2.
Current work can been seen here
Feel free to send your comments, remarks, whishes, ... and why not propositions for help/contribution.


This application has been written in Python using the wonderful wxPython libraries.

You can use it to compare a local directory (and the sub-directories) with a remote directory. It's useful to synchronize of your most important directories on a server (or USB drive) with your local directories. All in one simple click.

An another very useful situation is when more than one people can modify some files. With this tool, you can always get the last versions on your local directory and Synchronize your local directories with the server.

You can check more than one directory in one process.

The program prompt the user, to be sure that he want to synchronize those directories ( and sub-directories).

The user can refuse to synchronize some specific files or a whole sub-directory.

DirsSync allows you to select which type of files must not be synchronized. For example you can say that all .zip files must no be synchronized any more. This selection is specific for each directory.

Since version 1.3 the system can compare the files by :
- modification time : last updated will be kept.
- size : bigger will be kept.

Other algorithms can easily be implemented. Post your request here.

Released under the GPL.


As pre-requisites, you need to have Python and wxPython, you can get all of those very good software at :



If you take the win32 exe, those pre-requisites are not necessary.

You can get the last version of DirsSync

Your feedbacks are welcome in our mailing list.

Change Log

DirsSync 2.1-rc2

This release corrects several bug fixes, includes several enhancements requested by some of testers
In this release you have the possibility to synchronize an FTP server.
This means that now, you can imagine all kind of combinaison between Directory, Zip file and FTP server.
I've still put it as a "Release Candidate" because lot of tests must still be foreseen.

Concerning FTP, not all FTP servers will work because not all are following the standard specifications (RFC 959).
For your info I'm using the following ftp commands: cwd, nlst, size, mdtm, retr, stor and dele.
All FTP echange are done in binary mode.
I recommand to use MD5 check with FTP server.

To summarize, the constraints are:
- delete a file is not supported in a Zip repositary.
- updating the modification time is not supported in a FTP repositary.

To verify if you ftp server will work, you can do:
- type: "telnet <your.ftpserver.address> 25"
- type: "user <your ftp user>"
- type: "pass <your password>"
- type: "help"
You should see all supported commands. Verify that all the one required by DirsSync are present.

DirsSync 2.1-rc1

As you remark, this release goes directly to 2.1.
I've done it, because so many differences: < COLOR="#dc2300">95% of dirssync.py (engine) has been rewritten!!!!
For higher flexibility I've changed completely the way dirssync internally manage files.

The impact on flexibility is already given:

All combinations are possible; and for each combinations the 3 comparisons methods (Date, Size, MD5) are available.

This non dependency of the Jobcards and the comparison method allows higher flexibility too. Indeed, before synchronizing files, you can perform several comparison to better build view on what must be synchronized.

Long list of bugs has been fixed.

Better error management and follow up:

You can get it here

To use it, simply unzip/untar it, change to the directory dirssync-2.1-rc1 and execute: python run.py

Tests results are VERY welcome. As soon as we are confortable with the code, a standalone .exe will be done for windows platforms. Several people are waiting it since long time.

In advance, thanks for your cooperation.

WARNING: to synchronize a directory with an already created ZIP file, put the directory in 'include dir':
Let's take a sample.
On local I have a directory: /tmp/test/data
On remote I have a ZIP file: /tmp/test/data.zip
The Jobcard must be:
Local: Dir:/tmp/test, include dir: data
Remote: Dir: /tmp/test/data.zip

We must do that, because (like often) the ZIP file has been created by 'right clicking' on 'data' directory and selecting 'create zip file'.

DirsSync 2.0-rc3

Thanks to Roger B. Dannenberg several bugs has been identified. This Release Candidate fix them.
I'll be happy to get your comments/issues concerning this new ReleaseCandidate.

You can get it here

To use it, simply unzip/untar it, change to the directory dirssync-2.0-rc3 and execute: python run.py

Don't forget, I'm using the "glob" module of Python. Documentation is here. Each pattern must be separated by a comma.

DirsSync 2.0-rc2

I've made several bug fixes and implement the "New menu".
Thanks for those who have sent me some feedback on dirssync-2.0-rc1.
I'll be happy to get your comments/issues concerning this new ReleaseCandidate.

You can get it here

To use it, simply unzip/untar it, change to the directory dirssync-2.0-rc2 and execute: python run.py

Because people have asked me about the patterns, I'm using the "glob" module of Python. Documentation is here. Each pattern must be separated by a comma.

DirsSync 2.0-rc1

After 4 years of good services, I've decided to fully rewrite DirsSync. Mainly because of difficulties to add some new functionalities. You can get it on the Sourceforge download page here.
To start it : python run.py

Split has been made between DirsSync Engine (can be imported in other python programs) and GUI.
GUI was build via wxGlade

Help is request to "fork" the CVS tree. If some one can guide me; I'm not CVS specialist.

Thanks to send feedbacks/use source forge bugs tracking.
In any case specify clearly that you talk about DirsSync2 or DirsSync.

DirsSync will continue (for bug fixes) in parallel until DirsSync2 becomes stable enough.

DirsSync 1.3

After tests and bug fixes, we release the version 1.3

DirsSync 1.3 RC3

Small bug fixes. Thanks to Mark and Chris.

DirsSync 1.3 RC2

Thanks to Valerio, DirsSync is now internationalized in Italian and French.
New File comparison engine that can easily be modified.

DirsSync 1.3 (Beta)

Thanks to Mark Carter for his wonderful contribution to DirsSync. He has clean-up the source code and implement several RFE.
Thanks to Mark, this version will propose the "One-Way" synchronization and the "Deletion".

DirsSync 1.2

DirsSync 1.2 is in preparation.
A new methodology is putting in place to have more comparison possibilities. In the same time, this comparison will be simplified; this will allow developer to easily code a new comparison algorithm. Thanks to Mark Carter for his very valuable inputs.
This version will have a "Force to remote" or "Force to local" mechanism (with or without delete).
You can get beta version from the CVS tree.

DirsSync 1.1

Filtering functionality added : By creating a ".dirsync" file in the directory you inform DirsSync to not synchronize some file(s).  You must specify one file per line, and you must avoid empty lines.
For example this files can be :

As you can see, you can use the "wild char", and you can specify a complete sub-directory.
If the content of the remote and the content of the local file have different sub-directory that you don't want to modify, it's necessary to avoid to synchronize the file ".dirsync".

A Win32 exe has been made for lazy people ;-)
Those who don't want to install Python and wxPython.

DirsSync 1.0

Since the application is used since so many time without any problems reported, I've decided to rename the version 0.3 into the version 1.0.


Small bug fixes : validity check on inputs


The modification concern essentially the layout of the windows.

The LayoutConstraint has been added. By this way, you can rise the window, the different list will be adapted automatically.


After using this tools since many months, I've decided to put this version of DirsSync available for everybody.

Nothing to add.


Here after you can see screenshots on my Linux machine (Gentoo) with Python 2.2.3 and wxPython

list to transfer:




1) On the input panel, you must enter the directories that you want synchronize (those must be mounted).
     By default, the comparison will be done based on the last modification time. But on the "Options" tab you have the possibility to use other comparison criteria.

2) click to "add job". Add as many directory you want. You can synchronize more than 1 directory with one click.

3) click on "Next >>" button.

4) The program will switch automatically on the "log" panel, to show you what is doing.

5) When the check is finished, you are automatically switch to the "List to transfer" panel. There you will see all the differences between the directories.

     By default, the column "transfer" is always set to "yes". You can change that by double clicking on the specific file that you don't want to transfer.

     If you don't want to synchronize a complete sub-directory, change is "transfer" state into "no" by double-clicking on it.

6) Click on "SYNCHRONISE" button. The program will switch automatically to the "log" panel showing you what's doing.

7) Since version 1.1 you have the possibility to exclude files by listing them into a ".dirsync" file in local and/or remote directory. The file must contain one file or directory per line, and the "wild char" can be used.  BUT Avoid empty lines.


If you want to give me feedback, remarks, send bugs, send bugs fix, be register as a developer, please visit my sourceforge page.

The current development staff is :