The tool supports creation, change and deletion of files
It is possible to configure exclude file and directory patterns per directory or for all
It also supports file and path case change between directories that are case sensitive and non case sensitive
It is possible to run the tool in simulate mode, where no files or directories are changed
Any deleted or overwritten file is backup. This backup is kept for 30 days, before it is deleted permanently
Missing mounts / maps are ignored with a warning, that can be permanently ignored (as any warning)
Synchronization can be interrupted / stopped / breaked (Ctrl+Break / kill -15) without (any) data loss
Can handle time zone error (daylight saving time on Windows and Linux on a USB in FAT32 format)
Executable files ("jar", "sh", "desktop") are marked as executable, when copied from a directory that does not support executable markings (FAT, NTFS), to a directory that does (ext4)
Exclusion of file(s) are done by creating a file named "File Synchronizer exclude.txt" in the root of A or / and root of B.
Each line in the file are an exclude prefix / pattern. A file is excluded if its name matches at least one line.
Slash ('/') and backslash ('\') are corrected to the correct directory name separator for the platform (Windows: '\', Linux and Mac: '/'), to make the configuration file cross-platform.
Default exclusion of file(s) are done by creating a file named "Default exclude.txt" in the tools settings directory (e.g. same location as the configuration file). This file is only used, if the root of A or / and root of B doesn't contain a "File Synchronizer exclude.txt" file.
If a file named "Always exclude.txt" is created in the tools settings directory, the content of it is always used. If the root of A or / and root of B contains a "File Synchronizer exclude.txt" file, both the content of it and the content of "Always exclude.txt" are used.
Multiple configurations can be achieved by creating a "Configuration postfix.txt" file in the settings directory containing the postfix for the configuration and settings file.
Lines in the configuration file can be filtered in (e.g. all others will not be synchronized) by specifying prefix(es) on the command line. A line is synchronized if it contains one or more prefixes.
Options
Some general options can be changed by creating a file named "File Synchronizer options.txt" in the tools settings directory (e.g. same location as the configuration file).
Note: All "\" must be escaped to "\\" in this file.
Syntax:
<property name>=<property value> | <property list name>.<property list index>=<property value>
[ <property name>=<property value> | <property list name>.<property list index>=<property value> ]
...
By setting the TimeZoneOffset property, you can specify the time zone offset file. This file must contain it own last modified in the YYYY-MM-DD HH:mm:SS format time zone corrected. The tool will then adjust all last modified accordingly, no matter how the operation system displays / returns it.
The property value must contain a | after an directory separator (/ or \) to indicate which files that are to be adjusted. In the example above all files in the directory /media/allan/3230-3866/0-Data backup/ and below will be adjust by the /media/allan/3230-3866/0-Data backup/File Synchronizer/Time sync.txt file.
Multiple files can be set by using a different <property list index>. Must start with 0 and must be in sequence (0, 1, 2, ....). First match (Lowest <property list index>) sets the limit, so the order is important.
DeleteLimit
A default warning is issued per 5 files deleted per directory (line). This default can be changed by setting the DeleteLimit property:
DeleteLimit=<Default limit>
See example above.
If this limit is set to 0, no warnings will be issued.
This limit can also be set per directory by the DeleteLimit list property.
DeleteLimit.<property list index>=<delete limit>;<Parent path>
See example above.
The <delete limit> defines the delete limit for all files in the <Parent path> directory and any sub directory. If this limit is set to 0, no warnings will issued for these directories.
Multiple limits can be set by using a different <property list index>. Must start with 0 and must be in sequence (0, 1, 2, ....). First match (Lowest <property list index>) sets the limit, so the order is important.
ChangeWarnLimit
A default warning is issued if more that 7 changes (Created, changed or deleted) where made per directory (line). This default can be changed by setting the ChangeWarnLimit property:
ChangeWarnLimit=<Default limit>
See example above.
If this limit is set to 0, no warnings will issued.
This limit can also be set per directory by the ChangeWarnLimit list property.
ChangeWarnLimit.<property list index>=<change warn limit>;<Parent path>
The <change warn limit> defines the change warn limit for all files in the <Parent path> directory and any sub directory. If this limit is set to 0, no warnings will issued for these directories.
If a limit is set for both paths (A and B) in a line, the lowest limit is used.
Multiple limits can be set by using a different <property list index>. Must start with 0 and must be in sequence (0, 1, 2, ....). First match (Lowest <property list index>) sets the limit, so the order is important.
Details
The configuration file is loaded at startup, and any change made to it by the synchronization, will first have effect on the next run.
When synchronizing a new line in the configuration file between two existing directories, the first synchronization is done differently than the following synchronizations. No files will be deleted. A file that only exists in one of the directories will be copied to opposite directory. Warnings will be issued for any other differences.
When a new line is added to the configuration file, it is determined whether directory A and B are case sensitive and support executable mark, and this information is save permanently for all future synchronizations of the two directories. If the parent directory of the A or B directory doesn't exist, the synchronization will fail.
Any change (Directories, operator or / and include filter. This includes change of case.) to a line in the configuration file, is considered as removing the old and adding a new line to the file.
Empty directories are not synchronized.
If a directory is renamed (but not a case change on a case insensitive directory), an empty directory is "leaked" in the opposite directory (Unless the "D" operator part is set on the receiving directory).
The exclude configuration file ("File Synchronizer exclude.txt") in directory A and B is loaded (If it exists) before the synchronizing starts per line in the configuration file. Changes only effect next run (if no lines overlaps).
The default exclude configuration file ("Default exclude.txt") and the always exclude configuration file ("Always exclude.txt") are loaded (If they exists) at startup of the tool, and are reused for each directory which do not have an exclude synchronize file. Changes only effect next run.
If a file is ignored (by the user in a warning prompt), it and the matching opposite file are ignored for the rest of the run of the tool.
If a choice is made permanent for a warning, then this choice can only be deleted / changed by manually removing it from the settings file.
All changes are logged in a changelog file, that is kept for 30 days, before it is deleted.
This tool is based on last modified. If last modified is not updated or is changed back in time, when a file is changed, this tool will fail or / and it might cause problems, data corruption / loss.