Synchroniser des répertoires en bidirectionnel avec Osync v1.2
Je souhaite faire en sorte que le répertoire local Documents, présent sur mon ordi, soit synchronisé avec le répertoire distant Documents, présent sur un hébergement web. Et bidirectionel, c'est à dire qu'une modification d'un fichier dans le répertoire local soit répercutée sur le répertoire distant, et vice versa. Si un même fichier à été modifié de façon différente de part et d'autre, on garde le dernier modifié et on sauvegarde le plus ancien.
Donc Osync c'est ici : https://github.com/deajan/osync
Pour voir une config qui fonctionne ci-après...
Fichier de config pour un dokuwiki :
# grep -v ^# /etc/osync/monsite.conf | grep -v ^$ | grep -v "" | grep -v =$
INSTANCE_ID="sync_monsite"
INITIATOR_SYNC_DIR="/var/www/html/monsite"
TARGET_SYNC_DIR="ssh://monsite@ssh-monsite.alwaysdata.net//home/glutch/sites/80hg.org/monsite/htdocs"
SSH_RSA_PRIVATE_KEY="/home/machin/.ssh/monsite"
CREATE_DIRS=no
MINIMUM_SPACE=10240
BANDWIDTH=0
SUDO_EXEC=no
RSYNC_EXECUTABLE=rsync
RSYNC_PATTERN_FIRST=include
PATH_SEPARATOR_CHAR=";"
SSH_COMPRESSION=yes
SSH_IGNORE_KNOWN_HOSTS=no
REMOTE_HOST_PING=no
REMOTE_3RD_PARTY_HOSTS="www.kernel.org www.alwaysdata.com"
PRESERVE_PERMISSIONS=no
PRESERVE_OWNER=no
PRESERVE_GROUP=no
PRESERVE_EXECUTABILITY=yes
PRESERVE_ACL=no
PRESERVE_XATTR=no
COPY_SYMLINKS=no
KEEP_DIRLINKS=no
PRESERVE_HARDLINKS=no
CHECKSUM=no
RSYNC_COMPRESS=no
SOFT_MAX_EXEC_TIME=7200
HARD_MAX_EXEC_TIME=10600
KEEP_LOGGING=1801
MIN_WAIT=60
MAX_WAIT=7200
CONFLICT_BACKUP=yes
CONFLICT_BACKUP_MULTIPLE=yes
CONFLICT_BACKUP_DAYS=0
CONFLICT_PREVALANCE=initiator
SOFT_DELETE=yes
SOFT_DELETE_DAYS=0
RESUME_SYNC=yes
RESUME_TRY=2
FORCE_STRANGER_LOCK_RESUME=no
PARTIAL=no
DELTA_COPIES=yes
DESTINATION_MAILS="your@alert.tld"
SENDER_MAIL="alert@your.system.tld"
SMTP_SERVER=smtp.your.isp.tld
SMTP_PORT=25
SMTP_ENCRYPTION=none
LOCAL_RUN_AFTER_CMD="chown -R www-data.www-data /var/www/html/monsite"
MAX_EXEC_TIME_PER_CMD_BEFORE=0
MAX_EXEC_TIME_PER_CMD_AFTER=0
STOP_ON_CMD_ERROR=yes
RUN_AFTER_CMD_ON_ERROR=no
Puis en root :
# osync.sh /etc/osync/monsite.conf --verbose
Quelques détails supplémentaires :
- Pour ne synchroniser que certains sous-répertoires :
## Rsync exclude / include order (the option set here will be set first, eg: include will make include then exclude patterns)
RSYNC_PATTERN_FIRST=include
#RSYNC_PATTERN_FIRST=exclude
## List of files / directories to incldue / exclude from sync on both sides (see rsync patterns, wildcards work).
## Paths are relative to sync dirs. List elements are separated by a semicolon.
RSYNC_INCLUDE_PATTERN="/;/Archives***;/atelier***;/Documents***"
RSYNC_EXCLUDE_PATTERN="*"
#RSYNC_EXCLUDE_PATTERN="tmp;archives"
- Pour faire tourner une instance osync automatiquement dès qu'un fichier est modifié :
On systemd systems, syntax is :
# systemctl start osync-srv@monsite.conf
# systemctl enable osync-srv@monsite.conf
- Pour un PluXml en local avec Apache 2.4 + PHP 7.3, après l'initialisation de osync, il est nécessaire de passer à OFF la réécriture d'URL dans la config de PluXml et de désactiver le plugin MyBetterUrl, puis dans /etc/osync/swip.conf, d'exclure de la synchro les fichiers :
RSYNC_EXCLUDE_PATTERN="parametres.xml;plugins.xml"
- Pour ne pas envoyer d'email avec les logs des synchro, commenter dans /etc/osync/monste.conf :
#DESTINATION_MAILS="your@alert.tld"
Mais attention, les réglages ci-dessus méritent d'être mieux compris et affinés car j'ai observé des effets indésirables sur les droits des fichiers et sur la réappartition de fichiers supprimés...
A part ça ça marche
Source : https://github.com/deajan/osync