AutomationFlowsGeneral › Workflow 1994

Workflow 1994

Workflow 1994. Uses executeWorkflowTrigger, nextCloud, stopAndError. Event-driven trigger; 32 nodes.

Event trigger★★★★★ complexity32 nodesExecute Workflow TriggerNext CloudStop And Error
General Trigger: Event Nodes: 32 Complexity: ★★★★★ Added:

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
{
  "nodes": [
    {
      "id": "38cd304e-e260-4bbd-ace1-57b5fd0e6344",
      "name": "When clicking \"Execute Workflow\"",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -1300,
        360
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "087994ba-3b40-4337-b17a-e2ab4aa39963",
      "name": "Whether type is file",
      "type": "n8n-nodes-base.if",
      "position": [
        940,
        780
      ],
      "parameters": {
        "conditions": {
          "string": [
            {
              "value1": "={{ $json.type }}",
              "value2": "file"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "ab2ec609-2c7a-4976-9ce0-57f6961578e1",
      "name": "Set new path for subfolder",
      "type": "n8n-nodes-base.set",
      "position": [
        1240,
        900
      ],
      "parameters": {
        "fields": {
          "values": [
            {
              "name": "from",
              "stringValue": "={{ decodeURIComponent($json.path) }}"
            },
            {
              "name": "to",
              "stringValue": "={{ decodeURIComponent($('Set folder-paths for from and to').item.json.to + '/' + $json.path.split('/').filter(Boolean).pop() + '/') }}"
            }
          ]
        },
        "include": "none",
        "options": {}
      },
      "typeVersion": 3.2
    },
    {
      "id": "98099141-0e7f-49f0-bfc9-67eef67b13aa",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        540,
        474.3406813627256
      ],
      "parameters": {
        "width": 1861.9238476953906,
        "height": 665.3466933867735,
        "content": "## \ud558\uc704 \ud3f4\ub354\uc758 \ubaa8\ub4e0 \ud30c\uc77c \uac00\uc838\uc624\uae30\n\n\uc774 \uc6cc\ud06c\ud50c\ub85c\uc758 \uc774 \ubd80\ubd84\uc5d0\uc11c, \ud558\uc704 \ud3f4\ub354 \ub0b4\uc5d0 \uc704\uce58\ud55c \ubaa8\ub4e0 \ud30c\uc77c\uc774 \uc218\uc9d1\ub429\ub2c8\ub2e4. \uc774\uc5d0\ub294 \ud558\uc704 \ud3f4\ub354 \ub0b4\uc758 \ud558\uc704 \ud3f4\ub354 \ud0d0\uc0c9\uc774 \ud3ec\ud568\ub418\uba70, \uc804\uccb4 \ud3f4\ub354 \uad6c\uc870\uc5d0\uc11c \ubaa8\ub4e0 \ud30c\uc77c\uc758 \uc2dd\ubcc4\uc744 \ubcf4\uc7a5\ud569\ub2c8\ub2e4. \ub610\ud55c, \uc2dd\ubcc4\ub41c \uac01 \ud558\uc704 \ud3f4\ub354\uc5d0 \ub300\ud574 \ubaa9\uc801\uc9c0 \uad6c\uc870\uc5d0 \ud574\ub2f9 \ud3f4\ub354\uac00 \uc0dd\uc131\ub429\ub2c8\ub2e4."
      },
      "typeVersion": 1
    },
    {
      "id": "8284d632-f0a0-437e-9f75-6995c72400c2",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2440,
        478.85370741482984
      ],
      "parameters": {
        "width": 695.2464929859717,
        "height": 660.1721006751914,
        "content": "## \ud30c\uc77c \ubcf4\uac15\n\uc774 \uc6cc\ud06c\ud50c\ub85c\uc758 \ub2e8\uacc4\uc5d0\uc11c, \ubaa8\ub4e0 \uc2dd\ubcc4\ub41c \ud30c\uc77c\uc774 \ucc98\ub9ac\ub418\uc5b4 \ub300\uc0c1 \uad6c\uc870 \ub0b4\uc758 \uc62c\ubc14\ub978 \uacbd\ub85c\ub85c \ubcf4\uac15\ub429\ub2c8\ub2e4."
      },
      "typeVersion": 1
    },
    {
      "id": "f8b151e4-f9c9-474c-94f3-1c0d340d8e36",
      "name": "Set new path for file",
      "type": "n8n-nodes-base.code",
      "position": [
        2900,
        860
      ],
      "parameters": {
        "jsCode": "for (const item of $input.all()) {\n  const toPath = $('Set folder-paths for from and to').item.json.to;\n  const fromPath = $('Set folder-paths for from and to').item.json.from;\n\n   // Remove leading and trailing slashes\n  path = fromPath.replace(/^\\/|\\/$/g, '');\n  // Split the path into an array of folders\n  const folders = path.split('/');\n  // Remove empty strings (resulting from leading, trailing, or consecutive slashes)\n  const nonEmptyFoldersCount = folders.filter(folder => folder !== '').length;\n\n  newFilePathArray = item.json.path.replace(/^\\/|\\/$/g, '').split('/');\n  \n  item.json.newPath = toPath.replace(/^\\/|\\/$/g, '') + '/' + newFilePathArray.slice(nonEmptyFoldersCount).join(\"/\")\n}\n\nreturn $input.all();"
      },
      "typeVersion": 2
    },
    {
      "id": "638426c9-c736-4ba9-91a2-383049f15ee5",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3180,
        480
      ],
      "parameters": {
        "width": 695.2464929859717,
        "height": 658.7966837968969,
        "content": "## \ud30c\uc77c \uc774\ub3d9  \n\uc774 \uc6cc\ud06c\ud50c\ub85c\uc758 \uc774 \ub2e8\uacc4\uc5d0\uc11c \ud30c\uc77c\ub4e4\uc740 \ubaa9\uc801\uc9c0 \uad6c\uc870\ub85c \uc774\ub3d9\ub429\ub2c8\ub2e4.  \n\nLoop Over \ub178\ub4dc\uc5d0\uc11c \ubc30\uce58 \ud06c\uae30\uac00 1\ub85c \uc720\uc9c0\ub418\uba74, \uac01 \ud30c\uc77c\uc774 \uc21c\ucc28\uc801\uc73c\ub85c \uc774\ub3d9\ub429\ub2c8\ub2e4. \ubc30\uce58 \ud06c\uae30\uac00 \uc99d\uac00\ub418\uba74, \uc5ec\ub7ec \ud30c\uc77c\uc774 \ub3d9\uc2dc\uc5d0 \uc774\ub3d9\ub429\ub2c8\ub2e4."
      },
      "typeVersion": 1
    },
    {
      "id": "96d83360-21ed-49f1-b273-47ee609f52fa",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3920,
        480
      ],
      "parameters": {
        "width": 695.2464929859717,
        "height": 658.7966837968969,
        "content": "## (\uc120\ud0dd\uc0ac\ud56d) from-\ud3f4\ub354 \uc0ad\uc81c"
      },
      "typeVersion": 1
    },
    {
      "id": "cd5dbcf2-378e-4102-9db2-0627c829e2f2",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -380,
        480
      ],
      "parameters": {
        "width": 871.7450543093198,
        "height": 665.3466933867735,
        "content": "## \uc774\ub3d9\ud560 \ud30c\uc77c\uacfc \ud558\uc704 \ud3f4\ub354 \uac00\uc838\uc624\uae30\n\uc774 \uc6cc\ud06c\ud50c\ub85c\uc758 \uc774 \ubd80\ubd84\uc5d0\uc11c, \uc774\ub3d9\ud560 \ubaa8\ub4e0 \ud30c\uc77c\uacfc \ud558\uc704 \ud3f4\ub354\uac00 \uc218\uc9d1\ub429\ub2c8\ub2e4. \ub610\ud55c, \ubaa9\uc801\uc9c0 \ud3f4\ub354\uac00 \uc774\ubbf8 \uc874\uc7ac\ud558\uc9c0 \uc54a\ub294 \uacbd\uc6b0 \uc0dd\uc131\ub429\ub2c8\ub2e4."
      },
      "typeVersion": 1
    },
    {
      "id": "91894912-7f54-447b-947b-4040fc92f094",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1340,
        60
      ],
      "parameters": {
        "width": 723.2756594453772,
        "height": 463.596247600301,
        "content": "## \uc218\ub3d9 \uc2dc\uc791  \n\uc6cc\ud06c\ud50c\ub85c\ub97c \uc218\ub3d9\uc73c\ub85c \uc2dc\uc791\ud558\uae30 \uc704\ud574, Set Paths \ub178\ub4dc\ub294 \uc774\ub3d9\ud560 \ud3f4\ub354 \uacbd\ub85c\uc640 \ubaa9\uc801\uc9c0 \ud3f4\ub354 \uacbd\ub85c\uc758 \uc9c0\uc815\uc774 \ud544\uc694\ud569\ub2c8\ub2e4. \uc11c\ube0c\ud3f4\ub354\ub294 '/'\ub97c \uc0ac\uc6a9\ud558\uc5ec \ud45c\uc2dc\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.  \n\n\uc6cc\ud06c\ud50c\ub85c\ub97c \uc2dc\uc791\ud558\uae30 \uc804\uc5d0 \ub2e4\ub978 \uc6cc\ud06c\ud50c\ub85c \ud2b8\ub9ac\uac70\ub97c \ube44\ud65c\uc131\ud654\ud558\uc138\uc694."
      },
      "typeVersion": 1
    },
    {
      "id": "c1e7754f-6efa-4967-9b8d-6c1bcdb55355",
      "name": "Webhook",
      "type": "n8n-nodes-base.webhook",
      "disabled": true,
      "position": [
        -1320,
        880
      ],
      "parameters": {
        "path": "285b2cba-587b-4131-82a8-cdd35a8d49e1",
        "options": {},
        "httpMethod": "POST",
        "responseData": "noData",
        "responseMode": "lastNode"
      },
      "typeVersion": 1
    },
    {
      "id": "cb3e0c28-afa4-4847-b95e-5c7523f18df6",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1340,
        580
      ],
      "parameters": {
        "width": 723.2756594453772,
        "height": 500.9028666051119,
        "content": "## \uc6f9\ud6c5 \ud2b8\ub9ac\uac70\n\uc6f9\ud6c5\uc744 \uad6c\uc131\ud558\uc5ec \uc6cc\ud06c\ud50c\ub85c\ub97c \ud2b8\ub9ac\uac70\ud558\ub3c4\ub85d \uc790\ub3d9\ud654\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4. \uac01 \uc694\uccad\uc774 JSON \ubcf8\ubb38\uc5d0 \ucd5c\uc18c\ud55c 'from-path'\uc640 'to-path' \ub450 \uc18d\uc131\uc774 \uc124\uc815\ub418\uc5b4 \uc788\ub294 \uac83\uc774 \uc911\uc694\ud569\ub2c8\ub2e4. \uc5ec\uae30 \uc608\uc2dc\uc785\ub2c8\ub2e4:\n\n```\n{\n \"from\": \"Folder/to/move\",\n \"to\": \"New-Folder\"\n}\n```\n\n\uc694\uccad\uc774 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc73c\uba74 \uc6cc\ud06c\ud50c\ub85c\uac00 \uc624\ub958\ub85c \uc751\ub2f5\ud560 \uac83\uc785\ub2c8\ub2e4.\n\n\uc6cc\ud06c\ud50c\ub85c\ub97c \uc2dc\uc791\ud558\uae30 \uc804\uc5d0 \ub2e4\ub978 \uc6cc\ud06c\ud50c\ub85c \ud2b8\ub9ac\uac70\ub97c \ube44\ud65c\uc131\ud654\ud558\uc138\uc694."
      },
      "typeVersion": 1
    },
    {
      "id": "3c85f4a4-28b3-4315-b689-033e4af3f888",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1340,
        1140
      ],
      "parameters": {
        "width": 723.2756594453772,
        "height": 498.6039613328509,
        "content": "## \ub2e4\ub978 \uc6cc\ud06c\ud50c\ub85c\uc6b0\uc5d0 \uc758\ud574 \ud2b8\ub9ac\uac70\n\ub610\ud55c \ub2e4\ub978 \uc6cc\ud06c\ud50c\ub85c\uc6b0 \ub0b4\uc5d0\uc11c \uc774 \uc6cc\ud06c\ud50c\ub85c\uc6b0\ub97c \uc2dc\uc791\ud558\ub294 \uac83\uc774 \uac00\ub2a5\ud569\ub2c8\ub2e4. \uc774 \uc6cc\ud06c\ud50c\ub85c\uc6b0\ub97c \uc2dc\uc791\ud560 \ub54c \uc801\uc5b4\ub3c4 'from-path'\uc640 'to-path'\ub97c \ub9e4\uac1c\ubcc0\uc218\ub85c \uc804\ub2ec\ud558\ub294 \uac83\uc744 \ud655\uc778\ud558\ub294 \uac83\uc774 \uc911\uc694\ud569\ub2c8\ub2e4.\n\n\uc694\uccad\uc774 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc73c\uba74 \uc6cc\ud06c\ud50c\ub85c\uc6b0\uac00 \uc624\ub958\ub85c \uc751\ub2f5\ud560 \uac83\uc785\ub2c8\ub2e4.\n\n\uc6cc\ud06c\ud50c\ub85c\uc6b0\ub97c \uc2dc\uc791\ud558\uae30 \uc804\uc5d0 \ub2e4\ub978 \uc6cc\ud06c\ud50c\ub85c\uc6b0 \ud2b8\ub9ac\uac70\ub97c \ube44\ud65c\uc131\ud654\ud558\ub294 \uac83\uc744 \ud655\uc778\ud558\uc138\uc694."
      },
      "typeVersion": 1
    },
    {
      "id": "88e63d18-7c68-4d4f-bfe6-5780115d3ed0",
      "name": "Execute Workflow Trigger",
      "type": "n8n-nodes-base.executeWorkflowTrigger",
      "disabled": true,
      "position": [
        -1320,
        1440
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "82d7182e-3aca-4407-8faa-3704429974dc",
      "name": "Set folder-paths for from and to",
      "type": "n8n-nodes-base.set",
      "position": [
        -280,
        880
      ],
      "parameters": {
        "fields": {
          "values": [
            {
              "name": "from",
              "stringValue": "={{ $json.from }}"
            },
            {
              "name": "to",
              "stringValue": "={{ $json.to }}"
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3.2
    },
    {
      "id": "e9edad54-d5f2-481e-b5be-b43a15b74233",
      "name": "Create to folder if necessary",
      "type": "n8n-nodes-base.nextCloud",
      "onError": "continueRegularOutput",
      "position": [
        -40,
        880
      ],
      "parameters": {
        "path": "={{ $json.to }}",
        "resource": "folder"
      },
      "credentials": {
        "nextCloudApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "4283f069-ea26-499d-928c-5f0f3898cdc4",
      "name": "Get all folders/files in from-folder",
      "type": "n8n-nodes-base.nextCloud",
      "position": [
        240,
        880
      ],
      "parameters": {
        "path": "={{ $('Set folder-paths for from and to').item.json.from }}",
        "resource": "folder",
        "operation": "list"
      },
      "credentials": {
        "nextCloudApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "06c77d03-d79b-4435-9f7f-eef919b7b6af",
      "name": "Loop over files and folders",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        660,
        880
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "56cc28ea-d934-4d9c-9e28-968c2e1fa4da",
      "name": "Consolidate all files and folders found",
      "type": "n8n-nodes-base.noOp",
      "position": [
        2000,
        760
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "57883a8f-7989-4706-808a-595376ebaf47",
      "name": "Create subfolder in to-folder",
      "type": "n8n-nodes-base.nextCloud",
      "onError": "continueRegularOutput",
      "position": [
        1440,
        900
      ],
      "parameters": {
        "path": "={{$('Set new path for subfolder').item.json.to }}",
        "resource": "folder"
      },
      "credentials": {
        "nextCloudApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "0a173b88-53c5-44b1-ae04-f68b343025ce",
      "name": "Get all folders/files in found subfolder",
      "type": "n8n-nodes-base.nextCloud",
      "position": [
        1680,
        900
      ],
      "parameters": {
        "path": "={{$('Set new path for subfolder').item.json.from }}",
        "resource": "folder",
        "operation": "list"
      },
      "credentials": {
        "nextCloudApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "3c17b67c-e815-4e27-9b63-19346cb8b966",
      "name": "Whether there is are more files or subfolders found",
      "type": "n8n-nodes-base.if",
      "position": [
        2200,
        880
      ],
      "parameters": {
        "conditions": {
          "boolean": [
            {
              "value1": "={{$node[\"Loop over files and folders\"].context[\"noItemsLeft\"]}}",
              "value2": true
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "94c4e926-eb92-4b10-8d35-2b3483cc4819",
      "name": "Consolidate all found files",
      "type": "n8n-nodes-base.code",
      "position": [
        2580,
        860
      ],
      "parameters": {
        "jsCode": "let results = [],\n  i = 0;\n\ndo {\n  try {\n    results = results.concat($(\"Consolidate all files and folders found\").all(0, i));\n  } catch (error) {\n    return results;\n  }\n  i++;\n} while (true);"
      },
      "typeVersion": 2
    },
    {
      "id": "b40e30ff-793c-46e6-b5a0-5498ee27a3c9",
      "name": "Loop Over all files",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        3300,
        860
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "034c66f7-c184-438d-96de-1d20f8f7adc5",
      "name": "Move file to destination",
      "type": "n8n-nodes-base.nextCloud",
      "position": [
        3660,
        940
      ],
      "parameters": {
        "path": "={{ decodeURIComponent($json.path) }}",
        "toPath": "={{ decodeURIComponent($json.newPath) }}",
        "operation": "move"
      },
      "credentials": {
        "nextCloudApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "34c8521f-cb17-479f-842b-38cbb5970403",
      "name": "Delete from-folder",
      "type": "n8n-nodes-base.nextCloud",
      "onError": "continueRegularOutput",
      "position": [
        4200,
        840
      ],
      "parameters": {
        "path": "={{ $('Set folder-paths for from and to').item.json.from }}",
        "resource": "folder",
        "operation": "delete"
      },
      "credentials": {
        "nextCloudApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "eeda26a3-f5e6-4e6d-aeca-ebe2dbc2cb9e",
      "name": "Set paths",
      "type": "n8n-nodes-base.set",
      "position": [
        -780,
        360
      ],
      "parameters": {
        "fields": {
          "values": [
            {
              "name": "from",
              "stringValue": "Old-Folder"
            },
            {
              "name": "to",
              "stringValue": "Destination"
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3.2
    },
    {
      "id": "ba2e352a-4911-470b-a3bb-f63e3470e228",
      "name": "Whether the request is valid",
      "type": "n8n-nodes-base.if",
      "position": [
        -1100,
        880
      ],
      "parameters": {
        "conditions": {
          "boolean": [
            {
              "value1": "={{ $json.hasOwnProperty('body') && $json.body.hasOwnProperty('to') && $json.body.hasOwnProperty('from')}}",
              "value2": true
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "ed4ddbf1-becf-4944-abd4-0b4cdf6d3b85",
      "name": "Stop and Error: request not valid",
      "type": "n8n-nodes-base.stopAndError",
      "position": [
        -760,
        920
      ],
      "parameters": {
        "errorMessage": "The Request is not valid!"
      },
      "typeVersion": 1
    },
    {
      "id": "2b5d67ac-983b-486d-99f1-e05995383878",
      "name": "Whether the request is valid1",
      "type": "n8n-nodes-base.if",
      "position": [
        -1120,
        1440
      ],
      "parameters": {
        "conditions": {
          "boolean": [
            {
              "value1": "={{ $json.hasOwnProperty('to') && $json.hasOwnProperty('from')}}",
              "value2": true
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "b57309cf-2a69-4879-a7d4-5499f8278e3b",
      "name": "Stop and Error: request not valid1",
      "type": "n8n-nodes-base.stopAndError",
      "position": [
        -760,
        1480
      ],
      "parameters": {
        "errorMessage": "The Request is not valid!"
      },
      "typeVersion": 1
    },
    {
      "id": "f109308f-0b48-4395-9f2d-c8b4e8d936d2",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2440,
        60
      ],
      "parameters": {
        "width": 770.5015081009478,
        "height": 1247.9320267653952,
        "content": "# \ud15c\ud50c\ub9bf \uc124\uba85\n\n\n## \uc124\uba85:\n\uc774 \ud15c\ud50c\ub9bf\uc740 Nextcloud \uc778\uc2a4\ud134\uc2a4 \ub0b4\uc5d0\uc11c \ud3f4\ub354\uc640 \uadf8 \uc548\uc5d0 \uc788\ub294 \ubaa8\ub4e0 \ud30c\uc77c \ubc0f \ud558\uc704 \ud3f4\ub354\ub97c \uc774\ub3d9\ud558\ub294 \uac83\uc744 \ub3d5\uc2b5\ub2c8\ub2e4. Nextcloud \uc0ac\uc6a9\uc790\ub294 \uc18c\uc2a4 \ud3f4\ub354\uc640 \ub300\uc0c1 \ud3f4\ub354\uc5d0 \ubaa8\ub450 \uc811\uadfc\ud560 \uc218 \uc788\uc5b4\uc57c \ud569\ub2c8\ub2e4. Nextcloud\ub294 \ud3f4\ub354 \uc774\ub3d9\uc744 \ud5c8\uc6a9\ud558\uc9c0\ub9cc, \uc18d\ub3c4 \uc81c\ud55c\uc774 \uc788\ub294 \uc678\ubd80 \uc2a4\ud1a0\ub9ac\uc9c0\uc640 \uad00\ub828\ub41c \uacbd\uc6b0 \ubb38\uc81c\uac00 \ubc1c\uc0dd\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \uc6cc\ud06c\ud50c\ub85c\ub294 \uac01 \ud30c\uc77c\uc744 \uac1c\ubcc4\uc801\uc73c\ub85c \uc774\ub3d9\ud558\uc5ec \uc18d\ub3c4 \uc81c\ud55c\uc744 \ucd08\uacfc\ud558\uc9c0 \uc54a\ub3c4\ub85d \ud558\uba70, \ud2b9\ud788 \uc18d\ub3c4 \uc81c\ud55c\uc774 \uc788\ub294 \uc678\ubd80 \uc2a4\ud1a0\ub9ac\uc9c0 \uc124\uc815\uc5d0 \uc720\uc6a9\ud569\ub2c8\ub2e4.\n\n## \uc791\ub3d9 \uc6d0\ub9ac:\n\n- \uc9c0\uc815\ub41c \uc18c\uc2a4 \ud3f4\ub354 \ub0b4\uc758 \ubaa8\ub4e0 \ud30c\uc77c\uacfc \ud558\uc704 \ud3f4\ub354\ub97c \uc2dd\ubcc4\ud569\ub2c8\ub2e4.\n- \ud558\uc704 \ud3f4\ub354 \ub0b4\uc5d0\uc11c \ucd94\uac00 \ud30c\uc77c\uc744 \uc7ac\uadc0\uc801\uc73c\ub85c \uac80\uc0c9\ud569\ub2c8\ub2e4.\n- \ub300\uc0c1 \ud3f4\ub354\uc5d0 \ud3f4\ub354 \uad6c\uc870\ub97c \ubcf5\uc81c\ud569\ub2c8\ub2e4.\n- \uc2dd\ubcc4\ub41c \uac01 \ud30c\uc77c\uc744 \ub300\uc0c1 \ud3f4\ub354\uc758 \ud574\ub2f9 \uc704\uce58\ub85c \uac1c\ubcc4\uc801\uc73c\ub85c \uc774\ub3d9\ud569\ub2c8\ub2e4.\n\n## \uc124\uc815 \ub2e8\uacc4:\n\n- \ud504\ub85c\uc138\uc2a4\uc5d0 \ucc38\uc5ec\ud558\ub294 \ubaa8\ub4e0 Nextcloud \ub178\ub4dc\uc5d0 Nextcloud \uc790\uaca9 \uc99d\uba85\uc744 \uc124\uc815\ud569\ub2c8\ub2e4.\n- \ud2b8\ub9ac\uac70 \uc124\uc815\uc744 \ud3b8\uc9d1\ud569\ub2c8\ub2e4. \uc790\uc138\ud55c \uc9c0\uce68\uc740 \ud574\ub2f9 \ud2b8\ub9ac\uac70 \uad6c\uc131 \ub0b4\uc5d0 \uc788\uc2b5\ub2c8\ub2e4.\n- \uc6cc\ud06c\ud50c\ub85c\ub97c \uc2dc\uc791\ud558\uc5ec \ud3f4\ub354 \uc774\ub3d9 \ud504\ub85c\uc138\uc2a4\ub97c \uc9c4\ud589\ud569\ub2c8\ub2e4.\n\n\n## \ub3c4\uc6c0\n\uc774 \ud15c\ud50c\ub9bf\uc744 \uc801\uc6a9\ud558\ub294 \ub370 \ub3c4\uc6c0\uc774 \ud544\uc694\ud558\uc2dc\uba74 \uc5b8\uc81c\ub4e0\uc9c0 \uc5f0\ub77d \uc8fc\uc138\uc694. \uc800\uc640 \uc81c \uc11c\ube44\uc2a4\uc5d0 \ub300\ud55c \ucd94\uac00 \uc815\ubcf4\ub97c \uc5ec\uae30\uc5d0\uc11c \ucc3e\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. => https://nicokowalczyk.de/links\n\n\ub610\ud55c, \uc81c\uac00 \uc774 \uc6cc\ud06c\ud50c\ub85c\ub97c \uc124\uba85\ud558\uace0 \uc608\uc2dc\ub97c \uc81c\uacf5\ud558\ub294 \ube44\ub514\uc624\ub97c \uc81c\uc791\ud588\uc2b5\ub2c8\ub2e4. \uc774 \ube44\ub514\uc624\ub294 \uc5ec\uae30\uc5d0\uc11c \ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4. https://youtu.be/K1kmG_Q_jRk\n\n\uac10\uc0ac\ud569\ub2c8\ub2e4.  \nNico Kowalczyk"
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "Webhook": {
      "main": [
        [
          {
            "node": "Whether the request is valid",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set paths": {
      "main": [
        [
          {
            "node": "Set folder-paths for from and to",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over all files": {
      "main": [
        [
          {
            "node": "Delete from-folder",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Move file to destination",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Whether type is file": {
      "main": [
        [
          {
            "node": "Consolidate all files and folders found",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Set new path for subfolder",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set new path for file": {
      "main": [
        [
          {
            "node": "Loop Over all files",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Execute Workflow Trigger": {
      "main": [
        [
          {
            "node": "Whether the request is valid1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Move file to destination": {
      "main": [
        [
          {
            "node": "Loop Over all files",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set new path for subfolder": {
      "main": [
        [
          {
            "node": "Create subfolder in to-folder",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Consolidate all found files": {
      "main": [
        [
          {
            "node": "Set new path for file",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop over files and folders": {
      "main": [
        null,
        [
          {
            "node": "Whether type is file",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Whether the request is valid": {
      "main": [
        [
          {
            "node": "Set folder-paths for from and to",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Stop and Error: request not valid",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create subfolder in to-folder": {
      "main": [
        [
          {
            "node": "Get all folders/files in found subfolder",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create to folder if necessary": {
      "main": [
        [
          {
            "node": "Get all folders/files in from-folder",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Whether the request is valid1": {
      "main": [
        [
          {
            "node": "Set folder-paths for from and to",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Stop and Error: request not valid1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set folder-paths for from and to": {
      "main": [
        [
          {
            "node": "Create to folder if necessary",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When clicking \"Execute Workflow\"": {
      "main": [
        [
          {
            "node": "Set paths",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get all folders/files in from-folder": {
      "main": [
        [
          {
            "node": "Loop over files and folders",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Consolidate all files and folders found": {
      "main": [
        [
          {
            "node": "Whether there is are more files or subfolders found",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get all folders/files in found subfolder": {
      "main": [
        [
          {
            "node": "Consolidate all files and folders found",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Whether there is are more files or subfolders found": {
      "main": [
        [
          {
            "node": "Consolidate all found files",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Loop over files and folders",
            "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

Workflow 1994. Uses executeWorkflowTrigger, nextCloud, stopAndError. Event-driven trigger; 32 nodes.

Source: https://github.com/n8nKOR/n8n-shared-workflow/blob/62a671327e906c22a40d290b339ff6d2373f8d75/workflows/n8n-workflows-by-Zie619/devops/1994_workflow_1994.json — 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

This template facilitates the transfer of a folder, along with all its files and subfolders, within a Nextcloud instance. The Nextcloud user must have access to both the source and destination folders

Execute Workflow Trigger, Next Cloud, Stop And Error
General

Prevent concurrent workflow runs using Redis. Uses executeWorkflowTrigger, manualTrigger, stickyNote, executeWorkflow. Event-driven trigger; 43 nodes.

Execute Workflow Trigger, Redis, Stop And Error
General

This workflow sets a small "lock" value in Redis so that only one copy of a long job can run at the same time. If another trigger fires while the job is still busy, the workflow sees the lock, stops e

Execute Workflow Trigger, Redis, Stop And Error
General

&gt; v2: Now it can read multiple types of LLM usages. Better dynamic approach for reading model usage.

n8n, Execute Workflow Trigger, Stop And Error
General

If you're in need of a quick and dirty cache that doesn't need anything other than the current version of N8N, boy do I have a dodgy script for you to try!

Execute Workflow Trigger, Data Table, Stop And Error