<para>Note that any command line options can overrule settings in the config file. A <command>lsyncd</command> configuration file has an XML grammar. That means tags have to be closed with a / and the such. Following explanations will be provided with an examples. </para>
<para>The config file must start with a <option><lsyncd></option> root node. A "version" parameter has to be present which specifies the lsyncd version of the config file format. Currently this is 1.</para>
<para>If <option><delay/></option> specified by the "value" parameter is greater than zero, lsyncd waits this amount of seconds between an event and calling the binary. All events for a directory in this timeframe will be aggregated to one call. If delay is 0 changes will be handlet immediatly. Default is 5 seconds.</para>
<para>If a <option><stubborn></option> node is present lsyncd will continue even if the startup sync fails. Default is being not stubborn.</para>
<para>If a <option><dry-run></option> node is present lsyncd will not call any actions (rsync) for test purposes. Default is not to run dry.</para>
<para>With an <option><exclude-from></option> entry an exclusion file can be specified with a "filename" parameter. This will be passed to rsync and follows rsyncs grammar for exclude files. Default is not to pass an exlude file to rsync.</para>
<para>With a <option><logfile></option> node to location of the logfile can be changed. Default is <filename>/var/log/lsyncd</filename>. Take care that the user which lsyncd is running with can write to this file.</para>
<para>A <option><binary></option> node specifies the binary lsyncd will call to sync stuff. Usually you want this to be rsync. Default is <filename>/usr/bin/rsync</filename>.</para>
<para>With a <option><callopts></option> node you can control the arguments lsyncd will call the <binary> (rsync) with. Each child node will specify one argument. <option> specifies a literal argument. Only %r will be replaced with 'r' when rsycnd is supposed to work recursive (on startup of lsyncd) or 'd' on normal operations. <exclude-file> will be replaced with <option>--exclude-from [FILE]</option> if an <exclude-from> file is specified. <source> will be replaced the source directory to sync from. <destination> will be replace to the target to sync to. Default arguments are <option>-lt%r --delete {--exclude-from [FILE]} [SOURCE] [DIRECTORY]</option>.</para>
<para>With <option><directory></option> nodes arbitrarily many sources to be watched can be specified. Within a <directory> entry you can again specify a <option><binary></option>, <option><exclude-from></option> or a <option><callopt></option> node which will override global settings just for this source. See SETTINGS for details on this options.</para>
<para> The mandatory <option><source></option> node specifies with the parameter "path" the directory to watch and sync. (once in a while something is mandatory. Also at least one <option><target;></option> node has to specified where to sync to. This has to be a format accepted by rsync.</para>