This open-source software comes along with a GNU GPL v1 License enclosed in the LICENSE.txt file.
*** Presentation ***
FilesToRepository is an open-source Java tool which allows to easily back-up and synchronize recursivly folders content. It allows to back-up and synchronize a full hierarchy of folders content while resolving the conflicts automatically.
The tool works transparently in two modes: simple copy mode and synchornise mode. In simple copy mode, it copies folders and files structures to a an empty destination directory, in an optimized way (see Performance paragraph). In synchronize mode, it synchronizes folders and files structures with a destination files repository (folder); this means, only new files are copied and newer file versions overwrite old ones.
This tool can be used e.g. for backing-up photos on an external drive every two months while keeping a part of them at the same original place (for easy access).
* Limitations
No versioning. In synchornize mode, newer files overwrite old files if the have the same name and are in the same folder.
The tool only accepts folders as input, files are not supported as input.
The copied files are created with default permissions, wich means on Windows it is not annoying, on Linux/Unix you may loose 'execute' right during copy. This file permissions limitation comes directly form an underlying Java technology limitation, and there is no workaround till today using platform-independant Java.
* Example
You gathered a whole folder hierarchy holding important files you need to back-up. You create a fresh new directory to hold your back-up on an external drive for instance. You use the command line tool passing as input-path the root(s) folder(s) of your to-back up file structure and as output-path the newly created directory. The tool will only (but with excellent performance) copy all the files and folders to-back-up to the external's drive directory.
Three months have passed, your to-back-up files structure has evolved, some new files/directories were added, some were removed. Here you have two options, use a fresh back-up folder or re-use the previous back-up folder (the one which was on an external drive). If you use a fresh back-up folder, you may waste space because perhaps some (or many) files have not changed since last back-up. Moreover, a full back-up is slow. The benefits of this tool are in using the synchronize mode and doing an incremental back-up over the last back-up; please remember the No-Versioning limitation (see Limitations paragraph). If you choose to synchronize over the last back-up, only new files will be copied/overwritten, doing a much faster second back-up.
* Supported Media
Read input: any mounted media on your system which is readable e.g. internal disk drive, external disk drive, CD/DVD (not tested so far but should be fine), flash memory stick (not tested so far but should be fine)...
Write output: any mounted media on your system wich is writable through basic system operations e.g. internal disk drive, external disk drive. Flash memory stick can work but it is not recommended for back-up. CD/DVD can work on Windows XP with a Windows system burn command afterwards, but CD/DVD media are not suited for long term back-up or even for back-up itself.
* Performance
The performance of this tool was tested in simple copy mode against the performance of visual file browsers under Linux Debian 40r4a and Windows XP Pro SP3.
-Linux Debian 40r4a: simple massive copy performance against Nautilus file browser: roughly same performance.
-Windows XP Pro SP3: simple massive copy performance against Explorer file browser: up to 35% faster than Explorer!
* System requirements
Runtime & compilation:
-Environment: Java 1.4 or higher
-Operating system: any OS supporting Java 1.4 or higher e.g. Linux, Solaris, Windows XP/2000/Server 2003/Vista ...
*** User Guide Lines ***
* Help command
For a complete usage help feel free to try out --help command. The full help command for this release is like: java -jar FTR_0.9.2b_rel0.jar --help
* Version command
java -jar FTR_0.9.2b_rel0.jar --version
* Copy/Synchronize command
As input, this command takes usually two arguments: the --input-path and the --output-path.
-Basic example:
--On Windows:
For a basic example you can refer to the given runFTR_0.9.3_rel0.bat file.
--On Linux/Unix:
For a basic example you can refer to the given runFTR_0.9.3_rel0.sh file.
-More advanced example: several input folders
--On Windows:
java -jar FTR_0.9.3_rel0.jar --input-path C:\test\inputFolder0,C:\test\inputFolder1 --output-path C:\test\outputFolder --exclude Thumbs.db
Note: C:\test\outputFolder has to exist and the Thumbs.db files (hidden files coming along with pictures files) have to be excluded on Windows.
--On Linux/Unix:
java -jar FTR_0.9.3_rel0.jar --input-path /home/user/test/inputFolder0/,/home/user/test/inputFolder1 --output-path /home/user/test/outputFolder
Note: /home/user/test/outputFolder has to exist
*** Trouble shooting
* On Linux, you specified an output-path and you get an error : "Fatal: output path is empty": maybe you entered a multi-value input-path and forgot to ecape the path separator ';' with a '\'
* You encounter class loading issues during command launch. Make sure you are using the correct Java version as specified in System requirements paragraph.
*** Credits
Author: Dan Craciunescu
*** Bug report
If you encounter a problem you estimate as a 'bug', please make sure it is not an expected behaviour given the command line you entered. If you still estimate it is a 'malfunction' of the tool, please send a detailed description of the problem including the error messages to dan.craciunescu@free.fr