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