turkey vps

آموزش انتقال فایل بین دو سرور مجازی لینوکس

آموزش انتقال فایل بین دو سرور مجازی لینوکس
آموزش انتقال فایل بین دو سرور مجازی لینوکس
4 ماه پیش

زمانی که کسب و کار شما گسترش پیدا کند و برای هر کدام از خدمات خود یک سرور مجازی جداگانه داشته باشید، ارتباط این دو سرویس مشکل می‌شود و در برخی موارد تنها باید با برنامه نویسی به شیوه Rest API ارتباط آنها را ایجاد کنید. اما در شرایط خاص شما باید بین این دو سرور مجازی فایل انتقال دهید و این مسئله، کار را پیچیده می‌کند. یک راه این است که ابتدا فایل‌ها را بصورت از سرور اول دانلود کنید و سپس آنها را در سرور دوم آپلود کنید. اما این کار می‌تواند بسیار زمانبر، دشوار و حتی به کُندی انجام شود. در این شرایط بهتر است از ابزارهای مناسب برای انتقال فایل بین دو سرور مجازی لینوکس استفاده کنید. در ادامه ابزارهای کاربردی SCP - Rsync - SFTP در محیط ترمینال، برای این منظور را معرفی و بررسی خواهیم کرد.

آموزش وصل شدن به سرور مجازی لینوکس

آموزش کار با ابزار انتقال فایل SCP

SCP یا Secure Copy Protocol، پروتکل امن کپی در بستر شبکه است که برای انتقال امن فایل‌ها و پوشه‌ها بین سیستم‌های لینوکس در یک شبکه استفاده می‌شود. SCP در ترمینال، از SSH برای رمزگذاری کامل داده‌ها در حین انتقال استفاده می‌کند و امنیت اطلاعات را تضمین می‌کند. این بدین معنی است که در صورتی که ترافیک شما مورد حمله هکرها قرار بگیرد، رمزنگاری فایل‌ها همچنان از شنود اطلاعات شما محافظت خواهد کرد. با SCP، خیال خود را از انتقال امن فایل‌ها راحت کنید. رابط کاربری ساده این ابزار و قدرتش در رمزگذاری اطلاعات، آن را به گزینه‌ای ایده‌آل برای جابجایی فایل‌ها در سیستم‌های لینوکس تبدیل کرده است. به همین دلیل SCP گزینه اول برای انتقال فایل بین دو سرور مجازی لینوکس شناخته می‌شود.

آموزش استفاده از نرم افزار WinSCP

موارد استفاده از SCP

  • انتقال فایل‌های پیکربندی یا اسکریپت‌ها به سرورها

  • آپلود و دانلود فایل‌های وب

  • جابجایی فایل‌های شخصی بین رایانه‌ها

  • پشتیبان‌گیری از فایل‌ها

 

برای کار با SCP  باید از تونل امن SSH برای دسترسی به ترمینال استفاده کنید. از این رو قبل از استفاده از SCP مطمئن شوید که به موارد زیر دسترسی کامل دارید:

  • دسترسی به پوسته امن (SSH) در سرور: این شرط عبور و مرور امن شما در دنیای شبکه را تضمین می‌کند.

  • دسترسی ریشه‌ای به هر دو سیستم مبدا و مقصد (اختیاری): با دسترسی ریشه‌ای، می‌توانید بدون دردسر و محدودیت، هر فایلی را که دوست دارید جابجا کنید. چرا که ممکن است بعضی از فایل‌ها و پوشه‌ها به مجوز دسترسی بالاتری نیاز داشته باشند.

  • برقراری اتصال Secure Shell در سیستم سرور: این اتصال، بستر امنی را برای جابجایی اطلاعات شما فراهم می‌کند.

SSH چیست و چه کاربردی دارد؟

راهنمای نصب SCP

SCP نیازی به نصب جداگانه ندارد، چرا که معمولاً در بسته OpenSSH (Open Secure Shell) گنجانده شده است که در اکثر توزیع‌های لینوکس بصورت پیشفرض نصب شده است. با این حال از یک توزیع خاص از لینوکس استفاده می‌کنید که از نصب آن مطمئن نیستید، بهتر از قبل از هر چیز با دستور which scp در ترمینال از نصب SCP مطمئن شوید. اگر SCP نصب شده باشد، مسیر فایل دودویی scp نمایش داده می‌شود و اگر نصب نشده باشد، با یک پیغام خطا مواجه خواهید شد. اگر SCP نصب نشده باشد، می توانید با استفاده از مدیر بسته Package Manager توزیع خود آن را نصب کنید:

