deajan / osync

A robust two way (bidirectional) file sync script based on rsync with fault tolerance, POSIX ACL support, time control and near realtime sync
http://www.netpower.fr/osync
BSD 3-Clause "New" or "Revised" License
924 stars 99 forks source link

silently fail if already running cron job? #240

Open jmcisvt opened 2 years ago

jmcisvt commented 2 years ago

I would like to run osync every 5 minutes to sync local and remote changes. But I also need it to run for very long times to handle occasional huge files. My understanding is that daemon/server mode only picks up local changes. So that won't work.

I figured I could run it as a cron job every five minutes. But if it is already running I want to sliently fail and let the first process finish. I don't want to use the MAX RUNTIME timeout and keep interrupting it every 4 min 59 sec. Is there a way I can do this?

deajan commented 2 years ago

There are two ways you can achieve what you want:

  1. Run osync target helper daemon on remote so local osync gets notified when remote file changes occur.
  2. Use the following config to make sure to exit osync if another osync instance is running: LOCAL_RUN_BEFORE_CMD="ps aux | grep \"[o]sync\" || exit 0"

If those don't fit, I could still add a EXIT_IF_OSYNC_ALREADY_RUNNING parameter

jmcisvt commented 2 years ago

I just disovered the MAX_WAIT parameter. I can run in daemon mode and use MAX_WAIT set to 300 right? I think that will do what I want.

What is an osync target helper daemon? I did not see this in the documentation.

deajan commented 2 years ago

Documentation isn't updated at the moment for v1.3RC2 which is the git master version. osync target helper daemon is a service installed on targets in order to detect FS changes and notify initiator which will trigger a sync run.