Upload your files to remote host after every change. Both SCP/SFTP and FTP are supported.
Atom Remote Sync 2
Use SFTP and FTP features inside Atom, having the ability to upload and download files directly from inside Atom.
Remote Sync PRO is a fork of the remote-sync project which was abandoned in 2016. Remote Sync PRO fixes bugs and compatibility issues present in remote-sync, and will be bringing new features in the near future.
Remote Sync 2 is a fork of the remote-sync-pro project which seems to be unmaintaied since 2018.
New
- Does a local/remote MD5 before diff, to avoid opening a useless external tool (TBD: make it an option in config)
Features
- Uploading/downloading files to/from the server
- Displaying diffs between the local and remote files with your favourite diff tool
- Monitoring files for external changes and automatically uploading - useful for scss/less compiling
- Support for both SCP/SFTP and FTP
Extras
- Toggle for uploading changes automatically when you save a file
- Define files to be monitored to be automatically monitoring
- Set difftoolCommand in AtomSettingView of
remote-sync
-- The path to your diff tool executable - Toggle the logs for extra information
- Toggle the hiding and showing of the log panel
- Set custom config name
- Support for native Atom Notifications
Installation
You can install this like any other Atom package, with one of these methods:
Via Atom (recommended)
-
Open Atom
-
Open settings
- ctrl+, | cmd+,
- Edit > Preferences (Linux)
- Atom > Preferences (OS X)
- File > Preferences (Windows)
-
Select "Install" tab
-
Search for
remote-sync
and click install
APM - terminal
- Open a terminal
- Run
apm install remote-sync
Manually
- Download / clone this repository to your
~/.atom/packages/
- Enter the directory
- Run
apm install
Usage
You can configure Remote Sync PRO using multiple methods:
Existing project
Via Atom (recommended)
- Right click main project folder
- Navigate to Remote Sync PRO > Configure
- Fill in the details / select options
- Hit save
Manually
- Add a file named
.remote-sync.json
to your project - Add/configure with one of the contents below
- Save the file
From scratch, with a remote server
- Follow setups for creating existing project - see above
- Right click main project folder
- Navigate to Remote Sync PRO > Download folder
Options
The .remote-sync.json
in your project root will use these options:
Option | Datatype | Default | Details |
---|---|---|---|
transport |
String | "" | scp for SCP/SFTP, or ftp for FTP |
hostname |
String | "" | Remote host address |
port |
String | "" | Remort port to connect on (typically 22 for SCP/SFTP, 21 for FTP) |
username |
String | "" | Remote host username |
password |
String | "" | Remote host password |
keyfile |
String | "" | Absolute path to SSH key (only used for SCP) |
secure |
Boolean | false | Set to true for both control and data connection encryption (only used for FTP) |
passphrase |
String | "" | Passphrase for the SSH key (only used for SCP) |
useAgent |
String | false | Whether or not to use an agent process (only used for SCP) |
target |
String | "" | Target directory on remote host |
source |
String | "" | Source directory relative to project root |
ignore |
Array | [".remote-sync.json",".git/**"] | Array of minimatch patterns of files to ignore |
watch |
Array | [] | Array of files (relative to project root - starting with "/") to watch for changes |
uploadMirrors |
Array | [] | Transport mirror config array when upload |
uploadOnSave |
Boolean | false | Whether or not to upload the current file when saved |
saveOnUpload |
Boolean | false | Whether or not to save a modified file before uploading |
useAtomicWrites |
Boolean | false | Upload file using a temporary filename before moving to its final location (only used for SCP) |
deleteLocal |
Boolean | false | Whether or not to delete the local file / folder after remote delete |
Example configuration's
SCP example:
{
"transport": "scp",
"hostname": "10.10.10.10",
"port": 22,
"username": "vagrant",
"password": "vagrant",
"keyfile": "/home/vagrant/.ssh/aws.pem",
"passphrase": "your_passphrase",
"target": "/home/vagrant/dirname/subdirname",
"ignore": [
".remote-sync.json",
".git/**"
],
"watch":[
"/css/styles.css",
"/index.html"
]
}
useAgent
example:
SCP {
"transport": "scp",
"hostname": "10.10.10.10",
"port": 22,
"username": "vagrant",
"useAgent": true,
"target": "/home/vagrant/dirname/subdirname",
"ignore": [
".remote-sync.json",
".git/**"
],
"watch":[
"/css/styles.css",
"/index.html"
]
}
FTP example:
{
"transport": "ftp",
"hostname": "10.10.10.10",
"port": 21,
"username": "vagrant",
"password": "vagrant",
"target": "/home/vagrant/dirname/subdirname",
"ignore": [
".remote-sync.json",
".git/**"
],
"watch":[
"/css/styles.css",
"/index.html"
]
}
Upload mirrors example:
{
"transport": "scp",
"hostname": "10.10.10.10",
"port": 22,
"username": "vagrant",
"password": "vagrant",
"keyfile": "/home/vagrant/.ssh/aws.pem",
"passphrase": "your_passphrase",
"target": "/home/vagrant/dirname/subdirname",
"ignore": [
".remote-sync.json",
".git/**"
],
"watch":[
"/css/styles.css",
"/index.html"
],
"uploadMirrors":[
{
"transport": "scp",
"hostname": "10.10.10.10",
"port": 22,
"username": "vagrant",
"password": "vagrant",
"keyfile": "/home/vagrant/.ssh/aws.pem",
"passphrase": "your_passphrase",
"target": "/home/vagrant/dirname/subdirname_one",
},
{
"transport": "ftp",
"hostname": "10.10.10.10",
"port": 21,
"username": "vagrant",
"password": "vagrant",
"target": "/home/vagrant/dirname/subdirname_two",
}
]
}
Diff tool command
You can use any GUI app which takes two arguments without parameters like meld or gvimdiff.
If you want to use app with parameters or console app, try this:
-
code (Visual Studio Code)
create shell script
atom-diff-code
in/usr/local/bin/
with command#!/bin/bash code -d -n --disable-extensions $1 $2
Then set
atom-diff-code
in Diff tool command setting in remote-sync in atom -
vim in Ubuntu:
atom-diff-vimdiff
#!/bin/bash gnome-terminal -x bash -c "vimdiff $1 $2"
-
diff in Ubuntu:
atom-diff-diff
#!/bin/bash gnome-terminal -x bash -c "diff $1 $2; exec bash"