برای نصب SCP در توزیع‌های Debisn و Ubuntu و زیرشاخه‌های آنها می‌توانید از دستور زیر استفاده کنید:

sudo apt-get install openssh-client

برای نصب SCP در توزیع‌های RHEL مانند CentOS و Fedora و زیرشاخه‌های آنها می‌توانید از دستور زیر استفاده کنید:

sudo yum install openssh-clients

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

scp [OPTIONS] SOURCE DESTINATION

در این دستور

  • OPTIONS: پارامترهای مختلف برای شخصی‌سازی انتقال هستند.

  • SOURCE: محل فایل‌ها یا دایرکتوری‌ها در سرور اول که باید انتقال یابند.

  • DESTINATION: محل مقصد برای فایل‌ها یا دایرکتوری‌های انتقال یافته در سرور دوم.

در اینجا دستور اصلی SCP برای کپی کردن یک فایل به نام "myfile.txt" از سرور مبدا ("server1") به پوشه "/home/user/" در سرور مقصد ("server2") را مشاهده می‌کنید:

scp myfile.txt user@server2:/home/user/

شما می‌توانید با افزودن پارامترهای مختلف به این دستور، از قابلیت‌های بیشتر SCP نیز استفاده کنید. برای مثال بهتر است از پارامتر -p استفاده کنید تا پیشرفت انتقال را به صورت درصدی مشاهده کنید.

scp -p myfile.txt user@server2:/home/user/

در ادامه این پارامترها را بررسی خواهیم کرد:

پارامتر

توضیح

-c cipher

الگوریتم رمزگذاری را مشخص می کند. برخی از الگوریتم های رایج عبارتند از: aes128-cbc, aes256-cbc, blowfish-cbc. مقادیر پیش فرض aes128-cbc است.

-r

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

-l limit

حداکثر پهنای باند برای انتقال را در کیلو بایت در ثانیه مشخص می‌کند.

-o option

گزینه های خاص SCP را تنظیم می کند. برای مشاهده لیست کامل گزینه ها، از دستور man scp استفاده کنید.

-P port

پورت TCP را برای اتصال SSH مشخص می کند. پورت پیش فرض 22 است.

-i identity_file

از یک فایل کلید خصوصی برای احراز هویت به جای استفاده از رمز عبور استفاده می‌کند.

-F config_file

از یک فایل پیکر بندی جایگزین برای تنظیمات SCP استفاده می‌کند.

source_file

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

destination_file

مسیر مقصد برای فایل یا پوشه انتقال یافته.

-C

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

-b buffer_size

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

-B

امکان اجرا در حالت دسته ای و غیر فعال کردن تمام درخواست ها برای ورود کاربرد.

-o ssh_option

گزینه‌ها را روی پروتکل SSH در قالب ssh_config تنظیم می‌کند.

-i file

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

-F file

یک فایل پیکربندی جایگزین برای SSH مشخص می‌کند.

-h

لیستی از گزینه‌های فرمان را نشان می‌دهد.

-u

پس از تکمیل کپی، فایل اصلی را از سرور اول حذف می‌کند.

-d

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

-D debug_level

سطح اشکال زدایی را تنظیم می‌کند.

-Q

نمایش هر گونه آمار انتقال فایل را غیر فعال می‌کند.

-S program

از یک برنامه مشخص برای انجام رمزنگاری استفاده می‌کند.

-1

از پروتکل 1 استفاده می‌کند.

-2

از پروتکل 2 استفاده می‌کند

-v, --verbose

verbose جزئیات بیشتر در مورد انتقال فایل را نمایش می‌دهد.

-q, --quiet

حالت بی صدا را فعال می کند و از نمایش پیام های اطلاعاتی جلوگیری می‌کند.

--no-motd

متوقف کردن حالت دیمون MOTD (به راهنمای هشدار مراجعه کنید)

-c, --checksum

مرور بر اساس حالت checksum، نه زمان و اندازه.

-a, --archive

حالت آرشیو; برابر-rlptgoD (no -H,-A,-X)

--no-OPTION

گزینه رضایت موقت را غیرفعال میکند (e.g., --no-D)

-r, --recursive

بازگشت به دایرکتوری‌ها.

-R, --relative

از نام مسیرهای نسبی استفاده می‌کند.

--no-implied-dirs

دایرکتوری‌های قابل قبول را ارسال نمی‌کند --relative

-b, --backup

ایجاد نسخه پشتیبان (see --suffix & --backup-dir)

--backup-dir=DIR

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

--suffix=SUFFIX

پشتیان از پسوند  suffix (default ~ w/o --backup-dir)

-u, --update

