مستندات n8n
74+ نود
📂

اف‌تی‌پی

FTP

آپلود، دانلود و مدیریت فایل روی سرورهای FTP و SFTP به صورت خودکار

ذخیره‌سازی
مقدماتی
۰ بازدید
n8n 1.0+

نمای کلی

نود FTP/SFTP ابزاری قدرتمند برای انتقال فایل بین سرورها و سیستم‌های مختلف است.

تفاوت پروتکل‌ها:

FTP (File Transfer Protocol)

  • پورت پیش‌فرض: 21
  • بدون رمزنگاری (ناامن)
  • سرعت بالا ولی داده‌ها به صورت متن ساده ارسال می‌شوند
  • فقط برای شبکه‌های داخلی توصیه می‌شود

FTPS (FTP over SSL/TLS)

  • پورت پیش‌فرض: 990 (Implicit) یا 21 (Explicit)
  • رمزنگاری SSL/TLS
  • سازگار با FTP ولی امن‌تر
  • نیاز به تنظیم Certificate

SFTP (SSH File Transfer Protocol) - توصیه شده

  • پورت پیش‌فرض: 22
  • رمزنگاری کامل با SSH
  • پشتیبانی از احراز هویت با کلید خصوصی
  • امن‌ترین روش انتقال فایل
  • پشتیبانی از تغییر دسترسی فایل (chmod)

قابلیت‌های کلیدی:

  • آپلود و دانلود فایل
  • لیست فایل‌ها و پوشه‌ها
  • ایجاد و حذف پوشه
  • تغییر نام و جابجایی فایل
  • بررسی وجود فایل
  • تغییر دسترسی (chmod) - فقط SFTP
  • دریافت اطلاعات فایل (سایز، تاریخ)
  • پشتیبانی از حالت Passive و Active

چه زمانی از کدام استفاده کنیم:

  • SFTP: همیشه اولویت اول (امن و مطمئن)
  • FTPS: وقتی سرور فقط FTPS دارد
  • FTP: فقط در شبکه داخلی و بدون داده حساس

احراز هویت

تنظیم احراز هویت FTP/SFTP

اتصال FTP ساده

code
Host: ftp.example.com
Port: 21
Username: ftpuser
Password: yourpassword

#### تنظیم در n8n:

  1. 1Credentials > FTP
  2. 2Host: آدرس سرور FTP
  3. 3Port: 21 (پیش‌فرض)
  4. 4Username و Password وارد کنید

اتصال SFTP با رمز عبور

code
Host: sftp.example.com
Port: 22
Username: sftpuser
Password: yourpassword

#### تنظیم در n8n:

  1. 1Credentials > SFTP
  2. 2Host: آدرس سرور
  3. 3Port: 22 (پیش‌فرض)
  4. 4Username و Password وارد کنید

اتصال SFTP با کلید خصوصی (توصیه شده)

code
Host: sftp.example.com
Port: 22
Username: sftpuser
Private Key: محتوای فایل id_rsa
Passphrase: (اگر کلید رمز دارد)

#### ساخت کلید SSH:

bash
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa_n8n
# کلید عمومی را روی سرور کپی کنید:
ssh-copy-id -i ~/.ssh/id_rsa_n8n.pub user@server

اتصال FTPS (FTP over SSL)

code
Host: ftps.example.com
Port: 990 (Implicit) یا 21 (Explicit)
Username: ftpsuser
Password: yourpassword
Secure: true

دسترسی FTP در cPanel

  1. 1وارد cPanel شوید
  2. 2Files > FTP Accounts
  3. 3یک اکانت FTP بسازید
  4. 4Host: دامنه یا IP سرور
  5. 5Port: 21 (FTP) یا همان پورت SSH (SFTP)

دسترسی FTP در DirectAdmin

  1. 1وارد DirectAdmin شوید
  2. 2FTP Management
  3. 3اکانت FTP ایجاد کنید
  4. 4مسیر Home Directory مشخص کنید

نکات امنیتی:

  • همیشه از SFTP به جای FTP استفاده کنید
  • از کلید خصوصی به جای رمز عبور استفاده کنید
  • دسترسی FTP را به دایرکتوری خاص محدود کنید (chroot)
  • پورت‌های پیش‌فرض را تغییر دهید
  • رمز عبور قوی انتخاب کنید

عملیات‌های موجود

1

upload

آپلود فایل به سرور FTP/SFTP

2

download

دانلود فایل از سرور FTP/SFTP

3

delete

حذف فایل از سرور FTP/SFTP

4

list

لیست فایل‌ها و پوشه‌های یک دایرکتوری

5

rename

