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

0
(0)
انتقال فایل در لینوکس

وقتی پای انتقال فایل بین دو سرور لینوکس به میان می‌آید، انتخاب روش مناسب شبیه انتخاب یک وسیله نقلیه برای سفر است: گاهی به یک موتور سریع نیاز دارید، گاهی به یک ماشین امن، و گاهی هم به یک کامیون برای حجم زیاد بار! در این مقاله، بدون پیچیدگیهای فنی، به بررسی ابزارهای محبوب انتقال داده بین سرورهای لینوکس میپردازیم و کاربرد هر کدام را با مثالهای ساده توضیح میدهیم.

 FTP: قدیمی اما ساده

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

چطور کار میکند؟

ابتدا باید یک سرور FTP روی سیستم مقصد راه‌اندازی کنید (مثلاً vsftpd یا proftpd).

سپس از سرور مبدا، با استفاده از ابزار ftp به سرور مقصد متصل شوید:

ftp IP

به‌جای IP، آدرس سرور مقصد را وارد کنید.

پس از ورود نام کاربری و رمز عبور سرور مقصد، می‌توانید:

ارسال فایل از مبدا به مقصد:

put file.txt

دریافت فایل از مقصد به مبدا:

get file.txt

برای خروج از محیط FTP از دستور زیر استفاده کنید:

bye

نکته امنیتی: به جای FTP، بهتر است از SFTP (امن‌تر و مبتنی بر SSH) استفاده کنید:

sftp user@destination
put file.txt

نکته : دستور FTP به‌صورت پیش‌فرض قابلیت ارسال دایرکتوری‌ها را ندارد. برای ارسال دایرکتوری، ابتدا آن را فشرده کرده و سپس ارسال کنید (مثلاً با استفاده از دستور tar).

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

انتقال فایلهای کوچک در شبکه های داخلی.

وقتی امنیت اولویت نیست و سادگی مهم است.

مشکلش کجاست؟

داده ها رمزگذاری نمیشوند (مثل ارسال نامه بدون پاکت!).

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

برای فایلهای خیلی بزرگ یا دایرکتوری‌های سنگین کند است.

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

SCP: ارسال امن با کمک SSH

اگر FTP یک پستچی معمولی است، SCP مثل یک پستچی زرهپوش است که از پروتکل SSH برای رمزگذاری داده‌ها استفاده می‌کند.

چطور کار می‌کند؟

دستور scp برای انتقال امن فایل‌ها و دایرکتوری‌ها بین سرورها از طریق پروتکل SSH استفاده می‌شود. به‌عنوان مثال، برای ارسال فایل report.pdf از سیستم فعلی به سرور مقصد، می‌توانید از دستور زیر استفاده کنید:

scp report.pdf user@server2.com:/home/user/documents/

یا به‌جای نام دامنه، مستقیماً آدرس IP سرور مقصد را مشخص کنید:

scp report.pdf user@192.168.1.10:/home/user/documents/

🔹 توضیح اجزای دستور:

  • report.pdf → نام فایلی که می‌خواهید ارسال کنید.
  • user → نام کاربری در سرور مقصد.
  • server2.com یا 192.168.1.10 → آدرس سرور مقصد (می‌تواند نام دامنه یا IP باشد).
  • /home/user/documents/ → مسیر دایرکتوری مقصد در سرور که فایل در آن قرار می‌گیرد.

🔹 اگر بخواهید یک دایرکتوری را به همراه تمام محتویاتش انتقال دهید، از سوئیچ -r استفاده کنید:

scp -r myfolder user@server2.com:/home/user/

جدول سوئیچ‌های مهم scp

دستورات انتقال فایل در لینوکس

مثال پیشرفته: انتقال دایرکتوری با فشرده‌سازی، روی پورت 2222، با کلید خصوصی:

scp -r -C -P 2222 -i ~/.ssh/id_rsa myfolder user@192.168.1.10:/home/user/

با این روش، فایل‌ها و دایرکتوری‌ها به‌صورت امن و سریع از سرور مبدا به سرور مقصد منتقل می‌شوند.

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

انتقال فایلهای حساس (مثل تنظیمات سرور یا داده‌های کاربران).

وقتی می‌خواهید سریع و بدون تنظیمات اضافه فایلها را جابجا کنید.

مشکلش کجاست؟