از فایل های جدیدتر روی سرور مقصد چشم‌پوشی می‌کند.

--inplace

به روز رسانی فایل های مقصد در محل.

--append

داده ها را به فایل های کوتاه تر اضافه کنید.

--append-verify

-افزودن داده‌های قدیمی در چک جمع فایل.

-d, --dirs

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

-l, --links

پیوندهای نمادین را به عنوان پیوندهای نمادین کپی می‌کند.

-L, --copy-links

تبدیل symlink به فایل مرجع/dir

--copy-unsafe-links

فقط پیوندهای نمادین "ناامن" تبدیل میشوند.

--safe-links

پیوندهای علامتی که خارج از زیرشاخه هستند را نادیده بگیرید.

-k, --copy-dirlinks

تبدیل symlink به دایرکتوری به دایرکتوری مرجع.

-K, --keep-dirlinks

تبدیل symlink به دایرکتوری درون دایرکتوری مرجع.

-H, --hard-links

حفظ لینک های سخت.

-p, --perms

حفظ مجوزها.

-E, --executability

قابلیت اجرا را حفظ می‌کند.

--chmod=CHMOD

مجوزهای فایل و یا دایرکتوری را تحت تأثیر قرار می دهد.

-A, --acls

preserve ACLs (implies -p)

-X, --xattrs

حفظ ویژگی های توسعه یافته.

-o, --owner

حفظ مالکیت (فقط برای کاربر ریشه - ادمین)

-g, --group

حفظ گروه.

--devices

فایل های دستگاه را حفظ ‌می‌کند (فقط برای کاربر ریشه - ادمین)

--specials

حفظ فایل های خاص.

-D

به عنوان دستگاه های ویژه --devices --specials

-t, --times

حفظ اطلاعات تاریخ و زمان تغییرات.

-O, --omit-dir-times

چشم پوشی از دایرکتوری‌ها از زمان --times

--super

گیرنده تلاش می کند تا فعالیت های کاربر روت (ادمین) را انجام دهد.

--fake-super

ذخیره/بازیابی attrهای ممتاز با استفاده از xattrs.

-S, --sparse

مدیریت کارآمد فایل های پراکنده.

-n, --dry-run

اجرای آزمایشی را بدون هیچ تغییری انجام می‌دهد.

-W, --whole-file

کپی فایل‌ها به طور کامل (بدون الگوریتم delta-xfer)

-x, --one-file-system

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

-B, --block-size=SIZE

اندازه بلوک جمع کنترلی را ثابت می‌کند.

-e, --rsh=COMMAND

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

--rsync-path=PROGRAM

مسیر Rsync را برای اجرا در سرور مقصد مشخص می‌کند.

--existing

از ایجاد فایل های جدید در سرور مقصد چشم‌پوشی می‌کند.

--ignore-existing

از بروزرسانی فایل‌های موجود در سرور مقصد چشم‌پوشی می‌کند.

--remove-source-files

سرور مبدأ فایل‌های همگام شده را حذف می‌کند (غیر مستقیم).

--del

نام مستعار برای --delete-during

--delete

حذف فایل های اضافی از دایرکتوری‌های مقصد.

--delete-before

گیرنده قبل از انتقال حذف می‌شود نه در طول.

--delete-during

گیرنده در حین انتقال حذف می‌شود.

--delete-delay

پیدا کردن حذفیات در حین عملیات، حذف پس از عملیات.

--delete-after

فایل‌ها را پس از انتقال حذف می‌کند، نه در طول عملیات.

--delete-excluded

همچنین فایل های حذف شده را از دایرکتوری‌های مقصد حذف می‌کند.

--ignore-errors

delete even if there are I/O errors

--force

حذف اجباری دایرکتوری‌ها حتی اگر خالی نباشد.

--max-delete=NUM

بیش از NUM فایل را حذف نمی‌کند.

--max-size=SIZE

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

--min-size=SIZE

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

--partial

فایل های نیمه منتقل شده را نگه می‌دارد.

--partial-dir=DIR

یک فایل نیمه منتقل شده را در دایرکتوری قرار می‌دارد.

--delay-updates

در پایان تمام فایل های به روز شده را در جای خود قرار می‌دهد.

-m, --prune-empty-dirs

زنجیره های دایرکتوری خالی را از لیست فایل‌ها، جدا می‌کند.

--numeric-ids

مقادیر uid/gid را بر اساس نام کاربر/گروه ترسیم نمی‌کند.

--timeout=SECONDS

تنظیم ورودی/خروجی - I/O زمان مشخص شده timeout در ثانیه.

--contimeout=SECONDS

