使用Grunt和rsync将远程文件夹与本地文件夹同步

时间:2014-07-15 16:49:06

标签: deployment ssh gruntjs web-deployment rsync

我已成功安装Grunt Rsync https://github.com/jedrichards/grunt-rsync并成功将本地文件夹“同步”到远程文件夹。

rsync: {
    options: {
        args: ["--verbose"],
        recursive: true
    },
    stage: {
        options: {
            src: "/Applications/MAMP/htdocs/barestrap-wp/library/uploads",
            dest: "shared/library/uploads",
            host: "barestrap@host.com",
            syncDestIgnoreExcl: true
        }
    }
},

终端的成功响应是:

Shell command was: rsync /Applications/MAMP/htdocs/barestrap-wp/library/uploads barestrap@host.com:shared/library --rsh ssh --recursive --delete --verbose

我的“问题”是它完全覆盖了SSH主机中的“uploads”文件夹,即barestrap@host.com:shared/library/uploads被删除。我不确定如何从选项中删除--delete

我要做的是1)确保SSH uploads文件夹包含来自本地环境的所有文件, 2)本地环境包含来自远程的所有文件SSH环境。

这个笨拙的任务在第一个目标中取得了部分成功,但我不确定如何实现第二个目标 - 换句话说:

$ rsync barestrap@host.com:shared/library /Applications/MAMP/htdocs/barestrap-wp/library/uploads

非常感谢任何见解。

谢谢!

1 个答案:

答案 0 :(得分:1)

您的罪魁祸首是您的选项中的syncDestIgnoreExcl:true设置。从第32期报告到grunt-rsync的对话中,该设置必须为false,以防止目标文件夹清除源目录中不存在的文件。