{
  "id": "oDayLpms5q2aFCKw",
  "name": "Automated AWS/Azure/GCP to MinIO Backup",
  "tags": [],
  "nodes": [
    {
      "id": "ca4e9fad-468f-4141-8db1-d9ea6bc90eb8",
      "name": "Sticky Note37",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -496,
        192
      ],
      "parameters": {
        "color": 7,
        "width": 176,
        "height": 240,
        "content": "### Configure the Schedule Trigger to follow your needs"
      },
      "typeVersion": 1
    },
    {
      "id": "f7e0603c-5526-474c-92e7-1620d7081209",
      "name": "Path Extraction",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        -32,
        272
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "Key"
      },
      "typeVersion": 1
    },
    {
      "id": "2dd2d8f6-e3e5-41fe-bd3a-84a12eb79a0d",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -464,
        304
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "triggerAtHour": 2,
              "triggerAtMinute": 15
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "a3fed4e9-8c60-458f-a8a4-761ead158277",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        352,
        192
      ],
      "parameters": {
        "color": 7,
        "width": 224,
        "height": 240,
        "content": "### Link your MinIO Bucket"
      },
      "typeVersion": 1
    },
    {
      "id": "9f655847-2033-472a-ba6b-feb5e0d23885",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -512,
        -160
      ],
      "parameters": {
        "color": 4,
        "width": 1072,
        "height": 304,
        "content": "## Automated Cloud Storage (AWS, Azure & GCP) to Local MinIO S3 Storage Backup with Scheduling\n\n### Want to backup data from AWS S3 Buckets, Azure Blob Containers or Google Cloud Storage Spaces ?\n\nYou'll need to configure an access to the Bucket/Container you need to backup (with endpoint url,  access key and secret key) as well as a MinIO service running on your network (to configure locally with a S3 Node, use the url based on your service IP (http://XXX.XXX.XXX.XXX:9000) and both access and secret keys aswell). \n\nAlso, in the credentials section of N8N, check 'Force Path Style' & 'Ignore SSL Issues (Insecure)' if MinIO is running on the local network.\n\nYou're using Proxmox VE ? Create a MinIO LXC Container : https://community-scripts.github.io/ProxmoxVE/scripts?id=minio, it's easier !"
      },
      "typeVersion": 1
    },
    {
      "id": "2b2a5de4-b886-496d-a13e-39feefc2da0f",
      "name": "List Objects",
      "type": "n8n-nodes-base.awsS3",
      "position": [
        -256,
        272
      ],
      "parameters": {
        "options": {
          "folderKey": "folder/"
        },
        "operation": "getAll",
        "returnAll": true,
        "bucketName": "yourBucket"
      },
      "credentials": {
        "aws": {
          "name": "<your credential>"
        }
      },
      "retryOnFail": true,
      "typeVersion": 2,
      "waitBetweenTries": 5000
    },
    {
      "id": "9bca3c5c-325f-4ccc-b4c5-6e33007de4d4",
      "name": "Download Objects",
      "type": "n8n-nodes-base.awsS3",
      "position": [
        192,
        272
      ],
      "parameters": {
        "fileKey": "={{ $json.Key }}",
        "bucketName": "yourBucket"
      },
      "credentials": {
        "aws": {
          "name": "<your credential>"
        }
      },
      "retryOnFail": true,
      "typeVersion": 2,
      "waitBetweenTries": 5000
    },
    {
      "id": "513c7183-9134-4ce5-bdf4-41713bb61e27",
      "name": "Upload Objects to MinIO",
      "type": "n8n-nodes-base.s3",
      "position": [
        416,
        272
      ],
      "parameters": {
        "fileName": "={{ $json.Key }}",
        "operation": "upload",
        "bucketName": "yourBucket",
        "additionalFields": {
          "parentFolderKey": "awsFiles"
        }
      },
      "credentials": {
        "s3": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "6b2939af-0392-4fa7-a54e-599690862903",
      "name": "BLOB Listing",
      "type": "n8n-nodes-base.azureStorage",
      "position": [
        -256,
        512
      ],
      "parameters": {
        "options": {},
        "resource": "blob",
        "container": {
          "__rl": true,
          "mode": "id",
          "value": "container"
        },
        "returnAll": true,
        "requestOptions": {}
      },
      "credentials": {
        "azureStorageSharedKeyApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "a206d71b-8954-46ce-a04a-2405273970cd",
      "name": "Path extraction",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        -32,
        512
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "name"
      },
      "typeVersion": 1
    },
    {
      "id": "e4a4db90-8e65-4438-89bd-34501695939c",
      "name": "BLOB Download",
      "type": "n8n-nodes-base.azureStorage",
      "position": [
        192,
        512
      ],
      "parameters": {
        "blob": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $json.name }}"
        },
        "options": {},
        "resource": "blob",
        "container": {
          "__rl": true,
          "mode": "list",
          "value": "container",
          "cachedResultName": "container"
        },
        "operation": "get",
        "requestOptions": {}
      },
      "credentials": {
        "azureStorageSharedKeyApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "d1ca45d3-b763-41f2-a3c4-64d3e2a478d7",
      "name": "MinIO BLOB Upload",
      "type": "n8n-nodes-base.s3",
      "position": [
        416,
        512
      ],
      "parameters": {
        "fileName": "={{ $json.name }}",
        "operation": "upload",
        "bucketName": "yourBucket",
        "additionalFields": {
          "parentFolderKey": "azureFiles"
        }
      },
      "credentials": {
        "s3": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "e3bc512a-4c70-44d6-a66a-4595cf997819",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -304,
        192
      ],
      "parameters": {
        "color": 2,
        "width": 640,
        "height": 224,
        "content": "## AWS S3"
      },
      "typeVersion": 1
    },
    {
      "id": "8d7b06c6-060d-4d67-9626-11dcbfcc9cdb",
      "name": "Object Listing",
      "type": "n8n-nodes-base.googleCloudStorage",
      "position": [
        -256,
        752
      ],
      "parameters": {
        "resource": "object",
        "returnAll": true,
        "bucketName": "Bucket",
        "listFilters": {},
        "requestOptions": {}
      },
      "typeVersion": 1
    },
    {
      "id": "31ac4eee-eb24-41aa-bdcb-af2cad1d27cb",
      "name": "Upload on MinIO",
      "type": "n8n-nodes-base.s3",
      "position": [
        416,
        752
      ],
      "parameters": {
        "fileName": "={{ $json.Key }}",
        "operation": "upload",
        "bucketName": "yourBucket",
        "additionalFields": {
          "parentFolderKey": "googleFiles"
        }
      },
      "credentials": {
        "s3": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "1d088e46-64e5-4741-b753-db567f51e404",
      "name": "Download Objects Data",
      "type": "n8n-nodes-base.googleCloudStorage",
      "position": [
        192,
        752
      ],
      "parameters": {
        "alt": "media",
        "resource": "object",
        "operation": "get",
        "bucketName": "Bucket",
        "objectName": "={{ $json.Key }}",
        "getParameters": {},
        "requestOptions": {},
        "encryptionHeaders": {}
      },
      "typeVersion": 1
    },
    {
      "id": "d3e64e18-cd07-4428-b795-e21a1f0f98d8",
      "name": "Path extraction1",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        -32,
        752
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "name"
      },
      "typeVersion": 1
    },
    {
      "id": "782c650c-ed90-4018-8394-dab6758a2385",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -304,
        432
      ],
      "parameters": {
        "color": 5,
        "width": 640,
        "height": 224,
        "content": "## Azure BLOB Storage"
      },
      "typeVersion": 1
    },
    {
      "id": "b1e2479b-41e3-4ddb-a70e-5c26ec5bfb9a",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -304,
        672
      ],
      "parameters": {
        "color": 3,
        "width": 640,
        "height": 224,
        "content": "## Google Cloud Plateform Storage"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "29403923-776c-4617-b976-1d61cef2cc5b",
  "connections": {
    "BLOB Listing": {
      "main": [
        [
          {
            "node": "Path extraction",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "List Objects": {
      "main": [
        [
          {
            "node": "Path Extraction",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "BLOB Download": {
      "main": [
        [
          {
            "node": "MinIO BLOB Upload",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Object Listing": {
      "main": [
        [
          {
            "node": "Path extraction1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Path Extraction": {
      "main": [
        [
          {
            "node": "Download Objects",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Path extraction": {
      "main": [
        [
          {
            "node": "BLOB Download",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download Objects": {
      "main": [
        [
          {
            "node": "Upload Objects to MinIO",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Path extraction1": {
      "main": [
        [
          {
            "node": "Download Objects Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "List Objects",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download Objects Data": {
      "main": [
        [
          {
            "node": "Upload on MinIO",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}