I'd like to automatically run a one way sync between two local directories using rsync. Meaning when a change is detected in a file of /dir1 or its subdirs, the following command should run:
rsync -rtuv /dir1 /dir2
How can I go about achieving this with fswatch?
Is it possible to supply arguments for rsync to only copy the actual files that were changed, as given by the fswatch events?
alias run_rsync='rsync -azP --exclude ".*/" --exclude ".*" --exclude "tmp/" ~/Documents/repos/my_repository username@host:~'
run_rsync; fswatch -o . | while read f; do run_rsync; done
Second line runs run_rsync once unconditionally and then - on each change in current directory (or specify exact path instead of .)
Rsync options:
You will need fswatch:
brew install fswatch
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With