زمان پایان اتصال شبیه سازی daemon را در چند ثانیه تنظیم می‌کند.

-I, --ignore-times

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

--size-only

از فایل هایی که از نظر اندازه مطابقت دارند صرف نظر می‌کند.

--modify-window=NUM

زمان تغییرات را با دقت کمتر مقایسه می‌کند.

-T, --temp-dir=DIR

فایل های موقت را در دایرکتوری ایجاد می‌کند.

-y, --fuzzy

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

--compare-dest=DIR

همچنین فایل های دریافتی در سرور مقصد را نسبت به دایرکتوری سرور مبداً مقایسه می‌کند.

--copy-dest=DIR

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

--link-dest=DIR

بدون تغییر به فایل‌ها در دایرکتوری پیوند داده می‌شود.

-z, --compress

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

--compress-level=NUM

سطح فشرده سازی را به طور مشخص تنظیم می‌کند.

--skip-compress=LIST

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

-C, --cvs-exclude

نادیده گرفتن خودکار فایل‌هایی که در لیست فایل CVS مشخص شده‌اند.

-f, --filter=RULE

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

-F

same as --filter='dir-merge /.rsync-filter'

repeated: --filter='- .rsync-filter'

--exclude=PATTERN

حذف فایل‌های مطابق با PATTERN

--exclude-from=FILE

خواندن حذف الگوها از FILE

--include=PATTERN

فایل های مطابق با PATTERN را مستثنی نمی‌کند.

--include-from=FILE

خواندن ضمیمه الگوها از FILE

--files-from=FILE

لیست نام فایل منبع را از FILE می‌خواند.

-0, --from0

همه فایل های *from/filter با 0s محدود شده‌اند.

-s, --protect-args

بدون جدا کردن فضای خالی؛ فقط در کاراکترهای عام.

--address=ADDRESS

اتصال آدرس برای سوکت خروجی به شبیه ساز دیمون.

--port=PORT

شماره پورت جایگزین در دونقطه را مشخص می‌کند.

--sockopts=OPTIONS

گزینه های سفارشی TCP را مشخص می‌کند.

--blocking-io

از مسدود کردن ورودی/خروجی - I/O برای ترمینال راه دور استفاده می‌کند.

--stats

برخی از آمارهای انتقال فایل را ارائه می‌دهد.

-8, --8-bit-output

کاراکترهای بیت بالا را بدون فرار در خروجی رها می‌کند.

-h, --human-readable

خروجی اعداد در قالب قابل خواندن توسط انسان.

--progress

پیشرفت انتقال را نشان می‌دهد.

-P

پیشرفت انتقال را به صورت درصدی نشان می‌دهد.

-i, --itemize-changes

خروجی خلاصه تغییرات برای همه به روز رسانی ها.

--out-format=FORMAT

بروزرسانی خروجی با استفاده از FORMAT مشخص شده.

--log-file=FILE

آنچه را که انجام می دهیم با فایل مشخص شده ثبت می‌کند.

--log-file-format=FMT

بروزرسانی ها را با استفاده از FMT مشخص شده ثبت می‌کند.

--password-file=FILE

رمز ورود دیمون را از فایل password می‌خواند.

--list-only

فایل ها را به جای کپی لیست می‌کند.

--bwlimit=KBPS

محدود کردن ورودی/خروجی I/O پهنای باند ; KBytes بر مبنای کیلوبایت در ثانیه

--write-batch=FILE

یک بروزرسانی دسته‌ای برای FILE می‌نویسد.

--only-write-batch=FILE

مانند --write-batch اما بدون بروزرسانی مقصد.

--read-batch=FILE

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

--protocol=NUM

اجبار به استفاده از نسخه پروتکل قدیمی‌تر.

X

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

--checksum-seed=NUM

تنظیم بلوک/فایل جمع بررسی تکی (پیشرفته)

ي

فقط از آدرس های IPv4 استفاده می‌کند.

-6, --ipv6

فقط از آدرس های IPv6 استفاده می‌کند.

--version

نسخه SCP را نمایش می‌دهد.

-h, --help

صفحه راهنما را نمایش می‌دهد.

 

آموزش کار با ابزار انتقال فایل Rsync

Remote Synchronize به اختصار Rsync ابزاری قدرتمند برای همگام سازی فایل ها و دایرکتوری ها بین دو سرور لینوکس است. این ابزار به دلیل سرعت بالا، قابلیت اطمینان و پشتیبانی از پروتکل رمزنگاری SSH برای انتقال امن فایل‌ها، به یکی از گزینه‌های حرفه‌ای برای انتقال داده در سیستم های لینوکس تبدیل شده است. Rsync زمانی کاربرد دارد که شما می‌خواهید در هر دو سرور ساختار و ترتیب فایل‌ها و دایرکتوری‌ها دقیقاً مشابه هم باشند.

 