برای فایلهای خیلی بزرگ یا دایرکتوری‌های سنگین کند است.

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

Rsync: قهرمان همگامسازی

Rsync یک ابزار هوشمند است که فقط تغییرات فایل ها را منتقل میکند. تصور کنید یک جعبه دارید و فقط آیتمهای جدید را به جعبه مقصد اضافه میکنید، نه کل جعبه را!

چطور کار میکند؟

دستور rsync برای همگام‌سازی فایل‌ها و دایرکتوری‌ها بین سیستم‌های مختلف استفاده می‌شود. برخلاف scp، این ابزار قابلیت ادامه انتقال (resume) را دارد و فقط فایل‌های تغییرکرده را منتقل می‌کند، که باعث افزایش سرعت انتقال می‌شود.

به‌عنوان مثال، برای همگام‌سازی پوشه backup از سرور ۱ به سرور ۲ با استفاده از SSH، می‌توان از این دستور استفاده کرد:

rsync -avz -e ssh /path/to/backup/ user@server2.com:/backup/

یا می‌توان به‌جای نام دامنه، مستقیماً آدرس IP سرور مقصد را مشخص کرد:

rsync -avz -e ssh /path/to/backup/ user@192.168.1.10:/backup/

🔹 اگر پورت SSH روی مقدار پیش‌فرض (22) نباشد، باید به‌صورت دستی مشخص کنید:

rsync -avz -e "ssh -p 2222" /path/to/backup/ user@192.168.1.10:/backup/

🔹 توضیح اجزای دستور:

/path/to/backup/ → مسیر دایرکتوری مبدا که قرار است همگام‌سازی شود.

user → نام کاربری در سرور مقصد.

server2.com یا 192.168.1.10 → آدرس سرور مقصد (می‌تواند نام دامنه یا IP باشد).

/backup/ → مسیر دایرکتوری مقصد در سرور که فایل‌ها در آن قرار می‌گیرند.

-e “ssh -p 2222” → تعیین پورت SSH (در صورت تغییر از مقدار پیش‌فرض 22).

جدول سوئیچ‌های مهم rsync

دستورات انتقال فایل در لینوکس

✅ مثال پیشرفته: انتقال دایرکتوری با حفظ تنظیمات، فشرده‌سازی، نمایش پیشرفت، ادامه انتقال نیمه‌کاره و استفاده از پورت سفارشی 2222:

rsync -avz --progress --partial -e "ssh -p 2222" /path/to/backup/ user@192.168.1.10:/backup/

🔹 با این روش، rsync نسبت به scp و ftp بهینه‌تر، سریع‌تر و قابل اطمینان‌تر است، مخصوصاً برای فایل‌های بزرگ و همگام‌سازی مداوم.

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

همگام‌سازی روزانه یا انتقال فایلهای بزرگ (مثل بکآپ‌ها).

وقتی میخواهید ترافیک شبکه کم شود (فقط تغییرات منتقل می‌شود).

مشکلش کجاست؟

برای کاربران تازه کار کمی پیچیده است.

اگر دستور را اشتباه بنویسید، ممکن است فایلها را جایگزین کنید!

Wget: دانلود از راه دور

Wget بیشتر شبیه یک چسب زخم است! اگر فایلی روی یک سرور از طریق لینک HTTP یا FTP در دسترس باشد، می‌توانید آن را مستقیماً روی سرور دوم دانلود کنید.

چطور کار میکند؟

دستور wget برای دانلود فایل‌ها از اینترنت یا سرورهای دیگر استفاده می‌شود. اگر فایلی روی اینترنت یا یک سرور عمومی قرار داشته باشد، می‌توان آن را مستقیماً روی سرور مقصد دانلود کرد، بدون نیاز به دانلود و آپلود دستی از سیستم شخصی.

به‌عنوان مثال، برای دانلود فایل data.zip از سرور ۱ به سرور ۲:

wget http://server1.com/files/data.zip -O /local/path/data.zip

🔹 توضیح اجزای دستور:

  • http://server1.com/files/data.zip → آدرس فایل روی سرور یا اینترنت.
  • -O /local/path/data.zip → محل ذخیره‌سازی فایل در سرور مقصد.

جدول سوئیچ‌های مهم wget

دستورات انتقال فایل در لینوکس

مثال پیشرفته: دانلود یک فایل حجیم با قابلیت ادامه دانلود (Resume) و محدود کردن سرعت به 500KB/s:

