Watch and sync files from client to server using NodeJS Socket.io.
Simple to configure - doesn't use SSH, just a secret text.
A single server can be connected to from multiple clients.
Install it both on client and the server:
npm install socket-file-sync
sfs [mode] <[options]>
-
mode
[string](required)
One of two:server
s
Host where files are uploaded toclient
c
Host where files are uploaded from, and watched for changes
This can also be provided as as a switch:
--mode server
(instead of the 1st argument) -
secret
[string](required)
Secret to use for authentication.
client
related options:
cwd
[string](default:process.cwd())
Current directory (on client) where files are watched onserver
[string](required)
The server address to which the client connects toserverDir
[string](required)
Base dir on the server w.r.t. to which files uploaded are written to
Common to both: These settings are common to both server and client and the roles of remotes are interchangeable - any one can send/receive a file.
-
twoWay
[boolean]
Enable two-way sync - server also watches for and pushes the file changes from its end.Note: With this enabled you may see "Skipping copying... Same contents" warnings which are an unfortunate by-product of preventing the file-watchers running on both ends to go in a feedback loop of re-sending the same file over and over again.
It needs to be enabled by both the server and the client.
-
deleteOnRemote
[boolean]
Enable deleting a file on the remote. The remote needs to havedeleteByRemote
enabled. -
deleteByRemote
[boolean]
Enable the remote to delete a local file.
Note: Necessary options are prompted if not provided.
Config is stored in two places:
-
~/.socket-file-sync
Main config that applies across all projects -
<current-dir>/.socket-file-sync
An optional per-project config whose values override those in the main one.
-
On Server:
sfs server
-
On Client:
sfs client --server my-linode.com --server-dir ~/project