Skip to content

ivakyb/autorsync

Repository files navigation

AutoRSync GitLab GitHub

AutoRSync is a live file syncronization utility written in bash using rsync and fswatch. It is able to monitor changes and synchronize files rapidly from one host to another.
Briefly, this Bash script is a conglomerate of fswatch|rsync.

Why

This utility was created as alternative to Docker volumes because of very poor performance on MacOS. It is very useful when editing code on host but build and run inside a Docker container.
On MacOS and Windows Docker volumes are very slow because of virtualization. Writing files in docker container back to host's filesystem gives huge performance penalty – about 45-60 times slower than native.

AutoRSync gives ability to edit files on one host and keep updated mirror in another one. Comparing to docker-volumes autorsync scheme consumes two times more space, but half-hundred times faster.

Usage

The syntax is similar to rsync

autorsync /local/path/ remote_host:/target/path/

Trailing slash in SRC is important. See stackoverflow.com.

ToDo write here more detailed examples and explanation

See also usecase-docker.md about how to configure Docker container.

Prerequisties

  • bash version 4 or later,
  • rsync version 3 or later,
  • fswatch,
  • ssh,
  • perl (todo rm dependancy).
  • pgrep and pkill from package psmisc
brew install bash coreutils rsync fswatch perl findutils gnu-sed

To run ./test-autorsync.bash also need brew install tree pstree

Installation

Manual

( cd /usr/local/bin && curl -LO https://gitlab.com/kyb/autorsync/raw/artifacts/master/autorsync && chmod +x autorsync ; ) 

or use download link

NPM (node package manager)

npm install --global autorsync

or the same npm i -g autorsync

ToDo

Issues/Boards

Alternatives

  • docker-sync
  • Docker NFS volume (still slow)
  • use SAMBA (not fast enough to build Linux)

Inspired by article How to speed up shared file access in Docker for Mac by Sebastian Barthel

MIT License
Copyright (c) 2019 Ivan Kuvaldin aka "kyb"

About

Life file synchronization between two hosts using rsync and fswatch

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published