wget -c --limit-rate=500k http://server1.com/files/data.zip -O /local/path/data.zip

با این روش، wget برای دانلود فایل‌های عمومی از اینترنت، مستقیم و بدون نیاز به واسطه‌گری ایده‌آل است.

مشکلش کجاست؟

wget نمی‌تواند برای انتقال مستقیم فایل بین دو سرور خصوصی (که به هم دسترسی SSH دارند) استفاده شود. در واقع، این ابزار برای دانلود از URLهای عمومی طراحی شده است و نمی‌تواند به‌طور مستقیم فایل‌ها را از یک سرور به سرور دیگر منتقل کند، مانند scp یا rsync.

راهکارهای دیگر: وقتی نیاز به قدرت بیشتری دارید

NFS: اگر میخواهید یک پوشه از سرور دیگر را مستقیماً روی سرور خودتان «نصب» کنید (مثل وصل کردن یک هارد اکسترنال!). مناسب برای محیط‌هایی که دائماً به فایلها دسترسی دارید.

Tar + SSH: ترکیب جادویی! فایلها را فشرده کنید و از طریق SSH بفرستید:

tar czf - /path/to/files | ssh user@server2.com "tar xzf - -C /destination/"

این روش برای انتقال پوشه های سنگین عالی است.

پیشنهاد مطالعه: آموزش کامل و تصویری انتقال سایت از cPanel به cPanel با WHM

نتیجه‌گیری: کدام ابزار را انتخاب کنیم؟

سرعت و سادگی: SCP یا SFTP.

فایلهای بزرگ و همگامسازی: Rsync.

دسترسی دائمی به فایلها: NFS.

فایلهای عمومی: Wget.

محیط‌های داخلی غیرحساس: FTP.

انتخاب ابزار مناسب بستگی به نیاز شما دارد. مهم این است که همیشه به امنیت فکر کنید و برای داده‌های حساس از روشهای مبتنی بر SSH استفاده کنید. به قول قدیمیها: «با چکش مناسب به میخ بزن!» 🔨

منبع: [baeldung.com]

سوالات متداول

۱. چه ابزاری برای انتقال فایل بین دو سرور لینوکس مناسب‌تر است؟

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

  • SCP و SFTP برای انتقال امن فایل‌ها استفاده می‌شوند.
  • Rsync برای همگام‌سازی داده‌ها و انتقال تغییرات مفید است.
  • FTP برای انتقال فایل‌ها در شبکه‌های داخلی و زمانی که امنیت در اولویت نیست، مناسب است.
  • Wget برای دانلود فایل‌ها از اینترنت یا منابع عمومی کاربرد دارد.

۲. چطور می‌توانم دایرکتوری را با استفاده از SCP منتقل کنم؟

برای انتقال دایرکتوری‌ها با SCP، کافی است از سوئیچ -r (برای انتقال بازگشتی) استفاده کنید. به این صورت:

scp -r myfolder user@server2.com:/home/user/

این دستور دایرکتوری myfolder را به همراه تمام فایل‌ها و زیرشاخه‌هایش به سرور مقصد منتقل می‌کند.

۳. آیا می‌توانم انتقال فایل را در صورت قطع ارتباط ادامه دهم؟

بله، با استفاده از دستور rsync یا wget، می‌توانید انتقال نیمه‌کاره را ادامه دهید.

  • در rsync، از سوئیچ –partial برای ادامه انتقال استفاده کنید.
  • در wget، از سوئیچ -c برای ادامه دانلود فایل استفاده کنید.

۴. چه ابزاری برای انتقال فایل‌های بزرگ بین دو سرور لینوکس بهتر است؟

برای فایل‌های بزرگ، Rsync بهترین گزینه است زیرا تنها فایل‌های تغییرکرده را منتقل می‌کند، که باعث افزایش سرعت و کاهش ترافیک شبکه می‌شود. همچنین این ابزار قابلیت ادامه انتقال در صورت قطع ارتباط را نیز دارد.

این پست چقدر مفید بود؟

برای رتبه بندی روی یک ستاره کلیک کنید!

میانگین رتبه 0 / 5. تعداد آرا: 0

تاکنون هیچ رایی به دست نیامده است! اولین نفری باشید که این پست را رتبه بندی می کند.

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

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