{
  "workflow": {
    "id": 8703,
    "name": "Automatically transfer FTP files to Google Drive with batch processing",
    "views": 201,
    "recentViews": 0,
    "totalViews": 201,
    "createdAt": "2025-09-18T04:54:17.866Z",
    "description": "## How it works\n\nThis workflow automates the transfer of files from an FTP server to Google Drive.  \nIt runs on a schedule, lists files in a defined FTP directory, and processes them in batches.  \nEach file is downloaded sequentially from the FTP server and uploaded to Google Drive.  \nThe workflow ensures filenames are preserved for consistency during the sync process.\n\n## Step-by-step\n\n**1. Trigger the workflow**  \n- **Schedule Trigger** – Starts the workflow automatically at set intervals.  \n\n**2. List files from FTP**  \n- **FTP (List Files)** – Retrieves a list of files from the FTP server path.  \n\n**3. Batch process files**  \n- **Split in Batches** – Breaks the file list into smaller chunks for sequential handling.  \n\n**4. Download file from FTP**  \n- **FTP (Download File)** – Downloads each file from the FTP server.  \n\n**5. Upload to Google Drive**  \n- **Google Drive (Upload File)** – Uploads the file to Google Drive while keeping its original filename.  \n\n## Why use this?\n\n- Automates repetitive FTP-to-cloud transfer tasks with no manual intervention.  \n- Reduces system overload by processing files in manageable batches.  \n- Ensures data backup from FTP servers directly into cloud storage.  \n- Maintains file structure and filenames for easy reference and retrieval.  \n- Provides reliable, scheduled synchronization between FTP and Google Drive.  \n",
    "workflow": {
      "meta": {
        "templateCredsSetupCompleted": false
      },
      "name": "FTP to Cloud Sync",
      "nodes": [
        {
          "id": "262d1e91-d950-41a4-8a27-afeb44c9744d",
          "name": "⏯️ Schedule Trigger",
          "type": "n8n-nodes-base.scheduleTrigger",
          "position": [
            -144,
            64
          ],
          "parameters": {
            "rule": {
              "interval": [
                {}
              ]
            }
          },
          "typeVersion": 1.2
        },
        {
          "id": "44decf50-8cb4-4eba-bd60-67f963e1d939",
          "name": "📂 List Files from FTP",
          "type": "n8n-nodes-base.ftp",
          "position": [
            80,
            64
          ],
          "parameters": {
            "path": "/path/to/your/files",
            "operation": "list"
          },
          "credentials": {
            "ftp": "ftp_credentials"
          },
          "typeVersion": 1
        },
        {
          "id": "821ff817-5e79-4d81-8fc5-980c76517d87",
          "name": "🔀 Batch Files",
          "type": "n8n-nodes-base.splitInBatches",
          "position": [
            304,
            64
          ],
          "parameters": {
            "options": {}
          },
          "typeVersion": 3
        },
        {
          "id": "7535c279-523e-4d07-bc8d-de3424456236",
          "name": "⬇️ Download File from FTP",
          "type": "n8n-nodes-base.ftp",
          "position": [
            528,
            -16
          ],
          "parameters": {
            "path": "={{ $json.name }}",
            "options": {}
          },
          "credentials": {
            "ftp": "ftp_credentials"
          },
          "typeVersion": 1
        },
        {
          "id": "b6f0df47-0de0-4636-8939-1fbe748da310",
          "name": "☁️ Upload to Google Drive",
          "type": "n8n-nodes-base.googleDrive",
          "position": [
            752,
            64
          ],
          "parameters": {
            "name": "={{ $json.name }}",
            "driveId": {
              "__rl": true,
              "mode": "list",
              "value": "My Drive"
            },
            "options": {},
            "folderId": {
              "__rl": true,
              "mode": "list",
              "value": "root",
              "cachedResultName": "/ (Root folder)"
            }
          },
          "credentials": {
            "googleDriveOAuth2Api": "google_drive_credentials"
          },
          "typeVersion": 3
        },
        {
          "id": "a62179dc-9d84-42b9-953b-0d584763b1bc",
          "name": "Sticky Note",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -208,
            -272
          ],
          "parameters": {
            "color": 4,
            "width": 448,
            "height": 544,
            "content": "## 1. Trigger & File Listing\n\n*The workflow starts automatically using a Schedule trigger.\n\nIt connects to the FTP server and retrieves a list of files from the given remote folder path.*"
          },
          "typeVersion": 1
        },
        {
          "id": "1cdca185-0cc4-4a2d-97cd-7a467d4df82b",
          "name": "Sticky Note1",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            256,
            -272
          ],
          "parameters": {
            "color": 3,
            "width": 208,
            "height": 544,
            "content": "## 2. Batch Processing Setup\n\n*Files are split into manageable batches so each file is handled one at a time.\n\nThis avoids overloading the system and ensures smooth sequential processing.*"
          },
          "typeVersion": 1
        },
        {
          "id": "333bf0b6-aeb7-422a-83ae-e2fa5d448814",
          "name": "Sticky Note2",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            480,
            -272
          ],
          "parameters": {
            "color": 5,
            "height": 544,
            "content": "## 3. File Handling\n\n*Each batch item (file) is downloaded from the FTP server.\n\nThe downloaded file is prepared for the next step (upload).*"
          },
          "typeVersion": 1
        },
        {
          "id": "58997636-96c2-4f25-9795-3f8fbc83d293",
          "name": "Sticky Note3",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            736,
            -272
          ],
          "parameters": {
            "width": 192,
            "height": 544,
            "content": "## 4. Cloud Upload\n\n*Files are uploaded to Google Drive.\n\nThe filename from FTP is retained during upload for consistency.*"
          },
          "typeVersion": 1
        }
      ],
      "active": false,
      "pinData": {},
      "settings": {
        "executionOrder": "v1"
      },
      "connections": {
        "🔀 Batch Files": {
          "main": [
            [],
            [
              {
                "node": "⬇️ Download File from FTP",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "⏯️ Schedule Trigger": {
          "main": [
            [
              {
                "node": "📂 List Files from FTP",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "📂 List Files from FTP": {
          "main": [
            [
              {
                "node": "🔀 Batch Files",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "☁️ Upload to Google Drive": {
          "main": [
            [
              {
                "node": "🔀 Batch Files",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "⬇️ Download File from FTP": {
          "main": [
            [
              {
                "node": "☁️ Upload to Google Drive",
                "type": "main",
                "index": 0
              }
            ]
          ]
        }
      }
    },
    "lastUpdatedBy": 1,
    "workflowInfo": {
      "nodeCount": 9,
      "nodeTypes": {
        "n8n-nodes-base.ftp": {
          "count": 2
        },
        "n8n-nodes-base.stickyNote": {
          "count": 4
        },
        "n8n-nodes-base.googleDrive": {
          "count": 1
        },
        "n8n-nodes-base.splitInBatches": {
          "count": 1
        },
        "n8n-nodes-base.scheduleTrigger": {
          "count": 1
        }
      }
    },
    "status": "published",
    "user": {
      "name": "Avkash Kakdiya",
      "username": "itechnotion",
      "bio": "🚀 Founder of iTechNotion — we build custom AI-powered automation workflows for startups, agencies, and founders.\n💡 Specializing in agentic AI systems, content automation, sales funnels, and digital workers.\n🔧 14+ years in tech | Building scalable no-code/low-code solutions using n8n, OpenAI, and other API-first tools.\n📬 Let’s automate what slows you down.",
      "verified": true,
      "links": [
        "https://calendly.com/itechnotion_sales/schedule-your-expert-consultation-for-automation"
      ],
      "avatar": "https://gravatar.com/avatar/cd18cea4647ff1df4cb154c7d172ca67dcf656f09a3f1ffece5646296d1822d5?r=pg&d=retro&size=200"
    },
    "nodes": [
      {
        "id": 39,
        "icon": "fa:sync",
        "name": "n8n-nodes-base.splitInBatches",
        "codex": {
          "data": {
            "alias": [
              "Loop",
              "Concatenate",
              "Batch",
              "Split",
              "Split In Batches"
            ],
            "resources": {
              "generic": [
                {
                  "url": "https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/",
                  "icon": " 🕸️",
                  "label": "How uProc scraped a multi-page website with a low-code workflow"
                },
                {
                  "url": "https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/",
                  "icon": "🎖",
                  "label": "Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.splitinbatches/"
                }
              ]
            },
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Flow"
              ]
            }
          }
        },
        "group": "[\"organization\"]",
        "defaults": {
          "name": "Loop Over Items",
          "color": "#007755"
        },
        "iconData": {
          "icon": "sync",
          "type": "icon"
        },
        "displayName": "Loop Over Items (Split in Batches)",
        "typeVersion": 3,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 58,
        "icon": "file:googleDrive.svg",
        "name": "n8n-nodes-base.googleDrive",
        "codex": {
          "data": {
            "resources": {
              "generic": [
                {
                  "url": "https://n8n.io/blog/your-business-doesnt-need-you-to-operate/",
                  "icon": " 🖥️",
                  "label": "Hey founders! Your business doesn't need you to operate"
                },
                {
                  "url": "https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/",
                  "icon": "🧠",
                  "label": "Why this Product Manager loves workflow automation with n8n"
                },
                {
                  "url": "https://n8n.io/blog/aws-workflow-automation/",
                  "label": "7 no-code workflow automations for Amazon Web Services"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googledrive/"
                }
              ],
              "credentialDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"
                }
              ]
            },
            "categories": [
              "Data & Storage"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0"
          }
        },
        "group": "[\"input\"]",
        "defaults": {
          "name": "Google Drive"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgODEgNzMiPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9ImEiIG92ZXJmbG93PSJ2aXNpYmxlIj48ZyBmaWxsLXJ1bGU9Im5vbnplcm8iIHN0cm9rZT0ibm9uZSI+PHBhdGggZmlsbD0iIzAwNjZkYSIgZD0ibTYuMDQ4IDYxLjI2IDMuNTI4IDYuMDk0Yy43MzMgMS4yODMgMS43ODcgMi4yOTEgMy4wMjQgMy4wMjRsMTIuNi0yMS44MUgwYTguMyA4LjMgMCAwIDAgMS4xIDQuMTI0eiIvPjxwYXRoIGZpbGw9IiMwMGFjNDciIGQ9Ik00MCAyMi45MSAyNy40IDEuMWMtMS4yMzcuNzMzLTIuMjkxIDEuNzQxLTMuMDI0IDMuMDI0TDEuMSA0NC40NDVBOC4zIDguMyAwIDAgMCAwIDQ4LjU2OGgyNS4yeiIvPjxwYXRoIGZpbGw9IiNlYTQzMzUiIGQ9Ik02Ny40IDcwLjM3OGMxLjIzNy0uNzMzIDIuMjkxLTEuNzQxIDMuMDI0LTMuMDI0bDEuNDY2LTIuNTIgNy4wMS0xMi4xNDJhOC4zIDguMyAwIDAgMCAxLjEtNC4xMjRINTQuNzk4bDUuMzYzIDEwLjUzOHoiLz48cGF0aCBmaWxsPSIjMDA4MzJkIiBkPSJNNDAgMjIuOTEgNTIuNiAxLjFDNTEuMzYzLjM2NyA0OS45NDMgMCA0OC40NzcgMEgzMS41MjRjLTEuNDY2IDAtMi44ODcuNDEyLTQuMTI0IDEuMXoiLz48cGF0aCBmaWxsPSIjMjY4NGZjIiBkPSJNNTQuNzk5IDQ4LjU2OEgyNS4ybC0xMi42IDIxLjgxYzEuMjM3LjczMyAyLjY1NyAxLjEgNC4xMjQgMS4xaDQ2LjU1MmMxLjQ2NiAwIDIuODg3LS40MTIgNC4xMjQtMS4xeiIvPjxwYXRoIGZpbGw9IiNmZmJhMDAiIGQ9Ik02Ny4yNjIgMjQuMjg0IDU1LjYyNCA0LjEyNEM1NC44OTEgMi44NDEgNTMuODM3IDEuODMzIDUyLjYgMS4xTDQwIDIyLjkxbDE0LjggMjUuNjU5aDI1LjE1NWE4LjMgOC4zIDAgMCAwLTEuMS00LjEyNHoiLz48L2c+PC9zeW1ib2w+PC9zdmc+"
        },
        "displayName": "Google Drive",
        "typeVersion": 3,
        "nodeCategories": [
          {
            "id": 3,
            "name": "Data & Storage"
          }
        ]
      },
      {
        "id": 350,
        "icon": "fa:server",
        "name": "n8n-nodes-base.ftp",
        "codex": {
          "data": {
            "alias": [
              "SFTP",
              "FTP",
              "Binary",
              "File",
              "Transfer"
            ],
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.ftp/"
                }
              ],
              "credentialDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/credentials/ftp/"
                }
              ]
            },
            "categories": [
              "Core Nodes",
              "Data & Storage",
              "Development",
              "Utility"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Files",
                "Helpers"
              ]
            }
          }
        },
        "group": "[\"input\"]",
        "defaults": {
          "name": "FTP",
          "color": "#303050"
        },
        "iconData": {
          "icon": "server",
          "type": "icon"
        },
        "displayName": "FTP",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 3,
            "name": "Data & Storage"
          },
          {
            "id": 5,
            "name": "Development"
          },
          {
            "id": 7,
            "name": "Utility"
          },
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 565,
        "icon": "fa:sticky-note",
        "name": "n8n-nodes-base.stickyNote",
        "codex": {
          "data": {
            "alias": [
              "Comments",
              "Notes",
              "Sticky"
            ],
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Helpers"
              ]
            }
          }
        },
        "group": "[\"input\"]",
        "defaults": {
          "name": "Sticky Note",
          "color": "#FFD233"
        },
        "iconData": {
          "icon": "sticky-note",
          "type": "icon"
        },
        "displayName": "Sticky Note",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 839,
        "icon": "fa:clock",
        "name": "n8n-nodes-base.scheduleTrigger",
        "codex": {
          "data": {
            "alias": [
              "Time",
              "Scheduler",
              "Polling",
              "Cron",
              "Interval"
            ],
            "resources": {
              "generic": [],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.scheduletrigger/"
                }
              ]
            },
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0"
          }
        },
        "group": "[\"trigger\",\"schedule\"]",
        "defaults": {
          "name": "Schedule Trigger",
          "color": "#31C49F"
        },
        "iconData": {
          "icon": "clock",
          "type": "icon"
        },
        "displayName": "Schedule Trigger",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      }
    ],
    "categories": [
      {
        "id": 31,
        "name": "Content Creation"
      },
      {
        "id": 36,
        "name": "File Management"
      }
    ],
    "image": []
  }
}