利用nodejs监控文件变化并使用sftp上传到服务器-阿里云开发者社区

开发者社区> 技术小胖子> 正文

利用nodejs监控文件变化并使用sftp上传到服务器

简介:
+关注继续查看

首先,我们使用npm 安装两个别人封装好的模块。

npm install ssh2-sftp-client
npm install gaze

第一个模块的作用是sftp上传文件,

第二个模块的作用就是监听文件变化了。当然,你也可以采用node自带fs模块。

这两个模块的用法在这里:ssh2-sftp-client gaze

安装好了以后,第一步就是监听文件的变化了,由于我的文件已经使用webpack构建好了,所以后面只是文件变化,不会有文件增加,所以这里只需要使用changed就可以了,其他的用法请参考上面的链接,都大同小异

复制代码

gaze(['你的文件路径/*.*','还可以使用数组的方式监听多个文件夹/app.js'], function(err, watcher) {    let watched = this.watched();    //监听文件的变化
    this.on('changed', (filepath) => {        //romotePath是我文件的远程位置
        let romotePath = '/root' + filepath.substr(15);        //put为上传文件的函数,下面会讲            put(filepath,romotePath);
        console.log(filepath + ' was changed');

    });
});

复制代码

然后就开始写我们的上传文件的函数

复制代码

function put(localPath,romotePath){
    let sftp = new Client();
    sftp.connect({
        host: '你的服务器地址',
        port: '端口,没改过的话是22',
        username: '连接的用户名',
        password: '密码'
    }).then(() => {        return sftp.put(localPath,romotePath);
    }).then(() =>{
        console.log("上传完成");
    }).catch((err) => {
        console.log(err, 'catch error');
    });
}

复制代码

好了,别忘了在我们的文件开始的地方可是要引入模块的。

let Client = require('ssh2-sftp-client');
let gaze = require('gaze');

接下来我们来实验一下。来到我们的文件夹webpack一下

果然可以看到已经修改并且上传完成了。上传需要时间,请耐心等待。

来到我们的服务器,果然最近的修改时间已经变成现在了。

从此以后我终于不用一个个上传了。每次要修改直接。打开一个窗口开启这个脚本,就可以愉快的编码了。


      本文转自zsdnr  51CTO博客,原文链接:http://blog.51cto.com/12942149/1929369,如需转载请自行联系原作者








版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
node.js获取图片文件的真实类型
遇到一个需求:假定有一个图片文件,真实的类型为jpg,而有人偷懒把jpg直接复制一张,存为同名的png文件,这样在as3读取文件时不会遇到问题,但手机c++在读取文件时却遇到问题了 - -!   现在就需要写一个程序,遍历所有文件夹下的文件,查找文件格式“不正常”的文件。
1193 0
SpringBoot-13-插曲之Node文件重命名+自动生成json对象
遇到的问题:图片太多,使用起来挺麻烦 [1]有很多图片放服务器里,怎么能更好的管理,更方便拿到图片呢? [2]想用json 以一个对象数组的形式保存这些图片:以[{img:"图片名"},{img:"图片名"}....]形式 [3]虽说想法是很好,但不可能一条一条自己写吧,好歹咱也是21世纪敲代码的人。
818 0
shell使用lftp连接ftp和sftp,并可以指定私钥
lftp连接ftp在脚本中可以 lftp -c "open username:password@host:port; ls /Friso/20180822/click/mobile/SUCCESS | wc -l" lftp usename:password@host:port -e "ls /Fr...
2342 0
阿里云AMQP NodeJS SDK使用Demo
消息队列RabbitMQ版是阿里云消息队列(MQ)团队基于AMQP 0-9-1(AMQP 0.91)标准协议研发的分布式、高吞吐、低延迟、高可扩展的云消息队列服务。消息队列RabbitMQ版完全兼容开源RabbitMQ社区、开箱即用、无需部署、免运维,帮助您快速上云。阿里云提供全托管服务,更专业、更可靠、更安全。本文主要演示如何使用开源NodeJS SDK连接阿里云AMQP 消息服务,实现消息收发。
291 0
使用http-server搭建静态文件服务器
本文介绍几种搭建静态文件服务器的方式,着重介绍基于node的http-server用法。
1677 0
使用阿里云容器服务 ACK 和文件存储 NAS 构建现代化企业应用
大规模构建容器化应用程序需要高可靠、弹性、共享且支持高性能数据处理的数据存储解决方案。通过迁移到公共云,企业可以获得更高的生产效率和更低的成本。阿里云文件存储可以为现代化应用提供强健的数据稳定性,可靠性,高性能和在线扩展能力。
1169 0
13262
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载