Merge branch 'master' of https://github.com/deajan/osync
This commit is contained in:
commit
689928eac1
85
README.md
85
README.md
|
@ -9,21 +9,21 @@ This is a quickstart guide, you can find the full documentation on the author's
|
||||||
**22 May 2019: I am happy to announce that osync 1.3-beta3 passed it's tests on all target platforms.
|
**22 May 2019: I am happy to announce that osync 1.3-beta3 passed it's tests on all target platforms.
|
||||||
In order to speed up a osync 1.3 final release, please consider testing this beta.**
|
In order to speed up a osync 1.3 final release, please consider testing this beta.**
|
||||||
|
|
||||||
About
|
## About
|
||||||
-----
|
|
||||||
osync provides the following capabilities
|
osync provides the following capabilities
|
||||||
|
|
||||||
- Local-Local and Local-Remote sync
|
- Local-Local and Local-Remote sync
|
||||||
- Fault tolerance with resume scenarios
|
- Fault tolerance with resume scenarios
|
||||||
- POSIX ACL and extended attributes synchronization
|
- POSIX ACL and extended attributes synchronization
|
||||||
- Full script Time control
|
- Full script Time control
|
||||||
- Soft deletions and multiple backups handling
|
- Soft deletions and multiple backups handling
|
||||||
- Before / after run command execution
|
- Before / after run command execution
|
||||||
- Email alerts
|
- Email alerts
|
||||||
- Logging facility
|
- Logging facility
|
||||||
- Directory monitoring
|
- Directory monitoring
|
||||||
- Running on schedule or as daemon
|
- Running on schedule or as daemon
|
||||||
- Batch runner for multiple sync tasks with rerun option for failed sync tasks
|
- Batch runner for multiple sync tasks with rerun option for failed sync tasks
|
||||||
|
|
||||||
osync is a stateful synchronizer. This means it's agentless and doesn't have to monitor files for changes. Instead, it compares replica file lists between two runs.
|
osync is a stateful synchronizer. This means it's agentless and doesn't have to monitor files for changes. Instead, it compares replica file lists between two runs.
|
||||||
A full run takes about 2 seconds on a local-local replication and about 7 seconds on a local-remote replication.
|
A full run takes about 2 seconds on a local-local replication and about 7 seconds on a local-remote replication.
|
||||||
|
@ -38,13 +38,13 @@ Microsoft Windows is supported via MSYS or Cygwin and now via Windows 10 bash.
|
||||||
Android support works via Termux.
|
Android support works via Termux.
|
||||||
Some users also have successfully used osync on Gentoo and created an openRC init scriptt for it.
|
Some users also have successfully used osync on Gentoo and created an openRC init scriptt for it.
|
||||||
|
|
||||||
Installation
|
## Installation
|
||||||
------------
|
|
||||||
osync has been designed to not delete any data, but rather make backups of conflictual files or soft deletes.
|
osync has been designed to not delete any data, but rather make backups of conflictual files or soft deletes.
|
||||||
Nevertheless, you should always have a neat backup of your data before trying a new sync tool.
|
Nevertheless, you should always have a neat backup of your data before trying a new sync tool.
|
||||||
|
|
||||||
You may get osync on the author's site (stable version) or on github (stable or latest dev snapshot)
|
You may get osync on github (stable or latest dev snapshot) or on the author's site (stable version)
|
||||||
Getting osync via author's site on **http://www.netpower.fr/osync**
|
Getting osync via author's site on <https://www.netpower.fr/osync>
|
||||||
|
|
||||||
$ wget http://www.netpower.fr/projects/osync/osync.v1.2.tar.gz
|
$ wget http://www.netpower.fr/projects/osync/osync.v1.2.tar.gz
|
||||||
$ tar xvf osync.v1.2.tar.gz
|
$ tar xvf osync.v1.2.tar.gz
|
||||||
|
@ -71,7 +71,7 @@ On *BSD and BusyBox, be sure to have bash installed.
|
||||||
|
|
||||||
If you can't install osync, you may just copy osync.sh where you needed and run it from there.
|
If you can't install osync, you may just copy osync.sh where you needed and run it from there.
|
||||||
|
|
||||||
Archlinux packages are available at https://aur.archlinux.org/packages/osync/ (thanks to Shadowigor, https://github.com/shadowigor)
|
Archlinux packages are available at <https://aur.archlinux.org/packages/osync/> (thanks to Shadowigor, <https://github.com/shadowigor>)
|
||||||
|
|
||||||
## Upgrade from previous configuration files
|
## Upgrade from previous configuration files
|
||||||
|
|
||||||
|
@ -85,35 +85,35 @@ You can upgrade all v1.0x-v1.2-dev config files by running the upgrade script
|
||||||
|
|
||||||
The script will backup your config file, update it's content and try to connect to initiator and target replicas to update the state dir.
|
The script will backup your config file, update it's content and try to connect to initiator and target replicas to update the state dir.
|
||||||
|
|
||||||
Usage
|
## Usage
|
||||||
-----
|
|
||||||
Osync can work with in three flavors: Quick sync mode, configuration file mode, and daemon mode.
|
Osync can work with in three flavors: Quick sync mode, configuration file mode, and daemon mode.
|
||||||
While quick sync mode is convenient to do fast syncs between some directories, a configuration file gives much more functionnality.
|
While quick sync mode is convenient to do fast syncs between some directories, a configuration file gives much more functionnality.
|
||||||
Please use double quotes as path delimiters. Do not use escaped characters in path names.
|
Please use double quotes as path delimiters. Do not use escaped characters in path names.
|
||||||
|
|
||||||
QuickSync example
|
## QuickSync example
|
||||||
-----------------
|
|
||||||
# osync.sh --initiator="/path/to/dir1" --target="/path/to/remote dir2"
|
# osync.sh --initiator="/path/to/dir1" --target="/path/to/remote dir2"
|
||||||
# osync.sh --initiator="/path/to/another dir" --target="ssh://user@host.com:22//path/to/dir2" --rsakey=/home/user/.ssh/id_rsa_private_key_example.com
|
# osync.sh --initiator="/path/to/another dir" --target="ssh://user@host.com:22//path/to/dir2" --rsakey=/home/user/.ssh/id_rsa_private_key_example.com
|
||||||
|
|
||||||
Summary mode
|
## Summary mode
|
||||||
------------
|
|
||||||
osync may output only file changes and errors with the following
|
osync may output only file changes and errors with the following
|
||||||
|
|
||||||
# osync.sh --initiator="/path/to/dir1" --target="/path/to/dir" --summary --errors-only --no-prefix
|
# osync.sh --initiator="/path/to/dir1" --target="/path/to/dir" --summary --errors-only --no-prefix
|
||||||
|
|
||||||
This also works in configuration file mode.
|
This also works in configuration file mode.
|
||||||
|
|
||||||
QuickSync with minimal options
|
## QuickSync with minimal options
|
||||||
------------------------------
|
|
||||||
In order to run osync the quickest (without transferring file attributes, without softdeletion, without prior space checks and without remote connectivity checks, you may use the following:
|
In order to run osync the quickest (without transferring file attributes, without softdeletion, without prior space checks and without remote connectivity checks, you may use the following:
|
||||||
|
|
||||||
# MINIMUM_SPACE=0 PRESERVE_ACL=no PRESERVE_XATTR=no SOFT_DELETE_DAYS=0 CONFLICT_BACKUP_DAYS=0 REMOTE_HOST_PING=no osync.sh --initiator="/path/to/another dir" --target="ssh://user@host.com:22//path/to/dir2" --rsakey=/home/user/.ssh/id_rsa_private_key_example.com
|
# MINIMUM_SPACE=0 PRESERVE_ACL=no PRESERVE_XATTR=no SOFT_DELETE_DAYS=0 CONFLICT_BACKUP_DAYS=0 REMOTE_HOST_PING=no osync.sh --initiator="/path/to/another dir" --target="ssh://user@host.com:22//path/to/dir2" --rsakey=/home/user/.ssh/id_rsa_private_key_example.com
|
||||||
|
|
||||||
All the settings described here may also be configured in the conf file.
|
All the settings described here may also be configured in the conf file.
|
||||||
|
|
||||||
Running osync with a Configuration file
|
## Running osync with a Configuration file
|
||||||
---------------------------------------
|
|
||||||
You'll have to customize the sync.conf file according to your needs.
|
You'll have to customize the sync.conf file according to your needs.
|
||||||
If you intend to sync a remote directory, osync will need a pair of private / public RSA keys to perform remote SSH connections.
|
If you intend to sync a remote directory, osync will need a pair of private / public RSA keys to perform remote SSH connections.
|
||||||
Also, running sync as superuser requires to configure /etc/sudoers file.
|
Also, running sync as superuser requires to configure /etc/sudoers file.
|
||||||
|
@ -138,8 +138,8 @@ Once you're confident about your first runs, you may add osync as a cron task li
|
||||||
|
|
||||||
Please note that this syntax works for RedHat / CentOS. On Debian you might want to remove the username (ie root) in order to make the crontab entry work.
|
Please note that this syntax works for RedHat / CentOS. On Debian you might want to remove the username (ie root) in order to make the crontab entry work.
|
||||||
|
|
||||||
Batch mode
|
## Batch mode
|
||||||
----------
|
|
||||||
You may want to sequentially run multiple sync sets between the same servers. In that case, osync-batch.sh is a nice tool that will run every osync conf file, and, if a task fails,
|
You may want to sequentially run multiple sync sets between the same servers. In that case, osync-batch.sh is a nice tool that will run every osync conf file, and, if a task fails,
|
||||||
run it again if there's still some time left.
|
run it again if there's still some time left.
|
||||||
The following example will run all .conf files found in /etc/osync, and retry 3 times every configuration that fails, if the whole sequential run took less than 2 hours.
|
The following example will run all .conf files found in /etc/osync, and retry 3 times every configuration that fails, if the whole sequential run took less than 2 hours.
|
||||||
|
@ -150,8 +150,8 @@ Having multiple conf files can then be run in a single cron command like
|
||||||
|
|
||||||
00 00 * * * root /usr/local/bin/osync-batch.sh --path=/etc/osync --silent
|
00 00 * * * root /usr/local/bin/osync-batch.sh --path=/etc/osync --silent
|
||||||
|
|
||||||
Daemon mode
|
## Daemon mode
|
||||||
-----------
|
|
||||||
Additionaly, you may run osync in monitor mode, which means it will perform a sync upon file operations on initiator replica.
|
Additionaly, you may run osync in monitor mode, which means it will perform a sync upon file operations on initiator replica.
|
||||||
This can be a drawback on functionnality versus scheduled mode because this mode only launches a sync task if there are file modifications on the initiator replica, without being able to monitor the target replica.
|
This can be a drawback on functionnality versus scheduled mode because this mode only launches a sync task if there are file modifications on the initiator replica, without being able to monitor the target replica.
|
||||||
Target replica changes are only synced when initiator replica changes occur, or when a given amount of time (default 600 seconds) passed without any changes on initiator replica.
|
Target replica changes are only synced when initiator replica changes occur, or when a given amount of time (default 600 seconds) passed without any changes on initiator replica.
|
||||||
|
@ -182,13 +182,13 @@ OpenRC specific instructions (user contrib)
|
||||||
Launch service (one service per config file to launch) with:
|
Launch service (one service per config file to launch) with:
|
||||||
$ rc-update add osync-srv.configfile default
|
$ rc-update add osync-srv.configfile default
|
||||||
|
|
||||||
Security enhancements
|
## Security enhancements
|
||||||
---------------------
|
|
||||||
Remote SSH connection security can be improved by limiting what hostnames may connect, disabling some SSH options and using ssh filter.
|
Remote SSH connection security can be improved by limiting what hostnames may connect, disabling some SSH options and using ssh filter.
|
||||||
Please read full documentation in order to configure ssh filter.
|
Please read full documentation in order to configure ssh filter.
|
||||||
|
|
||||||
Contributions
|
## Contributions
|
||||||
-------------
|
|
||||||
All kind of contribs are welcome.
|
All kind of contribs are welcome.
|
||||||
|
|
||||||
When submitting a PR, please be sure to modify files in dev directory (dev/n_osync.sh, dev/ofunctions.sh, dev/common_install.sh etc) as most of the main files are generated via merge.sh.
|
When submitting a PR, please be sure to modify files in dev directory (dev/n_osync.sh, dev/ofunctions.sh, dev/common_install.sh etc) as most of the main files are generated via merge.sh.
|
||||||
|
@ -199,22 +199,21 @@ SSH port can be changed on the fly via environment variable SSH_PORT, eg: SSH_PO
|
||||||
|
|
||||||
Consider reading CODING_CONVENTIONS.TXT before submitting a patch.
|
Consider reading CODING_CONVENTIONS.TXT before submitting a patch.
|
||||||
|
|
||||||
Troubleshooting
|
## Troubleshooting
|
||||||
---------------
|
|
||||||
You may find osync's logs in /var/log/osync.[INSTANCE_ID].log (or current directory if /var/log is not writable).
|
You may find osync's logs in `/var/log/osync.[INSTANCE_ID].log` (or current directory if /var/log is not writable).
|
||||||
Additionnaly, you can use the --verbose flag see to what actions are going on.
|
Additionnaly, you can use the --verbose flag see to what actions are going on.
|
||||||
|
|
||||||
When opening an issue, please post the corresponding log files. Also, you may run osync with _DEBUG option in order to have more precise logs, eg:
|
When opening an issue, please post the corresponding log files. Also, you may run osync with _DEBUG option in order to have more precise logs, eg:
|
||||||
_DEBUG=yes ./osync.sh /path/to/conf
|
_DEBUG=yes ./osync.sh /path/to/conf
|
||||||
|
|
||||||
|
## Uninstalling
|
||||||
|
|
||||||
Uninstalling
|
|
||||||
------------
|
|
||||||
The installer script also has an uninstall mode that will keep configuration files. Use it with
|
The installer script also has an uninstall mode that will keep configuration files. Use it with
|
||||||
|
|
||||||
$ ./install.sh --remove
|
$ ./install.sh --remove
|
||||||
|
|
||||||
Author
|
## Author
|
||||||
------
|
|
||||||
Feel free to open an issue on github or mail me for support in my spare time :)
|
Feel free to open an issue on github or mail me for support in my spare time :)
|
||||||
Orsiris de Jong | ozy@netpower.fr
|
Orsiris de Jong | ozy@netpower.fr
|
||||||
|
|
Loading…
Reference in New Issue