آشنایی با عملکرد Rsync

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

  1. مرحله اول/ شناسایی تفاوت‌ها: Rsync ابتدا منبع و مقصد را اسکن می کند تا تفاوت‌های بین آنها را از نظر فایل‌ها، پوشه‌ها و اطلاعات مربوط به آنها شناسایی کند.

  2. مرحله دوم/ انتقال تغییرات: Rsync فقط تغییرات شناسایی شده را به جای کل فایل‌ها یا پوشه‌ها انتقال می‌دهد. این مطلب باعث صرفه جویی در پهنای باند و زمان می‌شود، به خصوص هنگام همگام سازی دایرکتوری‌های بزرگ یا انتقال فایل‌هایی که فقط بروز شده‌اند.

مزایای استفاده از Rsync

صرفه‌جویی در پهنای باند: Rsync فقط بخش‌هایی از فایل را که تغییر کرده‌اند دانلود یا آپلود می‌کند، که این امر باعث صرفه‌جویی در پهنای باند و زمان می‌شود، به خصوص هنگام انتقال فایل‌های بزرگ یا به‌روزرسانی‌های مکرر.
فشرده‌سازی قبل از ارسال: Rsync فایل‌ها را قبل از انتقال فشرده می‌کند تا از پهنای باند کمتری استفاده کند.
انتقال امن فایل‌ها: Rsync از الگوریتم‌های تأیید کننده برای تضمین امنیت داده‌ها در حین انتقال استفاده می‌کند.
پشتیبانی از پروتکل‌های مختلف: Rsync از پروتکل‌های مختلفی از جمله SSH، rsh و local پشتیبانی می‌کند.
گزینه‌های پیشرفته: Rsync دارای پارامترهای متعدد برای شخصی‌سازی نحوه انتقال فایل‌ها است.

کار با Rsync دقیقاً مشابه SCP است، با این تفاوت که عملکرد آن مناسب همگام سازی فایل‌ها در دو سرور لینوکس است. در خط زیر ساختار دستور Rsync را مشاهده می‌کنید:

rsync [OPTIONS] SOURCE DESTINATION

در این دستور

  • OPTIONS: پارامترهای مختلف برای شخصی‌سازی انتقال هستند.

  • SOURCE: محل فایل‌ها یا دایرکتوری‌ها در سرور اول که باید انتقال یابند.

  • DESTINATION: محل مقصد برای فایل‌ها یا دایرکتوری‌های انتقال یافته در سرور دوم.

در اینجا دستور اصلی Rsync برای کپی کردن یک فایل به نام "myfile.txt" از سرور مبدا ("server1") به پوشه "/home/user/" در سرور مقصد ("server2") را مشاهده می‌کنید:

rsync myfile.txt user@server2:/home/user/

شما می‌توانید با افزودن پارامترهای مختلف به این دستور، از قابلیت‌های بیشتر Rsync نیز استفاده کنید. برای مثال بهتر است از پارامتر -p استفاده کنید تا پیشرفت انتقال را به صورت درصدی مشاهده کنید.

rsync -p myfile.txt user@server2:/home/user/

Rsync علاوه بر پارامترهایی که در SCP پشتیبانی می‌شود، چند پارامتر دیگر هم در گزینه‌های خود جای داده است که در ادامه این پارامترها را بررسی خواهیم کرد:

پارامتر

توضیح

--daemon

اجرای Rsync  به عنوان شبیه ساز دایمون.

--address=ADDRESS

به آدرس مشخص شده متصل می‌شود.

--bwlimit=KBPS

محدود کردن پهنای باند ورودی/خروجی؛ بر مبنای کیلوبایت در ثانیه.

--config=FILE

فایل جایگزین rsyncd.conf را مشخص می‌کند.

--no-detach

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

--port=PORT

شماره پورت جایگزین را تنظیم می‌کند.

--log-file=FILE

تنظیم "فایل گزارش" را بازنویسی می‌کند.

--log-file-format=FMT

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

--sockopts=OPTIONS

specify custom TCP options

-h, --help

صفحه راهنما را نمایش می‌دهد. (در صورتی که پس از پارامتر --daemon استفاده شود)

 

آموزش کار با پروتکل‌های انتقال فایل FTP و SFTP

