https://github.com/antonk52/synd
Opinionated rsync wrapper that respects gitignore files
https://github.com/antonk52/synd
cli javascript rsync synd
Last synced: 9 months ago
JSON representation
Opinionated rsync wrapper that respects gitignore files
- Host: GitHub
- URL: https://github.com/antonk52/synd
- Owner: antonk52
- Created: 2019-05-30T23:43:58.000Z (about 7 years ago)
- Default Branch: main
- Last Pushed: 2025-04-05T09:04:32.000Z (over 1 year ago)
- Last Synced: 2025-09-25T18:25:36.271Z (9 months ago)
- Topics: cli, javascript, rsync, synd
- Language: TypeScript
- Homepage:
- Size: 764 KB
- Stars: 6
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
- Changelog: CHANGELOG.md
Awesome Lists containing this project
README
# Synd
[](https://badge.fury.io/js/synd)
[](https://github.com/antonk52/synd/actions)
[](https://opensource.org/licenses/MIT)
[](https://packagephobia.now.sh/result?p=synd)
[](https://coveralls.io/github/antonk52/synd?branch=master)
Opinionated rsync wrapper written in javascript.
## Install
```sh
npm install --global synd
```
## Usage
Create a `~/synd.config.js` file in your home directory with a configuration preset for your project.
```js
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
```
## Preset Options
|Name | Type | Default | Description |
|--------------------------------------------|--------------|---------|--------------------------------------------------------|
|**[`src`](#src)** | `{String}` | | Absolute path to the directory you want to sync |
|**[`dest`](#dest)** | `{String}` | | Absolute path to the directory you want to sync to |
|**[`server`](#server)** | `{String}` | | Name of the server you want to sync to |
|**[`initSync`](#initSync)** | `{Boolean}` | `false` | Enables/Disables syncing upon program start |
|**[`watch`](#watch)** | `{Boolean}` | `true` | Enables/Disables watching for file/directory changes |
|**[`globalGitignore`](#gitignores)** | `{Boolean}` | `false` | Enables/Disables using global `.gitignore` for syncing |
|**[`localGitignore`](#gitignores)** | `{Boolean}` | `false` | Enables/Disables using local `.gitignore` for syncing |
|**[`showRsyncCommand`](#showRsyncCommand)** | `{Boolean}` | `false` | Enables/Disables displaying `rsync` command upon start |
|**[`parseOutput`](#parseOutput)** | `{Boolean}` | `false` | Enables/Disables attempting to parse `rsync` output |
|**[`include`](#include)** | `{String[]}` | `false` | Paths to include |
|**[`exclude`](#exclude)** | `{String[]}` | `false` | Paths to exclude |
### `src`
if ends with a slash it's contents will be synced into `dest` directory.
Example: `'/users/anon/path/to/project/'`
### `server`
Optional. If you want to sync to a remote machine. You need to specify the server name.
Example: `'machine.host.org'`
### `initSync`
By default `synd` waits for a file change to start syncing, set to `true` to start syncing upon running `synd `.
Example: `true`
### `gitignores`
You can use your project and global gitignore to generate `rsync` filter file to avoid syncing not wanted files.
Example: `true`
### `showRsyncCommand`
`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`
### `include`
Use this option to specify additional rules to include files to syncing process which otherwise would not be synced.
Example: `['**/test']`
### `exclude`
Use this option to specify additional rules to exclude files from syncing process which otherwise would be synced.
Example: `['**/.DS_Store', '**/node_modules']`
## Notes
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
```