ساخت اسکریپت آپلود فایل در FTP با پایتون

ساخت اسکریپت آپلود فایل در FTP با پایتون

در دنیای امروز، اتوماسیون وظایف تکراری نقش حیاتی در افزایش بهره‌وری ایفا می‌کند. یکی از این وظایف، آپلود فایل‌ها به سرور FTP است. این مقاله به آموزش ساخت یک اسکریپت پایتون برای آپلود فایل‌ها به سرور FTP می‌پردازد. این آموزش در دسته ‘اتوماسیون و اسکریپت‌نویسی’ قرار می‌گیرد و برای افراد با دانش پایه پایتون مناسب است.

پیش‌نیازها

قبل از شروع، اطمینان حاصل کنید که موارد زیر را در اختیار دارید:

  • پایتون نصب شده بر روی سیستم شما
  • دسترسی به یک سرور FTP با نام کاربری و رمز عبور معتبر
  • ماژول ftplib در پایتون (این ماژول به طور پیش‌فرض در پایتون نصب است)

مقدمه‌ای بر پروتکل FTP

FTP (File Transfer Protocol) یک پروتکل استاندارد برای انتقال فایل‌ها بین یک کلاینت و یک سرور است. این پروتکل به شما امکان می‌دهد فایل‌ها را آپلود، دانلود، حذف و مدیریت کنید. FTP معمولاً از دو اتصال استفاده می‌کند: یک اتصال برای دستورات (control connection) و یک اتصال برای انتقال داده (data connection).

نوشتن اسکریپت آپلود فایل

اکنون به نوشتن اسکریپت پایتون برای آپلود فایل می‌پردازیم. این اسکریپت شامل مراحل زیر است:

  1. اتصال به سرور FTP
  2. ورود به سیستم با نام کاربری و رمز عبور
  3. تعیین دایرکتوری مقصد
  4. باز کردن فایل برای خواندن (به صورت باینری)
  5. آپلود فایل به سرور FTP
  6. بستن اتصال FTP

کد پایتون زیر این مراحل را پیاده‌سازی می‌کند:

import ftplib

def upload_file_to_ftp(ftp_host, ftp_user, ftp_password, local_file_path, remote_file_path):
    """
    این تابع یک فایل را به سرور FTP آپلود می‌کند.

    Args:
        ftp_host (str): آدرس سرور FTP.
        ftp_user (str): نام کاربری FTP.
        ftp_password (str): رمز عبور FTP.
        local_file_path (str): مسیر فایل محلی برای آپلود.
        remote_file_path (str): مسیر فایل روی سرور FTP.
    """
    try:
        ftp = ftplib.FTP(ftp_host)
        ftp.login(ftp_user, ftp_password)
        print(ftp.getwelcome())

        with open(local_file_path, 'rb') as file:
            ftp.storbinary('STOR ' + remote_file_path, file)
        print(f"فایل {local_file_path} با موفقیت به {remote_file_path} آپلود شد.")

        ftp.quit()

    except ftplib.all_errors as e:
        print(f"خطا در آپلود فایل: {e}")

# مثال استفاده
ftp_host = 'your_ftp_host'  # جایگزین کنید
ftp_user = 'your_ftp_user'  # جایگزین کنید
ftp_password = 'your_ftp_password'  # جایگزین کنید
local_file_path = 'path/to/your/local/file.txt'  # جایگزین کنید
remote_file_path = 'path/to/your/remote/file.txt'  # جایگزین کنید

upload_file_to_ftp(ftp_host, ftp_user, ftp_password, local_file_path, remote_file_path)