تغییر نام یا جابجایی فایل روی سرور

6

mkdir

ایجاد دایرکتوری جدید روی سرور

7

rmdir

حذف دایرکتوری از سرور

8

exists

بررسی اینکه آیا فایل یا پوشه روی سرور وجود دارد

9

chmod

تغییر سطح دسترسی فایل (فقط SFTP)

10

stat

دریافت اطلاعات فایل شامل سایز، تاریخ تغییر و دسترسی‌ها

11

copy

کپی فایل از یک مسیر به مسیر دیگر روی سرور

12

move

انتقال فایل از یک مسیر به مسیر دیگر روی سرور

کاربردهای متداول

1. استقرار وب‌سایت (Website Deployment)

آپلود خودکار فایل‌های وب‌سایت به هاست:

code
GitHub Trigger (Push to main)
  → Code (لیست فایل‌های تغییر یافته)
  → Loop
    → HTTP Request (دانلود فایل از GitHub)
    → FTP Upload
      - Path: /public_html/{{$json.filePath}}
  → Telegram (اعلام استقرار موفق)

2. بک‌آپ خودکار به سرور

پشتیبان‌گیری روزانه دیتابیس و فایل‌ها:

code
Schedule (هر شب ساعت 3)
  → MySQL (Export database)
  → Code (تبدیل به SQL dump)
  → SFTP Upload
    - Path: /backups/db/backup_{{$now.toFormat('yyyy-MM-dd')}}.sql
  → SFTP (حذف بک‌آپ‌های قدیمی‌تر از 30 روز)
  → Telegram (گزارش بک‌آپ)

3. جمع‌آوری لاگ‌ها از سرورها

دریافت خودکار فایل‌های لاگ:

code
Schedule (هر ساعت)
  → SFTP Download
    - Path: /var/log/nginx/access.log
  → Code (Parse و تحلیل لاگ)
  → MySQL (ذخیره آمار)
  → IF (خطای بحرانی)
    → Telegram (هشدار فوری)

4. آپلود تصاویر و مدیا

آپلود فایل‌های رسانه‌ای به CDN یا سرور:

code
Webhook (فرم آپلود)
  → Code (بررسی نوع و سایز فایل)
  → SFTP Upload
    - Path: /cdn/images/{{$now.toFormat('yyyy/MM')}}/{{$json.fileName}}
  → SFTP chmod
    - Mode: 644
  → Respond to Webhook (لینک فایل)

5. ارسال فاکتور به مشتری

ارسال خودکار فاکتور PDF:

code
Webhook (پرداخت تأیید شده)
  → HTTP Request (تولید PDF فاکتور)
  → SFTP Upload
    - Path: /invoices/{{$json.customerId}}/INV-{{$json.invoiceId}}.pdf
  → Email Send (ارسال فاکتور)

6. توزیع گزارش‌ها

آپلود گزارش‌ها به سرور اشتراکی:

code
Schedule (اول هر ماه)
  → MySQL (آمار فروش ماهانه)
  → Code (تولید CSV و PDF)
  → SFTP Upload
    - Path: /reports/monthly/{{$now.toFormat('yyyy-MM')}}_sales.csv
  → SFTP Upload
    - Path: /reports/monthly/{{$now.toFormat('yyyy-MM')}}_sales.pdf
  → Email Send (ارسال به مدیران)

7. تبادل فایل با بانک‌ها و سازمان‌ها

ارسال و دریافت فایل‌های مالی:

code
Schedule (هر روز ساعت 8 صبح)
  → MySQL (تراکنش‌های روز قبل)
  → Code (تبدیل به فرمت بانکی)
  → SFTP Upload
    - Path: /exchange/outgoing/transactions_{{$now.toFormat('yyyyMMdd')}}.txt
  → SFTP List
    - Path: /exchange/incoming/
  → Loop (فایل‌های جدید)
    → SFTP Download
    → Code (پردازش فایل بانکی)
    → MySQL (ثبت نتایج)

8. مدیریت فایل در cPanel

مدیریت خودکار فایل‌های هاست:

code
Webhook (درخواست تغییر)
  → FTP List
    - Path: /public_html/
  → FTP Upload (فایل جدید)
  → FTP Delete (فایل قدیمی)
  → FTP Rename (تغییر نام)

9. همگام‌سازی خودکار فایل‌ها

Sync فایل‌ها بین دو سرور:

code
Schedule (هر 30 دقیقه)
  → SFTP List (سرور مبدأ)
    - Path: /data/new/
  → Loop
    → SFTP Download (از سرور مبدأ)
    → SFTP Upload (به سرور مقصد)
    → SFTP Rename (انتقال به /data/processed/)
  → Telegram (گزارش همگام‌سازی)

