2
0
mirror of https://github.com/deajan/osync synced 2024-11-19 03:25:37 +00:00

Updated documentation

This commit is contained in:
deajan 2016-07-27 10:25:56 +02:00
parent 5880e1502f
commit 5cc42d360a

View File

@ -101,7 +101,7 @@ osync v1.1 Documentation
\end_layout \end_layout
\begin_layout Date \begin_layout Date
07 July 2016 27 July 2016
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
@ -164,7 +164,7 @@ Synchronization is usually found in two flavors, bloc level sync and file
While whole bloc level synchronization is generally a good way of doing, While whole bloc level synchronization is generally a good way of doing,
it's also very greedy in network ressources and is not easy to setup. it's also very greedy in network ressources and is not easy to setup.
That's where file level sync comes in handy, where only some directories That's where file level sync comes in handy, where only some directories
need to be synced. & files need to be synced.
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
@ -195,7 +195,7 @@ What would happen if a power fault occurs while synchronization is going
\end_layout \end_layout
\begin_layout Subsection \begin_layout Subsection
What exactly osync can do What osync can do
\end_layout \end_layout
\begin_layout Subsubsection \begin_layout Subsubsection
@ -213,12 +213,12 @@ It is time controlled, which means you can decide how much time it should
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
It's designed to resume failed or stopped sync tasks, and totally restart It's designed to resume failed or stopped sync tasks, or totally restart
the sync task if resume fails. the sync task if resume fails.
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
It can keep an multiple versions of a file in case of a conflict. It can keep multiple versions of a file in case of a conflict.
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
@ -228,7 +228,7 @@ It handles soft deletion.
\begin_inset Quotes sld \begin_inset Quotes sld
\end_inset \end_inset
deleted .osync_workdir/deleted
\begin_inset Quotes srd \begin_inset Quotes srd
\end_inset \end_inset
@ -241,7 +241,8 @@ It will automatically clean old files (soft deleted and conflict backups)
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
It will perform various checks before launching a synchronization. It will perform various checks before launching a synchronization like free
disk space.
\end_layout \end_layout
\begin_layout Subsubsection \begin_layout Subsubsection
@ -269,7 +270,8 @@ Multiple concurrent instances of osync can be run as long as they don't
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
A batch processing script is included to launch sequential sync tasks. A batch processing script is included (osync-batch.sh) to launch sequential
sync tasks.
Failed sync tasks are rerun if every other task has completed and there's Failed sync tasks are rerun if every other task has completed and there's
still some time left in a given timespan. still some time left in a given timespan.
\end_layout \end_layout
@ -291,8 +293,8 @@ You may run osync manually, schedule it with cron, or have it monitor a
\begin_layout Standard \begin_layout Standard
osync has been succesfully tested on RHEL / CentOS 5, CentOS 6, Centos 7, osync has been succesfully tested on RHEL / CentOS 5, CentOS 6, Centos 7,
Debian Linux 6.0.7, Linux Mint 14, 17, FreeBSD 8.3, 10.3, pfSense 2.x, Mac OS Debian 6, Debian 7, Linux Mint 14, 17, FreeBSD 8.3, 10.3, pfSense 2.x, Mac
X, and Windows using msys & cygwin environment. OS X, and Windows using msys & cygwin environment.
\end_layout \end_layout
\begin_layout Subsubsection \begin_layout Subsubsection
@ -330,7 +332,85 @@ Disavantages:
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
- There's no muliinitiator replication in osync V1. - There's no multi-master replication in osync V1.
Hence, if you want to sync replicas A, B, and C using osync, you'll have
to use one of the following schemas:
\end_layout
\begin_layout Paragraph
Replicate 3-way with A as master
\end_layout
\begin_layout Standard
Run the following tasks sequentially where A is the initiatior:
\end_layout
\begin_layout Standard
Replicate A & B
\end_layout
\begin_layout Standard
Replicate A & C
\end_layout
\begin_layout Standard
Replicate A & B
\end_layout
\begin_layout Paragraph
Replicate 3-way with A & B as masters
\end_layout
\begin_layout Standard
Run the following tasks from each system.
Be sure they won't run concurrently (osync will detect that another replication
is still running, and abort the current one):
\end_layout
\begin_layout Standard
Replicate A & B where A is the initiator
\end_layout
\begin_layout Standard
Replicate B & C where B is the initiator
\end_layout
\begin_layout Standard
Replicate C & A where C is the initiator
\end_layout
\begin_layout Subsection
Why use osync
\end_layout
\begin_layout Standard
There are a lot of file sync tools out there, some probably better than
osync depending on the use case.
\end_layout
\begin_layout Standard
osync has been basically written to be low bandwidth friendly, with resume
options for unstable internet links (but it will also do great on a fiber
link :)).
\end_layout
\begin_layout Standard
It has also been written to be a setup and forget tool, without any user
interaction like manual conflict resolution.
\end_layout
\begin_layout Standard
osync also is one of the few tools that support ACL synchronization.
\end_layout
\begin_layout Standard
At least, osync consumes very little RAM and CPU ressources and is suitable
from lower en hardware up to serveres.
\end_layout
\begin_layout Standard
Hence, it has some unique features that make it a good tool depending on
the use case.
\end_layout \end_layout
\begin_layout Subsection \begin_layout Subsection
@ -435,6 +515,57 @@ syncuser
is used for osync. is used for osync.
\end_layout \end_layout
\begin_layout Subsection
How osync solves sync conflicts
\end_layout
\begin_layout Standard
Conflict resolution is done automatically.
When a file is modified on both replicas, osync compares the timestamps
on both replicas and keeps the most recent file.
\end_layout
\begin_layout Standard
In the highly uncommon case where both files have the exact same timestamp,
a configuration value called CONFLICT_PREVALANCE choses the which replica's
file will be kept.
By default, Initiator is chosen, unless specified otherwise in the config
file.
\end_layout
\begin_layout Standard
The file that isn't kept is copied to
\begin_inset Quotes sld
\end_inset
.osync_wordir/backups
\begin_inset Quotes srd
\end_inset
directory of the replica by default, with its full path relative to the
replica, unless specified otherwise by the CONFLICT_BACKUP configuration
value.
\end_layout
\begin_layout Standard
After an amount of days set by CONFLICT_BACKUP_DAYS, which is 30 by default,
the backed up file is deleted.
\end_layout
\begin_layout Standard
If CONFLICT_BACKUP_MULTIPLE is set to YES (disabled by default), multiple
versions of the backed up files are kept, with a timestamp suffix like
\begin_inset Quotes sld
\end_inset
2016.12.31-12.00.01
\begin_inset Quotes srd
\end_inset
.
\end_layout
\begin_layout Section \begin_layout Section
Prerequisites Prerequisites
\end_layout \end_layout
@ -601,6 +732,20 @@ $ touch /initiator/replica/othertest.file
Repeat that step for the target replica. Repeat that step for the target replica.
\end_layout \end_layout
\begin_layout Subsection
Time setup
\end_layout
\begin_layout Standard
WARNING: osync's conflict resolution relies on timestamps, so it is very
important for all systems osync runs / syncs to, to have a reliable and
common timesource.
\end_layout
\begin_layout Standard
Please consider setting up NTPD first before you plan to run osync.
\end_layout
\begin_layout Subsection \begin_layout Subsection
\begin_inset CommandInset label \begin_inset CommandInset label
LatexCommand label LatexCommand label
@ -1266,7 +1411,11 @@ Also, edit RSYNC_EXECUTABLE value on any of your sync configuration files
\end_layout \end_layout
\begin_layout Section \begin_layout Section
Getting osync Getting and running osync
\end_layout
\begin_layout Subsection
Downloading osync
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
@ -1355,7 +1504,7 @@ It will also copy daemon required files to /etc/init.d or /usr/lib/systemd/syste
and /etc/systemd/user depending on your distribution. and /etc/systemd/user depending on your distribution.
\end_layout \end_layout
\begin_layout Section \begin_layout Subsection
\begin_inset CommandInset label \begin_inset CommandInset label
LatexCommand label LatexCommand label
name "sec:Running-Osync-in" name "sec:Running-Osync-in"
@ -1420,7 +1569,7 @@ $ ./osync.sh --initiator=/path/to/dir2 --target=ssh://remoteuser@remotehost.com:
\end_layout \end_layout
\begin_layout Section \begin_layout Subsection
\begin_inset CommandInset label \begin_inset CommandInset label
LatexCommand label LatexCommand label
name "sec:Running-Osync-with-config-file" name "sec:Running-Osync-with-config-file"
@ -1520,7 +1669,7 @@ You may find the sync log under /var/log/osync-your_sync.log or under the
current directory if /var/log is not writable. current directory if /var/log is not writable.
\end_layout \end_layout
\begin_layout Section \begin_layout Subsection
\begin_inset CommandInset label \begin_inset CommandInset label
LatexCommand label LatexCommand label
name "sec:Running-Osync-as-daemon" name "sec:Running-Osync-as-daemon"
@ -1530,7 +1679,7 @@ name "sec:Running-Osync-as-daemon"
Running osync as deamon Running osync as deamon
\end_layout \end_layout
\begin_layout Subsection \begin_layout Subsubsection
Manually Manually
\end_layout \end_layout
@ -1558,7 +1707,7 @@ $ ./osync.sh /etc/osync/my_sync.conf --on-changes
\end_layout \end_layout
\begin_layout Subsection \begin_layout Subsubsection
As a system service As a system service
\end_layout \end_layout
@ -1572,6 +1721,15 @@ From the directory you downloaded osync, run the install.sh script and enable
the service. the service.
\end_layout \end_layout
\begin_layout Standard
Remark: When exiting osync daemon, the process will continue to run for
up to a minute to unlock replicas and termine sub processes.
\end_layout
\begin_layout Paragraph
Init.d service files
\end_layout
\begin_layout Standard \begin_layout Standard
\begin_inset listings \begin_inset listings
inline false inline false
@ -1601,6 +1759,113 @@ osync then scans for *.conf files in /etc/osync and will run an instance
Service control just works like with standard system services. Service control just works like with standard system services.
\end_layout \end_layout
\begin_layout Paragraph
systemd service files
\end_layout
\begin_layout Standard
\begin_inset listings
inline false
status open
\begin_layout Plain Layout
# systemctl start osync-srv@config_file
\end_layout
\begin_layout Plain Layout
# systemctl enable osync-srv@config_file
\end_layout
\end_inset
\end_layout
\begin_layout Standard
With systemd, every config file found in /etc/osync can be controlled as
a separate service.
\end_layout
\begin_layout Subsection
Running osync batch
\end_layout
\begin_layout Standard
If you have multiple configuration files in /etc/osync that you would like
to run sequentially, and re-run failed sync tasks, osync comes with a tool
called osync-batch.
\end_layout
\begin_layout Standard
It will execute all osync conf files in alphanumerical order, in a given
timespan.
\end_layout
\begin_layout Standard
osync-batch takes the following non mandatory parameters:
\end_layout
\begin_layout Labeling
\labelwidthstring 00.00.0000
silent Will launch osync tasks silently
\end_layout
\begin_layout Labeling
\labelwidthstring 00.00.0000
dry Will launch osnyc tasks as simulations only
\end_layout
\begin_layout Labeling
\labelwidthstring 00.00.0000
verbose Will launch osync tasks with detailed output, including changed
and deleted files lists on both sides
\end_layout
\begin_layout Labeling
\labelwidthstring 00.00.0000
no-maxtime Will launch osync taks without any maximum execution time
\end_layout
\begin_layout Labeling
\labelwidthstring 00.00.0000
path= By default, osync-batch.sh searches for config files in /etc/osync.
This parameter overrides the default value.
\end_layout
\begin_layout Labeling
\labelwidthstring 00.00.0000
max-reruns= By default osync-batch.sh tries to rerun failed tasks 3 times.
This parameter overrides the default value.
\end_layout
\begin_layout Labeling
\labelwidthstring 00.00.0000
max-exec-time= By default, osync-batch.sh won't launch next task if 36000
seconds have passed.
This parameter overrides the default value.
\end_layout
\begin_layout Standard
You may program a cron task for osync-batch.sh like
\end_layout
\begin_layout Standard
\begin_inset listings
inline false
status open
\begin_layout Plain Layout
00 * * * * syncuser /usr/local/bin/osync-batch.sh --silent
\end_layout
\end_inset
\end_layout
\begin_layout Section \begin_layout Section
Configuration appendix Configuration appendix
\end_layout \end_layout