اگر با پروتکل FTP به اختصار (File Transfer Protocol) آشنایی داشته باشید، می‌دانید که این پروتکل برای انتقال فایل بین دو کامپیوتر در شبکه اینترنت کاربرد دارد. اما FTP یک پروتکل ساده و اولین نسخهای است که بدون پشتیبانی از پروتکل‌های امنیتی کار می‌کند. پروتکل SFTP به اختصار (Secure File Transfer Protocol) نسخه پیشرفته‌تر و امن‌تر FTP است که فایل‌ها را قبل از ارسال با پروتکل SSH رمزنگاری می‌کند تا مورد حمله هکرها قرار نگیرد و قابل شنود نباشد. بنابراین SFTP می‌تواند گزینه مناسب و امن برای انتقال فایل بین دو سرور مجازی لینوکس باشد. SFTP هم در ترمینال کاربرد دارد و هم در برنامه FileZilla پشتیبانی می‌شود.

FTP چیست؟ آشنایی با پروتکل انتقال فایل داده و کاربردهای آن

کار با پروتکل SFTP در خط فرمان ترمینال

برای کار با SFTP در خط فرمان ترمینال، می‌توانید از دستور sftp استفاده کنید.

sftp username@server_address

در این دستور username نام کاربری شما در سرور SFTP است و server_address آدرس IP یا نام میزبان سرور SFTP است. پس از اتصال موفق، به یک محیط فرماندهی مشابه با FTP دسترسی خواهید داشت که البته در ادامه از شما کلمه عبور نیز درخواست می‌شود. از آنجا که پروتکل‌های FTP و SFTP هر دو دستورات مشترک دارند، ابتدا دستورات FTP و در ادامه دستورات افزوده شده در SFTP را بررسی می‌کنیم :

آموزش کار با پروتکل‌های انتقال فایل FTP و SFTP

دستورات FTP

دستور

توضیح

open

اتصال راه دور را با کامپیوتر دیگری برقرار می‌کند (ریموت‌زدن به کامپیوتر دیگر).

get

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

put

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

mget

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

mput

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

bye/quit

برای خروج از محیط FTP آماده می‌شود.

close

اتصال FTP را قطع می‌کند

ascii

حالت انتقال فایل به ASCII را فعال می‌کند.

binary

حالت انتقال فایل را به باینری فعال می‌کند.

 

اتصال به FTP سرور

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

$ ftp hostA
Connected to hostA.
220 hostA FTP server ready.
Name (hostA:user): user
331 Password required for user.
Password: password
230 User user logged in.
Remote system type is LINUX.

 

در مرحله دوم در صورتی که می‌خواهید فایل‌های متنی را انتقال دهید، حالت انتقال فایل را بر روی ascii تنظیم کنید. پیشنهاد می‌شود این حالت بر روی حالت binary تنظیم شود. برای حالت ascii دستور زیر را وارد کنید:

ftp> ascii
200 Type set to A.

 

برای حالت binary از دستور زیر استفاده کنید:

ftp> binary
200 Type set to A.

 

مرحله سوم ارسال و یا دریافت فایل است. برای مثال برای ارسال فایل sample.txt از دستور زیر استفاده کنید:

ftp> get sample.txt
200 PORT command successful.
150 Opening ASCII mode data connection for sample.txt (22 bytes).
226 Transfer complete.
local: sample.txt remote: sample.txt
22 bytes received in 0.012 seconds (1.54 Kbytes/s)

 

در آخر باید پس از اتمام کار، ارتباط FTP را با سرور میزبان، به کمک دستور زیر قطع کنید:

ftp> bye
 221-You have transferred 22 bytes in 1 files.
 221-Total traffic for this session was 126 bytes in 2 transfers. 221-Thank you for using the FTP service on hostA.
 221 Goodbye.

 

برای ارسال و دریافت چند فایل همزمان، کافی است نام فایل‌های درون یک دایرکتوری را با یک فاصله در کنار هم وارد کنید. برای ارسال فایل از دستور زیر استفاده کنید:

ftp>mput sample_file.1 sample_file.2

 

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

ftp> mget sample_file.1 sample_file.2

 

دستورات SFTP

SFTP (Secure File Transfer Protocol) پروتکلی شبکه است که برای انتقال امن فایل‌ها بین سیستم‌های لینوکس و سرورها استفاده می‌شود. SFTP از SSH برای رمزگذاری اتصال و محافظت از داده‌ها در برابر شنود و دسترسی غیرمجاز استفاده می‌کند. در این جدول به برخی از مهمترین دستورات SFTP و توضیح آنها اشاره شده است:

دستور

توضیح

sftp username@server_address

به یک سرور SFTP با نام کاربری و آدرس سرور مشخص شده اتصال برقرار می‌کند.

ls

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

cd directory