10. اتصال به اسکنر و پرینتر شبکه

دریافت خودکار فایل‌های اسکن شده:

code
Schedule (هر 5 دقیقه)
  → FTP List
    - Path: /scanner/output/
  → IF (فایل جدید وجود دارد)
    → Loop
      → FTP Download
      → Google Drive (آپلود)
      → FTP Delete (حذف از اسکنر)
    → Telegram (اعلام فایل جدید)

نکات حرفه‌ای

نکات حرفه‌ای

  1. 1همیشه SFTP به جای FTP: SFTP تمام داده‌ها (شامل رمز عبور) را رمزنگاری می‌کند. FTP داده‌ها را به صورت متن ساده ارسال می‌کند و قابل شنود است. هرگز از FTP برای داده‌های حساس استفاده نکنید.
  1. 1Passive Mode برای FTP: اگر پشت فایروال یا NAT هستید، حتماً Passive Mode فعال کنید. در حالت Active، سرور به کلاینت متصل می‌شود که معمولاً توسط فایروال مسدود می‌شود.
  1. 1Binary vs ASCII: برای فایل‌های غیرمتنی (تصاویر، PDF، فایل‌های فشرده) حتماً از حالت Binary استفاده کنید. حالت ASCII فقط برای فایل‌های متنی مناسب است و می‌تواند فایل‌های باینری را خراب کند.
  1. 1ساختار دایرکتوری منظم: مسیرها را بر اساس تاریخ یا دسته‌بندی سازماندهی کنید:
code
/backups/
     ├── database/
     │   ├── 2024-01/
     │   └── 2024-02/
     ├── files/
     └── logs/
  1. 1Retry on Failure: اتصالات FTP/SFTP ممکن است گاهی قطع شوند. همیشه Retry on Fail با 3 تلاش و فاصله 5 ثانیه تنظیم کنید:
code
Retry on Fail: ON
   Max Tries: 3
   Wait Between Tries: 5000ms
  1. 1File Locking: قبل از خواندن فایلی که ممکن است در حال نوشتن باشد، وجود فایل lock. را بررسی کنید. برنامه‌هایی که فایل می‌نویسند معمولاً یک فایل قفل ایجاد می‌کنند.
  1. 1فایل موقت و سپس تغییر نام: برای جلوگیری از خواندن فایل ناقص، ابتدا با پسوند .tmp آپلود کنید و بعد تغییر نام دهید:
code
SFTP Upload → /data/report.csv.tmp
   SFTP Rename → /data/report.csv.tmp → /data/report.csv
  1. 1Connection Pooling: در حلقه‌ها، n8n از یک اتصال مجدد استفاده می‌کند. ولی اگر عملیات زیاد دارید، بین هر 50 عملیات یک Wait کوتاه بگذارید تا اتصال پایدار بماند.
  1. 1مدیریت فایل‌های بزرگ: برای فایل‌های بزرگ‌تر از 100MB:
  • Timeout را افزایش دهید (حداقل 300000ms)
  • Memory سرور n8n کافی باشد
  • از Streaming mode استفاده کنید
  • شبکه پایدار اطمینان حاصل کنید
  1. 1مشکل نام فایل فارسی: سرورهای FTP قدیمی ممکن است با نام فایل فارسی (UTF-8) مشکل داشته باشند. توصیه‌ها:
  • از نام فایل انگلیسی استفاده کنید
  • Encoding سرور را UTF-8 تنظیم کنید
  • SFTP معمولاً با UTF-8 مشکلی ندارد
  • نام فایل: report_1403-05-15.pdf به جای گزارش_مرداد.pdf
  1. 1مدیریت پهنای باند: برای جلوگیری از اشغال کامل پهنای باند:
  • بین آپلودها Wait بگذارید
  • انتقال فایل‌های بزرگ را در ساعات کم‌ترافیک انجام دهید
  • از Split In Batches استفاده کنید
  1. 1احراز هویت SFTP با کلید: امن‌ترین روش اتصال SFTP:
bash
# ساخت کلید
    ssh-keygen -t ed25519 -f ~/.ssh/n8n_key
    # کپی به سرور
    ssh-copy-id -i ~/.ssh/n8n_key.pub user@server
    # در n8n: محتوای n8n_key را در Private Key وارد کنید
  1. 1مانیتورینگ انتقال فایل: بعد از هر آپلود، سایز فایل روی سرور را با فایل اصلی مقایسه کنید:
