S3 Bucket Backup Plan

This is a flow designed to be a one click Amazon S3 Bucket backup plan. This flow will perform automatic ZIP and backup of .node-red folder, mongodb database, and a ~/www directory for front-end website.

You may need to modify.

Prerequisites: -Linux Ubuntu/Debian -ZIP installed via: apt-get install zip -s3cmd installed via: apt-get install s3cmd -You will need an AWS account setup with S3, and a TOKEN and SECRET key created for accessing the S3 bucket.

[{"id":"c6c2d47d424fddb5","type":"inject","z":"9918edf8.89827","g":"786c34fd91aecdd7","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"00 12 * * *","once":false,"onceDelay":0.1,"topic":"","payloadType":"date","x":150,"y":740,"wires":[["60751df4b6982547"]]},{"id":"160d3d77d19aaba9","type":"exec","z":"9918edf8.89827","g":"786c34fd91aecdd7","command":"","addpay":"payload","append":"","useSpawn":"false","timer":"","winHide":false,"oldrc":false,"name":"ZIP","x":550,"y":740,"wires":[["76d138786f086512"],[],[]]},{"id":"a3c428fc943fbf6e","type":"function","z":"9918edf8.89827","g":"786c34fd91aecdd7","name":"Attach flows.json s3 command line","func":"\n\nmsg.payload = \"s3cmd put /home/\" + msg.linux_user + \"/backup-www.zip s3://\" + msg.bucket_name +  \"/backups/\" + msg.site_name + \"/\" + msg.newfile\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":220,"y":780,"wires":[["c131df8bb5f34278"]]},{"id":"c131df8bb5f34278","type":"exec","z":"9918edf8.89827","g":"786c34fd91aecdd7","command":"","addpay":"payload","append":"","useSpawn":"false","timer":"","winHide":false,"oldrc":false,"name":"S3 bucket out via S3cmd","x":490,"y":800,"wires":[["f8319c6ff92e2ea6"],[],[]]},{"id":"60751df4b6982547","type":"function","z":"9918edf8.89827","g":"786c34fd91aecdd7","name":"CONFIG","func":"\n\n//Change these to your settings:\nmsg.site_name = \"yoursite-project-name-goes-here\";\nmsg.bucket_name = \"s3-bucket-name-goes-here\";\nmsg.linux_user = \"ubuntu\";  //change this to your linux user account that has ~/www folder setup, with node-red\n\nmsg.newfile = msg.site_name + \"_\" + Date.now() + \".zip\";\n\n//Gets Node-Red and www file to zip file.\nmsg.payload = 'zip -r /home/' + msg.linux_user + '/backup-www.zip /home/' + msg.linux_user + '/www /home/' + msg.linux_user +'/.node-red -x \"/home/' + msg.linux_user + '/.node-red/node_modules/*\" \"/home/' + msg.linux_user + '/www/.git/*\" \"/home/'  + msg.linux_user + '/.node-red/.git/*\"';\nmsg.www_file_location = \"/home/\" + msg.linux_user +   \"/backup-www.zip\"\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":420,"y":740,"wires":[["160d3d77d19aaba9"]]},{"id":"8142caafe7c3049f","type":"exec","z":"9918edf8.89827","g":"786c34fd91aecdd7","command":"","addpay":true,"append":"","useSpawn":"false","timer":"","oldrc":false,"name":"S3 bucket out via S3cmd","x":870,"y":800,"wires":[["6360dc03db56a298"],[],[]]},{"id":"f6659e1a220626c7","type":"exec","z":"9918edf8.89827","g":"786c34fd91aecdd7","command":"","addpay":"payload","append":"","useSpawn":"false","timer":"","winHide":false,"oldrc":false,"name":"MongoDB Backup To File","x":330,"y":840,"wires":[["105621b067aa5a92"],[],[]]},{"id":"ab06ae7a77a123cc","type":"exec","z":"9918edf8.89827","g":"786c34fd91aecdd7","command":"","addpay":true,"append":"","useSpawn":"false","timer":"","oldrc":false,"name":"S3 bucket out via S3cmd","x":1070,"y":860,"wires":[[],[],[]]},{"id":"c9cf3151a5e033b9","type":"function","z":"9918edf8.89827","g":"786c34fd91aecdd7","name":"Attach flows.json","func":"\nmsg.newfile = msg.site_name + \"_db_\" + Date.now() + \".archive\";\n\n\n\nmsg.payload = \"s3cmd put /home/\" +  msg.linux_user  + \"/\" + msg.site_name +  \"-db.archive s3://\" +  msg.bucket_name    +\"/backups/\" +  msg.site_name + \"/database/\" + msg.newfile\n\n\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":690,"y":860,"wires":[["1406d1f5d0107688"]]},{"id":"76d138786f086512","type":"function","z":"9918edf8.89827","g":"786c34fd91aecdd7","name":"","func":"msg.filename = \"/home/\" + msg.linux_user + \"/backup-www.zip\"\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":680,"y":740,"wires":[["a3c428fc943fbf6e"]]},{"id":"f8319c6ff92e2ea6","type":"function","z":"9918edf8.89827","g":"786c34fd91aecdd7","name":"","func":"msg.payload = \"s3cmd put /home/\" + msg.linux_user + \"/backup-www.zip s3://\" + msg.bucket_name +  \"/backups/\" + msg.site_name +  \"/\" + msg.site_name + \"-latest.zip\"\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":680,"y":780,"wires":[["8142caafe7c3049f"]]},{"id":"6360dc03db56a298","type":"function","z":"9918edf8.89827","g":"786c34fd91aecdd7","name":"","func":"msg.payload  = \"mongodump --archive=/home/\" + msg.linux_user +  \"/\" + msg.site_name + \"-db.archive\"\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":140,"y":840,"wires":[["f6659e1a220626c7"]]},{"id":"105621b067aa5a92","type":"function","z":"9918edf8.89827","g":"786c34fd91aecdd7","name":"","func":"msg.filename = \"/home/\" + msg.linux_user +  \"/\"  + msg.site_name +  \"-db.archive\"\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":520,"y":860,"wires":[["c9cf3151a5e033b9"]]},{"id":"1406d1f5d0107688","type":"function","z":"9918edf8.89827","g":"786c34fd91aecdd7","name":"","func":"msg.filename = \"/home/\" + msg.linux_user +  \"/\"  + msg.site_name +  \"-db.archive\"\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":880,"y":860,"wires":[["ab06ae7a77a123cc"]]},{"id":"130e8798fa72ccd0","type":"comment","z":"9918edf8.89827","g":"786c34fd91aecdd7","name":"Triggers Backups to S3 Amazon","info":"","x":210,"y":740,"wires":[]}]

Flow Info

Created 3 years, 7 months ago
Rating: not yet rated

Owner

Actions

Rate:

Node Types

Core
  • comment (x1)
  • exec (x5)
  • function (x8)
  • inject (x1)

Tags

  • s3
  • bucket
  • backup
  • automatic
  • node-red
  • www
  • webserver
Copy this flow JSON to your clipboard and then import into Node-RED using the Import From > Clipboard (Ctrl-I) menu option