Opinionated rsync wrapper written in javascript.
npm install --global synd
Create a ~/synd.config.js
file in your home directory with a configuration preset for your project.
module.exports = {
// remote sync
presetName: {
src: '/Users/yourUserName/path/to/a/project/to/sync/',
dest: '/home/yourUserName/path/to/dir/to/sync/to',
server: 'your.company.org'
},
// local sync
anotherPreset: {
src: '/Users/yourUserName/path/to/another/project/to/sync/',
dest: '/Users/yourUserName/path/to/another/dir'
}
};
To start sync process run the following
synd presetName
Name | Type | Default | Description |
---|---|---|---|
src |
{String} |
Absolute path to the directory you want to sync | |
dest |
{String} |
Absolute path to the directory you want to sync to | |
server |
{String} |
Name of the server you want to sync to | |
initSync |
{Boolean} |
false |
Enables/Disables syncing upon program start |
watch |
{Boolean} |
true |
Enables/Disables watching for file/directory changes |
globalGitignore |
{Boolean} |
false |
Enables/Disables using global .gitignore for syncing |
localGitignore |
{Boolean} |
false |
Enables/Disables using local .gitignore for syncing |
showRsyncCommand |
{Boolean} |
false |
Enables/Disables displaying rsync command upon start |
parseOutput |
{Boolean} |
false |
Enables/Disables attempting to parse rsync output |
include |
{String[]} |
false |
Paths to include |
exclude |
{String[]} |
false |
Paths to exclude |
if ends with a slash it's contents will be synced into dest
directory.
Example: '/users/anon/path/to/project/'
Optional. If you want to sync to a remote machine. You need to specify the server name.
Example: 'machine.host.org'
By default synd
waits for a file change to start syncing, set to true
to start syncing upon running synd <presetName>
.
Example: true
You can use your project and global gitignore to generate rsync
filter file to avoid syncing not wanted files.
Example: true
Synd
uses rsync
under the hood to sync your files. If you want to see what commands it generates set it to true.
Example: true
Use this option to specify additional rules to include files to syncing process which otherwise would not be synced.
Example: ['**/test']
Use this option to specify additional rules to exclude files from syncing process which otherwise would be synced.
Example: ['**/.DS_Store', '**/node_modules']
After you run synd it will generate a filter file for your project and place it in ~/.synd/presetName.[hash].filter
. If file already exists synd will use it instead.
You can also see a list of all your presets by running
synd --list