زمانی که کسب و کار شما گسترش پیدا کند و برای هر کدام از خدمات خود یک سرور مجازی جداگانه داشته باشید، ارتباط این دو سرویس مشکل میشود و در برخی موارد تنها باید با برنامه نویسی به شیوه Rest API ارتباط آنها را ایجاد کنید. اما در شرایط خاص شما باید بین این دو سرور مجازی فایل انتقال دهید و این مسئله، کار را پیچیده میکند. یک راه این است که ابتدا فایلها را بصورت از سرور اول دانلود کنید و سپس آنها را در سرور دوم آپلود کنید. اما این کار میتواند بسیار زمانبر، دشوار و حتی به کُندی انجام شود. در این شرایط بهتر است از ابزارهای مناسب برای انتقال فایل بین دو سرور مجازی لینوکس استفاده کنید. در ادامه ابزارهای کاربردی SCP - Rsync - SFTP در محیط ترمینال، برای این منظور را معرفی و بررسی خواهیم کرد.
آموزش وصل شدن به سرور مجازی لینوکس
آموزش کار با ابزار انتقال فایل SCP
SCP یا Secure Copy Protocol، پروتکل امن کپی در بستر شبکه است که برای انتقال امن فایلها و پوشهها بین سیستمهای لینوکس در یک شبکه استفاده میشود. SCP در ترمینال، از SSH برای رمزگذاری کامل دادهها در حین انتقال استفاده میکند و امنیت اطلاعات را تضمین میکند. این بدین معنی است که در صورتی که ترافیک شما مورد حمله هکرها قرار بگیرد، رمزنگاری فایلها همچنان از شنود اطلاعات شما محافظت خواهد کرد. با SCP، خیال خود را از انتقال امن فایلها راحت کنید. رابط کاربری ساده این ابزار و قدرتش در رمزگذاری اطلاعات، آن را به گزینهای ایدهآل برای جابجایی فایلها در سیستمهای لینوکس تبدیل کرده است. به همین دلیل SCP گزینه اول برای انتقال فایل بین دو سرور مجازی لینوکس شناخته میشود.
آموزش استفاده از نرم افزار WinSCP
موارد استفاده از SCP
-
انتقال فایلهای پیکربندی یا اسکریپتها به سرورها
-
آپلود و دانلود فایلهای وب
-
جابجایی فایلهای شخصی بین رایانهها
-
پشتیبانگیری از فایلها
برای کار با SCP باید از تونل امن SSH برای دسترسی به ترمینال استفاده کنید. از این رو قبل از استفاده از SCP مطمئن شوید که به موارد زیر دسترسی کامل دارید:
-
دسترسی به پوسته امن (SSH) در سرور: این شرط عبور و مرور امن شما در دنیای شبکه را تضمین میکند.
-
دسترسی ریشهای به هر دو سیستم مبدا و مقصد (اختیاری): با دسترسی ریشهای، میتوانید بدون دردسر و محدودیت، هر فایلی را که دوست دارید جابجا کنید. چرا که ممکن است بعضی از فایلها و پوشهها به مجوز دسترسی بالاتری نیاز داشته باشند.
-
برقراری اتصال Secure Shell در سیستم سرور: این اتصال، بستر امنی را برای جابجایی اطلاعات شما فراهم میکند.
راهنمای نصب 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 برای انتقال فایل ها بین دو سرور لینوکس، از یک استراتژی خاص استفاده میکند. این استراتژی شامل موارد زیر است :
-
مرحله اول/ شناسایی تفاوتها: Rsync ابتدا منبع و مقصد را اسکن می کند تا تفاوتهای بین آنها را از نظر فایلها، پوشهها و اطلاعات مربوط به آنها شناسایی کند.
-
مرحله دوم/ انتقال تغییرات: 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
دستور |
توضیح |
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 از پروتکلهای انتقال فایل محبوب مانند FTP، SFTP و FTPS پشتیبانی میکند، بنابراین میتوانید از آن برای اتصال به انواع سرورها استفاده کنید.
-
انتقال امن فایلها: FileZilla از رمزنگاری برای محافظت از دادههای شما در حین انتقال، جهت جلوگیری از شنود و دسترسی غیرمجاز استفاده میکند.
-
ویژگیهای پیشرفته: FileZilla دارای ویژگیهای پیشرفتهای مانند مدیریت سایت، صف انتظار، و ادامه انتقال ناقص است.
-
پشتیبانی از تمامی سیستمعاملها: FileZilla برای تمامی سیستمعاملهای ویندوز، مک، لینوک و حتی BSD توسعه یافته است و در دو نسخه Server و Client عرضه میشود تا از تمامی امکانات سیستمعامل بطور کامل استفاده کند.
نرمافزار WinSCP
WinSCP یک نرمافزار متنباز رایگان برای انتقال امن فایلها بین سیستمعامل ویندوز و سرور لینوکس از طریق پروتکلهای شبکه مختلف مانند SFTP، SCP و FTP است. از آنجا که سیستمعامل ویندوز بطور پیشفرض از SCP پشتیبانی نمیکند، WinSCP میتواند این خلع را پر کند و یک تونل بین ویدوز و لینوکس ایجاد کند؛ مخصوصاً اگر بخواهید بین دو سرور ویندوز و لینوکس بطور مستقیم فایل ارسال کنید.
مهمترین ویژگیهای WinSCP عبارتند از:
-
رابط کاربری گرافیکی ساده و آشنا: WinSCP دارای رابط کاربری گرافیکی مشابه با Windows Explorer است که استفاده از آن را برای کاربران ویندوز بسیار آسان میکند.
-
پشتیبانی از پروتکلهای انتقال فایل محبوب: WinSCP از پروتکلهای انتقال فایل محبوب مانند SFTP، SCP و FTP پشتیبانی میکند، بنابراین میتوانید از آن برای اتصال به انواع سرورها استفاده کنید.
-
انتقال امن فایلها: WinSCP از رمزگذاری برای محافظت از دادههای شما در حین انتقال و جلوگیری از دسترسی غیرمجاز استفاده میکند.
-
ویژگیهای پیشرفته: WinSCP دارای ویژگیهای پیشرفتهای مانند مدیریت جلسه، صف انتظار، و همگامسازی فایل و پوشه است.
نرمافزار Cyberduck
Cyberduck یک نرمافزار رایگان و متنباز برای انتقال امن فایلها بین سیستمعامل macOS و سرور لینوکس از طریق پروتکلهای شبکه مختلف مانند SFTP، SCP و FTP است. Cyberduck گزینه ایدهآلی برای کاربران macOS است که به دنبال راهی آسان و امن برای انتقال فایل بین سیستم خود و سرورها هستند.
مهمترین ویژگیهای 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