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.

Source Distribution

project-sync-0.2.0.tar.gz (4.6 kB view hashes)

Uploaded Source

Built Distribution

project_sync-0.2.0-py2.py3-none-any.whl (7.6 kB view hashes)

Uploaded Python 2 Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page