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 details)

Uploaded Source

Built Distribution

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

Uploaded Python 2 Python 3

File details

Details for the file project-sync-0.2.0.tar.gz.

File metadata

File hashes

Hashes for project-sync-0.2.0.tar.gz
Algorithm Hash digest
SHA256 b881ad688e7ceab2ec705944284c6d48d84eae62346881c23c3fc894e3ecd45d
MD5 5a3ca629ad6e6cdb8c580f03ae517e31
BLAKE2b-256 ff54652626518189530cb798bca368fcc1d4e3e822b7b10283e616c5f85ab318

See more details on using hashes here.

File details

Details for the file project_sync-0.2.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for project_sync-0.2.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 008c761ae5c9944d75c95d368dcc3f6dfeb27e4e3411f7df5e724d9425ba7aaa
MD5 b595c779f03979b5cfc39b00aa5420d9
BLAKE2b-256 ebdb0742ccecb91dc8caf09bd37a1acbb81b04d364f0fa19b34a6ab9d0a41bde

See more details on using hashes here.

Supported by

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