در این کد:

  • ftplib.FTP(ftp_host): یک شی FTP ایجاد می‌کند و به سرور FTP متصل می‌شود.
  • ftp.login(ftp_user, ftp_password): با استفاده از نام کاربری و رمز عبور وارد سیستم می‌شود.
  • ftp.getwelcome(): پیام خوش‌آمدگویی سرور FTP را دریافت می‌کند.
  • open(local_file_path, 'rb'): فایل محلی را در حالت باینری برای خواندن باز می‌کند.
  • ftp.storbinary('STOR ' + remote_file_path, file): فایل را به سرور FTP آپلود می‌کند. دستور STOR به FTP می‌گوید که یک فایل را ذخیره کند.
  • ftp.quit(): اتصال FTP را می‌بندد.
  • بلوک try...except: برای مدیریت خطاها استفاده می‌شود.

مدیریت خطاها

در هنگام کار با FTP، ممکن است خطاهایی رخ دهند. به عنوان مثال، ممکن است نام کاربری یا رمز عبور اشتباه باشد، یا ممکن است فایل مورد نظر برای آپلود وجود نداشته باشد. برای مدیریت این خطاها، از بلوک try...except استفاده می‌کنیم. در کد بالا، ما تمام خطاهای ftplib.all_errors را دریافت می‌کنیم و پیام خطا را چاپ می‌کنیم.

آپلود فایل‌های بزرگ

برای آپلود فایل‌های بزرگ، ممکن است نیاز به استفاده از روش‌های پیشرفته‌تری باشد. به عنوان مثال، می‌توانید از ftp.transfercmd() برای انتقال داده به صورت قطعه‌ای استفاده کنید. این کار می‌تواند به جلوگیری از قطع شدن اتصال در هنگام آپلود فایل‌های بزرگ کمک کند.

تغییر دایرکتوری

برای آپلود فایل به دایرکتوری خاصی روی سرور FTP، می‌توانید از دستور ftp.cwd() استفاده کنید. این دستور دایرکتوری کاری فعلی را تغییر می‌دهد. به عنوان مثال:

ftp.cwd('/public_html/images')

این کد دایرکتوری کاری فعلی را به /public_html/images تغییر می‌دهد. پس از اجرای این دستور، تمام فایل‌هایی که آپلود می‌کنید در این دایرکتوری ذخیره می‌شوند.

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

برای لیست کردن فایل‌ها و دایرکتوری‌های موجود در سرور FTP، می‌توانید از دستور ftp.nlst() استفاده کنید. این دستور لیستی از نام فایل‌ها و دایرکتوری‌ها را برمی‌گرداند. به عنوان مثال:

files = ftp.nlst()
for file in files:
    print(file)

این کد تمام فایل‌ها و دایرکتوری‌های موجود در دایرکتوری کاری فعلی را چاپ می‌کند.

امنیت FTP

FTP یک پروتکل ناامن است، زیرا اطلاعات (از جمله نام کاربری و رمز عبور) به صورت متن ساده منتقل می‌شوند. برای افزایش امنیت، می‌توانید از پروتکل‌های امن‌تری مانند SFTP (SSH File Transfer Protocol) یا FTPS (FTP Secure) استفاده کنید. SFTP از SSH برای رمزگذاری داده‌ها استفاده می‌کند، در حالی که FTPS از SSL/TLS برای رمزگذاری داده‌ها استفاده می‌کند.

نتیجه‌گیری

در این مقاله، ما نحوه ساخت یک اسکریپت پایتون برای آپلود فایل‌ها به سرور FTP را آموزش دادیم. این اسکریپت می‌تواند برای اتوماسیون وظایف آپلود فایل استفاده شود. همچنین، ما به مدیریت خطاها، آپلود فایل‌های بزرگ، تغییر دایرکتوری و لیست کردن فایل‌ها و دایرکتوری‌ها پرداختیم. در نهایت، اهمیت امنیت FTP و استفاده از پروتکل‌های امن‌تر مانند SFTP و FTPS را مورد تاکید قرار دادیم. با استفاده از این دانش، می‌توانید اسکریپت‌های پایتون قدرتمندی برای مدیریت فایل‌ها در سرور FTP ایجاد کنید.

بدون دیدگاه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *