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.
- 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
- 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-pro
-- 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
You can install this like any other Atom package, with one of these methods:
-
Open Atom
-
Open settings
- ctrl+, | cmd+,
- Edit > Preferences (Linux)
- Atom > Preferences (OS X)
- File > Preferences (Windows)
-
Select "Install" tab
-
Search for
remote-sync-pro
and click install
- Open a terminal
- Run
apm install remote-sync-pro
- Download / clone this repository to your
~/.atom/packages/
- Enter the directory
- Run
apm install
You can configure Remote Sync PRO using multiple methods:
- Right click main project folder
- Navigate to Remote Sync PRO > Configure
- Fill in the details / select options
- Hit save
- Add a file named
.remote-sync.json
to your project - Add/configure with one of the contents below
- Save the file
- Follow setups for creating existing project - see above
- Right click main project folder
- Navigate to Remote Sync PRO > Download folder
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 |
{
"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"
]
}
{
"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"
]
}
{
"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"
]
}
{
"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",
"ignore": [
".remote-sync.json",
".git/**"
]
},
{
"transport": "ftp",
"hostname": "10.10.10.10",
"port": 21,
"username": "vagrant",
"password": "vagrant",
"target": "/home/vagrant/dirname/subdirname_two",
"ignore": [
".remote-sync.json",
".git/**"
]
}
]
}
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-pro 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"