Skip to main content

A simple tool for synchronizing local project (files) to remote server.

Project description

Project Sync
=======================

## Introduction

#### What

A simple tool based on `rsync` for uploading / synchronizing local project
(files) to remote server.

#### Who
For people who want to work on a project locally (on your laptop) and sync the files
to remote server. For example, developing locally and executing remotely.

#### Why
`rsync` is flexible and powerful, but flags and options are way too complex for
memorizing.

## Installation

```
$ pip install project-sync
```

This will install a command line tool `psync`, the usage of which is described below.

## Usage


1. Run `psync` under project root to generate initial config file (`.psync`).
```
$ cd ~/Code/demo_project
$ psync
```
It will generate the config interactively:

```
You are not in a project (no .psync found)!
Generate .psync to current directory (/Users/lazywei/Code/demo_project) [Y/n]? [Y]: Y
Config will be generated at /Users/lazywei/Code/demo_project:
---
Remote path [~/remote/path]: ~/remote/path
SSH host [ssh_host]: aws_playground
SSH username or enter '-' to skip [ssh_user]: -
Files or folders to ignore (separated by space) [ ]: .git .psync
ignores:
- .git
- .psync
remote: ~/remote/path
ssh:
host: aws_playground
username: null

---
Project root is now: /Users/lazywei/Code/demo_project
```

2. Run `psync` under any nested subfolders of the project root to sync the project.
```
$ psync
Running:
rsync -e ssh -ruaz --exclude .git --exclude .psync --rsync-path mkdir -p ~/remote/path && rsync /Users/lazywei/Code/demo_project aws_playground:~/remote/path
--- Sync Finished ---

$ ssh aws_playground "ls -a ~/remote/path/demo_project"
. .. README
```

3. Run `psync watch` to watch any modification under the project root and perform sync automatically.

### Usage Demo

![Usage Demo](demo-usage.gif)

### Config Options

The config (`.psync`) is a YAML file. You can edit it after initial generating.

- `ignores`: an array contains all the files for folders to exclude by `rsync`
- `ssh`:
- `host`: SSH Host
- `username`: SSH username, `null` to ignore this (for example, when you set this in `~/.ssh/config` already)
- `remote`: where to sync on remote server

## Contributions

This project is currently in WIP stage; any discussion, bug report and PR are more than welcome.

## License

psync is available under the MIT license. See the LICENSE file for more info.


Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
project_sync-0.2.0-py2.py3-none-any.whl (7.6 kB) Copy SHA256 hash SHA256 Wheel py2.py3 Jan 13, 2017
project-sync-0.2.0.tar.gz (4.6 kB) Copy SHA256 hash SHA256 Source None Jan 13, 2017

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page