دایرکتوری فعلی را به دایرکتوری مشخص شده تغییر می‌دهد.

get remote_file local_file

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

put local_file remote_file

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

mkdir directory

یک دایرکتوری را در سرور ایجاد می‌کند.

rmdir directory

یک دایرکتوری خالی را از سرور حذف می‌کند.

rm remote_file

یک فایل را از سرور حذف می‌کند.

pwd

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

help

لیست دستورات SFTP را نمایش می‌دهد.

exit

از محیط SFTP خارج می‌شود.

چند مثال استفاده از SFTP

دانلود یک فایل به نام "myfile.txt" از سرور به پوشه "/home/user/local/" در سیستم محل :

sftp user@server_address
get /path/to/myfile.txt /home/user/local/myfile.txt

 

آپلود یک فایل به نام "myfile.txt" از سیستم محلی به پوشه "/home/user/" در سرور:

sftp user@server_address
put /home/user/myfile.txt /home/user/myfile.txt

 

ایجاد یک دایرکتوری به نام "new_dir" در سرور:

sftp user@server_address
mkdir new_dir

 

حذف یک فایل به نام "myfile.txt" از سرور:

sftp user@server_address
rm /home/user/myfile.txt

 

همچنین می‌توانید از دستورات FTP معمول نیز در محیط SFTP استفاده کنید.
برای خروج از محیط SFTP، از دستور exit استفاده کنید.
برای اطلاعات بیشتر و مشاهده لیست کامل دستورات، از صفحه man sftp استفاده کنید.

 

تفاوت حالت ascii با binary در FTP و SFTP

حالت پیشفرض ascii تنها برای فایل‌ها کوچک و متنی کاربرد دارد. این نوع فایل‌ها، فرمت‌های متنی ساده txt ، json ، base64 ، xml ، svg ، html ، css ، js ، سورس برنامه نویسی و هر نوع فایل که شامل محتوای متنی باشد را شامل می‌شود. عبارت ASCII مخفف American Standard Code for Information Interchange و به معنای "کد استاندارد آمریکایی برای تبادل اطلاعات" است که در سال 1960 به عنوان یک استاندارد جهانی برای ذخیره سازی اطلاعات متنی به کار می‌رفت که بعداً با فرمت‌های قدتمندتر همچون Unicode-8 و Unicode-16 جایگزین شد تا بتواند همزمان تمامی زبان‌های جهان را پشتیبانی و ذخیره کند. هرچند استفاده از حالت ascii در FTP امروزه کاربردی ندارد و با توجه به سرعت بالای اینترنت، هیچ نیازی به تغییر حالت ارسال نیست و برای اجرای بهتر انتقال فایل‌ها بهتر است از حالت binary استفاده شود که فایل را بدون دستکاری و مستقیم ارسال می‌کند.

 

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

علاوه بر پروتکل‌هایی که معرفی شدند. می‌توان از ابزارهای گرافیکی نیز برای استفاده از SCP و SFTP استفاده کرد که در ادامه به معرفی و بررسی آنها خواهیم پرداخت.

نرم‌افزار FileZilla

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

آموزش کار با FileZilla

مهمترین ویژگی‌های FileZilla عبارتند از:

  • رابط کاربری گرافیکی ساده و قابل استفاده: FileZilla دارای رابط کاربری گرافیکی آسانی است که استفاده از آن را برای کاربران در هر سطحی آسان می‌کند.

  • پشتیبانی از پروتکل‌های انتقال فایل مختلف: FileZilla از پروتکل‌های انتقال فایل محبوب مانند FTP، SFTP و FTPS پشتیبانی می‌کند، بنابراین می‌توانید از آن برای اتصال به انواع سرورها استفاده کنید.

  • انتقال امن فایل‌ها: FileZilla از رمزنگاری برای محافظت از داده‌های شما در حین انتقال، جهت جلوگیری از شنود و دسترسی غیرمجاز استفاده می‌کند.

  • ویژگی‌های پیشرفته: FileZilla دارای ویژگی‌های پیشرفته‌ای مانند مدیریت سایت، صف انتظار، و ادامه انتقال ناقص است.

  • پشتیبانی از تمامی سیستم‌عامل‌ها: FileZilla برای تمامی سیستم‌عامل‌های ویندوز، مک، لینوک و حتی BSD توسعه یافته است و در دو نسخه Server و Client عرضه می‌شود تا از تمامی امکانات سیستم‌عامل بطور کامل استفاده کند.

نرم‌افزار FileZilla

نرم‌افزار WinSCP

