AutomationFlowsGeneral › Scheduled Ftp/sftp to Minio Backup with Preserved Folder Structure

Scheduled Ftp/sftp to Minio Backup with Preserved Folder Structure

BySIENNA @sienna on n8n.io

$\mapsto$ Can work with FTP/SFTP Servers like your Wordpress Website !

Cron / scheduled trigger★★★★☆ complexity8 nodesFtpS3
General Trigger: Cron / scheduled Nodes: 8 Complexity: ★★★★☆ Added:

This workflow corresponds to n8n.io template #7377 — we link there as the canonical source.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "id": "R3ogyLIzRhuYmZQW",
  "name": "Automatic FTP to MinIO Backup",
  "tags": [],
  "nodes": [
    {
      "id": "b8e287f9-e154-4bd3-b8bd-604295a18c38",
      "name": "Sticky Note32",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -960,
        -496
      ],
      "parameters": {
        "color": 5,
        "width": 272,
        "height": 256,
        "content": "## Configure this trigger"
      },
      "typeVersion": 1
    },
    {
      "id": "9c489554-f100-498b-8660-c13643972ee2",
      "name": "List FTP Folder contents",
      "type": "n8n-nodes-base.ftp",
      "position": [
        -640,
        -416
      ],
      "parameters": {
        "path": "/bitnami/wordpress/wp-content/uploads/2025/04",
        "protocol": "sftp",
        "operation": "list",
        "recursive": true
      },
      "credentials": {
        "sftp": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "fcafdbd0-d5a7-47b4-900e-2aad25365ef7",
      "name": "Download content",
      "type": "n8n-nodes-base.ftp",
      "position": [
        -192,
        -416
      ],
      "parameters": {
        "path": "={{ $('List FTP Folder contents').item.json.path }}",
        "protocol": "sftp"
      },
      "credentials": {
        "sftp": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "8b4f3a56-3310-49f5-ae1c-a4e83c19d080",
      "name": "Create Path for MinIO",
      "type": "n8n-nodes-base.set",
      "position": [
        -416,
        -416
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "ddfd813d-d97d-42f6-ae21-8ff0e34ca8db",
              "name": "path",
              "type": "string",
              "value": "={{ $json.path.replace(/\\/[^\\/]+$/, '') }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "62fb915f-fc9c-4f38-85c9-42231e94cf4d",
      "name": "Upload on MinIO with correct Path",
      "type": "n8n-nodes-base.s3",
      "position": [
        32,
        -416
      ],
      "parameters": {
        "fileName": "=",
        "operation": "upload",
        "bucketName": "myMinIObucket",
        "additionalFields": {
          "parentFolderKey": "=ftpFilesFolder{{ $('Create Path for MinIO').item.json.path }}"
        }
      },
      "credentials": {
        "s3": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "023cd697-fc44-4cbe-a18f-5b50258deef6",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -32,
        -496
      ],
      "parameters": {
        "color": 5,
        "width": 272,
        "height": 256,
        "content": "## Create and configure your MinIO Bucket"
      },
      "typeVersion": 1
    },
    {
      "id": "71440038-a34a-42e2-8962-4eedfdcfc832",
      "name": "Sticky Note33",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -960,
        -816
      ],
      "parameters": {
        "width": 1200,
        "height": 304,
        "content": "## Automated FTP-SFTP to MinIO Object Backup with Scheduling \n\nWant to automatically backup Files & Folder from any FTP-SFTP Server (Like your Wordpress Website !) ? You're at the right place \n\nConfigure the Schedule Trigger to best suit your needs, create a SFTP account on N8N and write the path to the files you want to backup (could be a simple folder or an entire server) and don't forget to check the Recursive Option (to get all files !)\n\nThen, simply deploy a MinIO service on your network (Using Proxmox VE ? create a LXC using https://community-scripts.github.io/ProxmoxVE/scripts?id=minio) and configure the path to the bucket where your FTP Files will be (like 192.168.1.123:9000 and your bucket)\n\n## -> Pro Tip, you can change the MinIO Node for an AWS S3, Azure Blob, GCP or any S3 Compatible Storage that you want !"
      },
      "typeVersion": 1
    },
    {
      "id": "d7aaa29e-9996-4802-a3c9-0a267dbcef85",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -864,
        -416
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "triggerAtHour": 2
            }
          ]
        }
      },
      "typeVersion": 1.2
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "d462d16a-6269-42a3-8be7-849897e23756",
  "connections": {
    "Download content": {
      "main": [
        [
          {
            "node": "Upload on MinIO with correct Path",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "List FTP Folder contents",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Path for MinIO": {
      "main": [
        [
          {
            "node": "Download content",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "List FTP Folder contents": {
      "main": [
        [
          {
            "node": "Create Path for MinIO",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

$\mapsto$ Can work with FTP/SFTP Servers like your Wordpress Website !

Source: https://n8n.io/workflows/7377/ — original creator credit. Request a take-down →

More General workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

General

Code Schedule. Uses ftp, scheduleTrigger, mqtt, mqttTrigger. Scheduled trigger; 6 nodes.

Ftp, Mqtt, Mqtt Trigger
General

This workflow automatically downloads files from an FTP folder and uploads them to Google Drive. It’s useful for backup, reporting, or syncing data between systems. Cron Trigger runs on a schedule (de

Ftp, Google Drive
General

This template creates a nightly backup of all n8n workflows and saves them to a Google Drive folder. Each night, the previous night's backups are moved to an “n8n_old” folder and renamed with the corr

Move Binary Data, Google Drive, Item Lists +1
General

Code Itemlists. Uses stickyNote, moveBinaryData, googleDrive, itemLists. Scheduled trigger; 33 nodes.

Move Binary Data, Google Drive, Item Lists +1
General

This workflow is perfect for n8n users who want to automatically backup all their workflows 💾 to Google Drive with zero manual effort. Perfect for teams managing multiple workflows or anyone who value

n8n, Google Drive