code
SFTP Upload → SFTP Stat → IF (size == originalSize)
      → True: موفق
      → False: آپلود مجدد
  1. 1پاکسازی فایل‌های قدیمی: بک‌آپ‌ها و فایل‌های موقت را مرتب پاک کنید:
code
Schedule (هر هفته)
      → SFTP List (/backups/)
      → Code (فیلتر فایل‌های قدیمی‌تر از 30 روز)
      → Loop
        → SFTP Delete
      → Telegram (گزارش پاکسازی)
  1. 1ادغام با cPanel/DirectAdmin: برای مدیریت هاست:
code
// cPanel FTP
    Host: yourdomain.com
    Port: 21
    User: cpanelusername@yourdomain.com
    Path: /public_html/

    // DirectAdmin SFTP
    Host: yourdomain.com
    Port: 22
    User: dauser
    Path: /home/dauser/domains/yourdomain.com/public_html/

رفع مشکلات

خطاهای رایج

1. خطای ECONNREFUSED (اتصال رد شد)

علت: سرور FTP/SFTP در دسترس نیست یا پورت بسته است

راه‌حل

  • آدرس Host و Port را بررسی کنید
  • FTP: پورت 21 / SFTP: پورت 22
  • فایروال سرور را چک کنید (iptables/ufw)
  • سرویس FTP/SSH فعال باشد:

systemctl status vsftpd یا systemctl status sshd

  • از telnet تست کنید: telnet host 21

2. خطای ETIMEDOUT (وقفه زمانی)

علت: سرور پاسخ نمی‌دهد یا مسیر شبکه مسدود است

راه‌حل

  • اتصال اینترنت سرور n8n را بررسی کنید
  • DNS سرور مقصد صحیح باشد
  • Timeout را افزایش دهید
  • از IP به جای دامنه تست کنید
  • Passive Mode فعال کنید (برای FTP)

3. خطای Authentication Failed

علت: نام کاربری یا رمز عبور اشتباه

راه‌حل

  • Username و Password را دوباره بررسی کنید
  • حساسیت به حروف بزرگ و کوچک
  • کاربر FTP فعال باشد (غیر از Disabled)
  • با ابزار FileZilla تست کنید
  • دسترسی Shell برای SFTP فعال باشد

4. مشکلات Passive Mode در FTP

علت: فایروال یا NAT جلوی پورت‌های Passive را می‌گیرد

راه‌حل

  • Passive Mode را فعال کنید
  • رنج پورت‌های Passive را در فایروال باز کنید (معمولاً 30000-31000)
  • در vsftpd.conf:
code
pasv_enable=YES
  pasv_min_port=30000
  pasv_max_port=31000
  • یا از SFTP استفاده کنید (نیاز به Passive ندارد)

5. خطای SFTP Key Rejected

علت: کلید خصوصی SSH معتبر نیست یا روی سرور تنظیم نشده

راه‌حل

  • کلید عمومی در ~/.ssh/authorized_keys سرور باشد
  • دسترسی فایل: chmod 600 ~/.ssh/authorized_keys
  • دسترسی پوشه: chmod 700 ~/.ssh
  • فرمت کلید صحیح باشد (OpenSSH یا PEM)
  • Passphrase کلید درست وارد شده باشد

6. خطای File Not Found (فایل یافت نشد)

علت: مسیر فایل اشتباه یا فایل وجود ندارد

راه‌حل

  • مسیر فایل را با لیست کردن دایرکتوری بررسی کنید
  • مسیر مطلق استفاده کنید (شروع با /)
  • حساسیت به حروف بزرگ و کوچک (Linux)
  • از عملیات List قبل از Download استفاده کنید

7. خطای Permission Denied (عدم دسترسی)

علت: کاربر FTP/SFTP اجازه خواندن/نوشتن ندارد

راه‌حل

  • دسترسی کاربر FTP به دایرکتوری مورد نظر
  • مالکیت فایل: chown ftpuser:ftpuser /path
  • دسترسی دایرکتوری: chmod 755 /path
  • تنظیمات chroot در vsftpd یا sshd_config
  • SELinux/AppArmor غیرفعال یا تنظیم شود

8. خطای Transfer Incomplete (انتقال ناقص)

علت: اتصال در حین انتقال قطع شده

راه‌حل

  • Retry on Fail فعال کنید
  • فایل‌های بزرگ را تکه‌تکه ارسال کنید
  • اتصال شبکه را بررسی کنید
  • Timeout را افزایش دهید
  • از حالت Binary (نه ASCII) استفاده کنید
  • بعد از آپلود، سایز فایل را مقایسه کنید
اشتراک‌گذاری:

آیا این مستندات مفید بود؟