WinSCP یک نرم‌افزار متن‌باز رایگان برای انتقال امن فایل‌ها بین سیستم‌عامل ویندوز و سرور لینوکس از طریق پروتکل‌های شبکه مختلف مانند SFTP، SCP و FTP است. از آنجا که سیستم‌عامل ویندوز بطور پیشفرض از SCP پشتیبانی نمی‌کند، WinSCP می‌تواند این خلع را پر کند و یک تونل بین ویدوز و لینوکس ایجاد کند؛ مخصوصاً اگر بخواهید بین دو سرور ویندوز و لینوکس بطور مستقیم فایل ارسال کنید.

نرم‌افزار WinSCP

مهمترین ویژگی‌های WinSCP عبارتند از:

  • رابط کاربری گرافیکی ساده و آشنا: WinSCP دارای رابط کاربری گرافیکی مشابه با Windows Explorer است که استفاده از آن را برای کاربران ویندوز بسیار آسان می‌کند.

  • پشتیبانی از پروتکل‌های انتقال فایل محبوب: WinSCP از پروتکل‌های انتقال فایل محبوب مانند SFTP، SCP و FTP پشتیبانی می‌کند، بنابراین می‌توانید از آن برای اتصال به انواع سرورها استفاده کنید.

  • انتقال امن فایل‌ها: WinSCP از رمزگذاری برای محافظت از داده‌های شما در حین انتقال و جلوگیری از دسترسی غیرمجاز استفاده می‌کند.

  • ویژگی‌های پیشرفته: WinSCP دارای ویژگی‌های پیشرفته‌ای مانند مدیریت جلسه، صف انتظار، و همگام‌سازی فایل و پوشه است.

 

نرم‌افزار Cyberduck

Cyberduck یک نرم‌افزار رایگان و متن‌باز برای انتقال امن فایل‌ها بین سیستم‌عامل macOS و سرور لینوکس از طریق پروتکل‌های شبکه مختلف مانند SFTP، SCP و FTP است. Cyberduck گزینه ایده‌آلی برای کاربران macOS است که به دنبال راهی آسان و امن برای انتقال فایل بین سیستم خود و سرورها هستند.

نرم‌افزار Cyberduck

مهمترین ویژگی‌های Cyberduck عبارتند از:

  • رابط کاربری گرافیکی ساده و آشنا: Cyberduck دارای رابط کاربری گرافیکی مشابه با Finder در macOS است که استفاده از آن را برای کاربران macOS بسیار آسان می‌کند.

  • پشتیبانی از پروتکل‌های انتقال فایل محبوب: Cyberduck از پروتکل‌های انتقال فایل محبوب مانند SFTP، SCP و FTP پشتیبانی می‌کند، بنابراین می‌توانید از آن برای اتصال به انواع سرورها استفاده کنید.

  • انتقال امن فایل‌ها: Cyberduck از رمزگذاری برای محافظت از داده‌های شما در حین انتقال و جلوگیری از دسترسی غیرمجاز استفاده می‌کند.

  • ویژگی‌های پیشرفته: Cyberduck دارای ویژگی‌های پیشرفته‌ای مانند مدیریت کلید SSH، انتقال با صف، و همگام‌سازی فایل و پوشه است.

 

سخن پایانی

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

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

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

در حال حاظر سه ابزار SCP - rsync - SFTP  از ابزارهای کاربردی برای انتقال فایل بین دو سرور مجازی لینوکس هستند.

تفاوت Rsync  با SCP در چیست؟

کار با Rsync دقیقاً مشابه SCP فایل‌ها و دایرکتوری‌ها را در دو سرور لینوکس منتقل می‌کند، با این تفاوت که عملکرد Rsync مناسب همگام سازی فایل‌ها در دو سرور لینوکس است؛ بطوری که در هر دو سرور دایرکتوری‌های مورد نظر دقیقاً مشابه هم و هم اندازه هم باشند.

Rsync چگونه کار می‌کند؟

در حله اول تفاوت فایل‌ها را شناسایی می‌کند و در مرحله دوم تغییرات در سرور مبدأ را در سرور مقصد انتقال می‌دهد.

مزایای استفاده از Rsync کدام موارد هستند؟

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

بهترین نرم‌افزارهای انتقال فایل برای پروتکل SCP و SFTP کدام موارد هستند؟

نرم‌افزار FileZilla برای پروتکل FTP و SFTP در همه سیستم‌عامل‌ها، نرم‌افزار WinSCP برای پروتکل SCP در سیستم‌عامل ویندوز و نرم‌افزار Cyberduck برای پروتکل SCP در سیستم‌عامل  MacOS

author
Mina seyfollahzadeh- نویسنده

563
A
A