
Security News
The Hidden Blast Radius of the Axios Compromise
The Axios compromise shows how time-dependent dependency resolution makes exposure harder to detect and contain.
remotee-sync
Advanced tools
#RemotEE Sync
remotee-sync is a CLI tool that imports remote ExpressionEngine databases into your local. It assumes you are using MAMP to control your environments.
npm install -g remotee-sync
remotee-sync --ssh=project-staging
project-staging in this example would be your ssh-config alias. You could also
use staging@server.com if you don't have an ssh-config set up.--ssh Pass in an ssh config identify or pass in an username@server.
Either this or an --env is required. Example: --ssh=test-client
--env Pass in an environment specified in your remotee-sync.json file in an
ssh object. Example: --env=production. Either this or --ssh is
required. Note: this is required when you have multiple environments
More on that below
-s, --save Specify that the file should be saved in addition to being imported
--location Pass in a location for the database sql file to be saved if the
-s flag is enabled or if save is set to yes in the remotee-sync.json
file. Example: --location=~/Documents/Sites/Test-Project.
If there are spaces are in the folder name ensure that it is
escaped properly: ~/Location\\ \\(Far\\ Far\\ Away\\)/
--file Pass in a name for the file that will be saved with passing in
-s flag or specifying save to yes in the remotee.json file
--dry Does a dry run of the remotee-sync process, but doesn’t actually
perform the operation. Is best combined with the -v (verbose)
flag. Set only the flag, no need for a --dry=
--sync Allows the ability to sync the database into your local or not.
Set this to --sync=no to run an export of a remote database
but to not import it into your local. This must be combined with
the -s or --save flag. Otherwise if you set --sync=no
remoteee-sync will error out. You should also specify a location
to save by the location flag or in a remotee-sync.json file.
-v, --verbose Verbose mode.
--notifications Set to ‘no’ if you do not want system notifications for
remotee-sync when the process ends because of a successful sync
or because of an error. Ex: --notifications=no
--port Allow a specific port to be specified for the command. Defaults
to 3306.
{
"ssh" : {
"staging" : "test-staging",
"production" : "test-prod"
},
"location": "~/Location\\ \\(Far\\ Far\\ Away\\)/",
"file" : "test-db.sql",
"save" : "yes",
"database" : {
"local" : {
"hostname" : "localhost",
"username" : "test_eeuser",
"password" : "voAt1oOwv",
"database" : "test_eedb"
},
"production" : {
"hostname" : "123.456.789",
"username" : "prod_eeuser",
"password" : "voAt1oOwv",
"database" : "prod_eedb"
}
}
}
mysqlPathQ: Remote is spelled with one E right?
A: Yessss. However since this was built with ExpressionEngine in mind, I used the EE naming convention used with other plugins and tools associated with EE.
Q: What makes this tailored to ExpressionEngine?
A: When looking for the database information RemotEE Sync looks for a database.php file and parses out a PHP file for credentials. It looks for formatting specific to ExpressionEngine. You could just specify the database information in a remotee-sync.json file, but if you do so, it is recommended to not commit that file and add it to your git ignore.
Q: Couldn't I just do this from the command line as this Stack Overflow answer prescribes?
A Yes, that is essentially what this does, but it packages it all together for you. This makes it so you don't have to type in the user name, database name, and password every time and also allows you to drop this into any project and run one command to sync.
Q This seems like a lot for a relatively simple thing that I could do manually
A Perhaps... However, I know I'm always nervous when importing a database that I won't import over a production database or delete production on accident. Why not #AutomateAllTheThings? If you're looking to get started quickly, jump to the TL;DR section.
npm run testnpm install -g remotee-sync
RemotEE Sync is released under the MIT License.
FAQs
Import remote ExpressionEngine databases into your local
We found that remotee-sync demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
The Axios compromise shows how time-dependent dependency resolution makes exposure harder to detect and contain.

Research
A supply chain attack on Axios introduced a malicious dependency, plain-crypto-js@4.2.1, published minutes earlier and absent from the project’s GitHub releases.

Research
Malicious versions of the Telnyx Python SDK on PyPI delivered credential-stealing malware via a multi-stage supply chain attack.