
Security News
Re-Enabled GitHub Actions Expose Thousands of Repositories to Mini Shai-Hulud
Two compromised GitHub Actions were re-enabled with malicious tags intact, exposing thousands of downstream repositories to Mini Shai-Hulud.
ftp-deploy-log
Advanced tools
Ftp a folder from your local disk to an ftp destination. Does not delete from destination directory. Logs file modification dates to avoid uploading duplicate file. Derived from ftp-deploy which was derived from grunt-ftp-deploy
A Node.js package to help with deploying code. Ftp a folder from your local disk to a remote ftp destination. Does not delete from destination directory.
npm install ftp-deploy-log
(Need sftp? Check out sftp-upload)
I create a file - e.g. deploy.js - in the root of my source code and add a script to its package.json so that I can npm run deploy.
"scripts": {
"deploy": "node deploy"
},
The most basic usage (stops uploading when an error occurs):
var FtpDeploy = require('ftp-deploy-log');
var ftpDeploy = new FtpDeploy();
var config = {
username: "username",
password: "password", // optional, prompted if none given
host: "ftp.someserver.com",
port: 21,
localRoot: __dirname + "/local-folder",
remoteRoot: "/public_html/remote-folder/",
include: ['build/version.txt'],
exclude: ['.git', '.idea', 'tmp/*', 'build/*'],
useLog: true, // set to false if you do not want to track file modified dates to ignore previously // pushed versions of files
staging: true //set to true if you want to push to the alternate env
}
ftpDeploy.deploy(config, function(err) {
if (err) console.log(err)
else console.log('finished');
});
To be notified of what ftpDeploy is doing:
ftpDeploy.on('uploading', function(data) {
data.totalFileCount; // total file count being transferred
data.transferredFileCount; // number of files transferred
data.percentComplete; // percent as a number 1 - 100
data.filename; // partial path with filename being uploaded
});
ftpDeploy.on('uploaded', function(data) {
console.log(data); // same data as uploading event
});
To continue uploading files even if a file upload fails:
config.continueOnError = true;
ftpDeploy.deploy(config, function(err) {
if (err) console.log(err) // error authenticating or creating/traversing directory
else console.log('finished');
});
ftpDeploy.on('upload-error', function (data) {
console.log(data.err); // data will also include filename, relativePath, and other goodies
});
I use proftpd to create a simple ftp server at test/remote and then run the script at node ./test/test
MIT
FAQs
Ftp a folder from your local disk to an ftp destination. Does not delete from destination directory. Logs file modification dates to avoid uploading duplicate file. Derived from ftp-deploy which was derived from grunt-ftp-deploy
We found that ftp-deploy-log 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.

Security News
Two compromised GitHub Actions were re-enabled with malicious tags intact, exposing thousands of downstream repositories to Mini Shai-Hulud.

Research
/Security News
A malicious Firefox extension fetches its payload after installation to evade detection, steal Google session cookies, and automate account takeover.

Research
/Security News
The compromise affects MemTensor's MemOS, an open source memory framework for large language models (LLMs) and AI agents. Both npm package @memtensor/memos-cloud-openclaw-plugin and the PyPI package MemoryOS are compromised. They drop cross-platform Go binaries that exfiltrate developer secrets.