| MSCP(1) | دستورهای کاربری | MSCP(1) |
نام (NAME)
mscp - کپی کردن فایلها از طریق چندین اتصال SSH
خلاصه دستور (SYNOPSIS)
mscp [-46vqDpdNh] [-n NR_CONNECTIONS] [-m COREMASK] [-u MAX_STARTUPS] [-I INTERVAL] [-W CHECKPOINT] [-R CHECKPOINT] [-s MIN_CHUNK_SIZE] [-S MAX_CHUNK_SIZE] [-a NR_AHEAD] [-b BUF_SIZE] [-L LIMIT_BITRATE] [-l LOGIN_NAME] [-P PORT] [-F SSH_CONFIG] [-o SSH_OPTION] [-i IDENTITY] [-J DESTINATION] [-c CIPHER] [-M HMAC] [-C COMPRESS] [-g CONGESTION] source ... target
توضیحات (DESCRIPTION)
برنامه mscp فایلها را از طریق چندین اتصال SSH (SFTP) و با استفاده از چندین رشته (thread) کپی میکند. این ابزار امکان (۱) انتقال همزمان چندین فایل و (۲) انتقال موازی یک فایل بزرگ را فراهم کرده و زمان انتقال را برای حجم زیادی از فایلها یا فایلهای بزرگ در بستر شبکه کاهش میدهد.
نحوه استفاده از mscp مشابه دستور scp در OpenSSH است؛ برای نمونه:
$ mscp srcfile user@example.com:dstfile
میزبانهای دوردست تنها کافی است نگارش استانداردی از sshd را که از زیرسیستم SFTP پشتیبانی میکند اجرا کنند، و کاربران نیز باید بتوانند طبق معمول با ssh به میزبانها متصل شوند. mscp به هیچ پیشنیاز دیگری احتیاج ندارد.
ابزار mscp از libssh به عنوان پیادهسازی SSH خود بهره میبرد. بنابراین، ویژگیهای پشتیبانیشدهٔ SSH مانند احراز هویت، رمزنگاری و گزینههای گوناگون در ssh_config، تابع مواردی هستند که libssh پشتیبانی میکند.
گزینهها (OPTIONS)
- -n NR_CONNECTIONS
- تعداد اتصالات SSH را مشخص میکند. مقدار پیشفرض از روی تعداد هستههای CPU در میزبان با فرمول زیر محاسبه میشود: floor(log(nr_cores)*2)+1.
- -m COREMASK
- هستههای CPU مورد استفاده را با یک بیتماسک هگزادسیمال تعیین میکند. برای مثال، -m 0x25 رشتهها را به هستههای ۰، ۲ و ۵ پردازنده سنجاق (pin) میکند. مقدار پیشفرض تعییننشده است: از تمامی هستههای CPU استفاده میشود و هیچ رشتهای به هستهٔ خاصی سنجاق نمیشود.
- -u MAX_STARTUPS
- تعداد تلاشهای همزمان برای برقراری اتصال احراز هویتنشدهٔ SSH را تعیین میکند. sshd تعداد تلاشهای همزمان اتصال SSH را از طریق MaxStartups در sshd_config محدود میکند. مقدار پیشفرض MaxStartups برابر با ۱۰ است؛ بنابراین، مقدار پیشفرض MAX_STARTUPS روی ۸ تنظیم شده است.
- -I INTERVAL
- فاصلهٔ زمانی (به ثانیه) بین تلاشهای اتصال SSH را مشخص میکند. برخی دیوارهای آتش (firewall) تلاشهای اتصال SSH از یک نشانی IP مبدأ در مدتی کوتاه را به عنوان حمله brute force شناسایی میکنند. این گزینه بین تلاشها وقفه ایجاد میکند تا از شناسایی شدن به عنوان حمله جلوگیری شود. مقدار پیشفرض 0 است.
- -W CHECKPOINT
- یک فایل بازرسی (checkpoint) را برای ذخیره وضعیت یک انتقال ناموفق تعیین میکند. هنگامی که فرایند انتقال به دلایلی چون قطع اتصال یا توقف توسط کاربر با شکست مواجه شود، mscp اطلاعات مربوط به فایلها و تکههای (chunks) باقیمانده را در فایل بازرسی مشخصشده مینویسد. گزینهٔ -W همراه با -D (حالت dry-run) صرفاً فایل بازرسی را ایجاد کرده و خارج میشود.
- -R CHECKPOINT
- یک فایل بازرسی (checkpoint) را برای ازسرگیری انتقال مشخص میکند. هنگامی که یک فایل بازرسی ارائه شود، mscp اطلاعات نقطه بازرسی را برای بارگذاری میزبان دوردست، جهت کپی، و فایلها و تکههایی که باید منتقل شوند میخواند. بدین صورت، mscp میتواند انتقال ناموفق قبلی را از نقطه بازرسی از سر بگیرد. ازسرگیری با فایل بازرسی نیازی به آرگومانهای source ... target ندارد. سایر گزینههای اتصال SSH مانند شماره درگاه (پورت) و فایل پیکربندی باید مانند اجرای ناموفق قبلی تعیین شوند. علاوه بر این، مسیرهای درون فایلهای بازرسی به صورت نسبی ذخیره شدهاند؛ بنابراین باید mscp را در همان دایرکتوری کاری اجرای ناموفق قبلی اجرا کنید. شما میتوانید محتویات یک فایل بازرسی را با دستور mscp -vv -D -R CHECKPOINT (در حالت Dry-run) مشاهده کنید. توجه داشته باشید که فایل بازرسی پس از پایان موفقیتآمیز انتقال بهطور خودکار حذف نمیشود. کاربران باید وضعیت خروجی mscp را بررسی کرده و در صورت بازگرداندن مقدار 0، فایل بازرسی را حذف کنند.
- -s MIN_CHUNK_SIZE
- حداقل اندازه تکه (chunk) را مشخص میکند. mscp هر فایل را به چندین تکه تقسیم کرده و آنها را به صورت موازی منتقل میکند. مقدار پیشفرض 16M بایت است.
- -S MAX_CHUNK_SIZE
- حداکثر اندازه تکه (chunk) را مشخص میکند. مقدار پیشفرض برابر با اندازه فایل تقسیم بر تعداد اتصالات و سپس تقسیم بر ۴ است. اگر مقدار محاسبهشده از مقدار MIN_CHUNK_SIZE کوچکتر باشد، مقدار MIN_CHUNK_SIZE اعمال خواهد شد..TP -a NR_AHEAD تعداد دستورات معلق (inflight) پروتکل SFTP را مشخص میکند. مقدار پیشفرض 32 است.
- -b BUF_SIZE
- اندازه بافر را برای I/O و انتقال بر روی SFTP مشخص میکند. مقدار پیشفرض 16384 است. توجه داشته باشید که مشخصات SSH اندازه بافر تحویلدادهشده روی SSH را محدود میکند. در حال حاضر تغییر این مقدار توصیه نمیشود.
- -L LIMIT_BITRATE
- نرخ بیت (bitrate) را محدود میکند، که با k (K)، m (M) و g (G) مشخص میشود؛ به عنوان مثال 100m نشاندهنده 100 Mbps است.
- -4
- تنها از آدرسهای IPv4 استفاده میکند.
- -6
- تنها از آدرسهای IPv6 استفاده میکند.
- -v
- سطح جزئیات خروجی (verbose) را افزایش میدهد.
- -q
- حالت بیصدا: تمام خروجیها را خاموش میکند.
- -D
- حالت اجرای آزمایشی (Dry-run): فایلهای مبدأ را برای کپی شدن بررسی میکند، قطعات (chunks) را محاسبه میکند، مسیرهای فایل مقصد را تعیین کرده و خارج میشود. حالت اجرای آزمایشی همراه با گزینه -vv میتواند فایلهایی را که باید کپی شوند و مسیرهای مقصد آنها را تأیید کند.
- -r
- بیاثر است. اگر مسیر مبدأ یک دایرکتوری باشد، mscp بهطور بازگشتی کپی میکند. این گزینه صرفاً برای سازگاری وجود دارد.
- -l LOGIN_NAME
- نام کاربری را برای ورود به ماشین راه دور مشخص میکند، مشابه با ssh(1).
- -P PORT
- شماره پورت را برای اتصال به ماشین راه دور مشخص میکند، مشابه با scp(1).
- -F SSH_CONFIG
- یک فایل پیکربندی ssh جایگزین به ازای هر کاربر را مشخص میکند. توجه داشته باشید گزینههای قابل قبول در فایل پیکربندی مواردی هستند که libssh از آنها پشتیبانی میکند.
- -o SSH_OPTION
- گزینههای ssh را در قالبی که در ssh_config استفاده میشود مشخص میکند. توجه داشته باشید گزینههای قابل قبول مواردی هستند که libssh از آنها پشتیبانی میکند.
- -i IDENTITY
- فایل هویت را برای احراز هویت با کلید عمومی مشخص میکند.
- -J DESTINATION
- میانبری برای تعریف دستورالعمل پیکربندی ProxyJump . هر نشست SFTP در mscp ابتدا با برقراری یک اتصال ssh به هاست واسط (jump host) مشخصشده توسط destination به هاست هدف متصل میشود.
- -c CIPHER
- رمز (cipher) مورد استفاده برای رمزنگاری انتقال داده را انتخاب میکند. mscp -h یا بخش Ciphers را در ویژگیهای libssh ببینید.
- -M HMAC
- الگوریتمهای درهمسازی MAC را مشخص میکند. mscp -h یا بخش MAC hashes را در ویژگیهای libssh ببینید.
- -C COMPRESS
- فشردهسازی را فعال میکند: yes، no، zlib، zlib@openssh.com. مقدار پیشفرض none است. ویژگیهای libssh را ببینید.
- -g CONGESTION
- الگوریتم کنترل ازدحام TCP را برای استفاده مشخص میکند (تنها در لینوکس). برای مقادیر موجود، sysctl net.ipv4.tcp_allowed_congestion_control را ببینید.
- -p
- زمانهای تغییر و زمانهای دسترسی را حفظ میکند (بیتهای حالت فایل بهطور پیشفرض حفظ میشوند).
- -d
- سطح خروجی اشکالزدایی (debug) برای ssh را افزایش میدهد.
- -N
- الگوریتم Nagle را فعال میکند. این الگوریتم بهطور پیشفرض غیرفعال است.
- -h
- راهنما را چاپ میکند..SH "وضعیت خروج (EXIT STATUS)" وضعیت خروج در صورت موفقیت 0، و در صورت رخ دادن خطا >0 است.
محیط (ENVIRONMENT)
دستور mscp متغیرهای محیطی زیر را شناسایی میکند.
- MSCP_SSH_AUTH_PASSWORD
- این متغیر محیطی، گذرواژهای را برای احراز هویت مبتنی بر گذرواژه به منظور برقراری اتصالهای SSH ارسال میکند.
- MSCP_SSH_AUTH_PASSPHRASE
- این متغیر محیطی، عبارت عبور (passphrase) را برای احراز هویت با کلید عمومی جهت برقراری اتصالهای SSH ارسال میکند.
نکات (NOTES)
دستور mscp از glob(3) برای تطبیق و بسط الگوهای نام مسیر (globbing)، شامل تطبیق الگوها برای مسیرهای محلی و دوردست استفاده میکند. با این حال، تطبیق الگو در سمت دوردست با musl libc (که در Alpine Linux و نسخه تکباینری mscp استفاده میشود) کار نمیکند؛ زیرا musl libc از GLOB_ALTDIRFUNC پشتیبانی نمیکند.
دستور mscp برخلاف scp از رونوشت دوردستبهدوردست (remote-to-remote) پشتیبانی نمیکند.
مثالها (EXAMPLES)
رونوشت از یک فایل محلی به یک میزبان دوردست با نامی دیگر:
$ mscp ~/src-file 10.0.0.1:copied-file
رونوشت از یک فایل محلی و یک دایرکتوری به /tmp در یک میزبان دوردست:
$ mscp ~/src-file dir1 10.0.0.1:/tmp
ذخیره یک نقطه بررسی (checkpoint) در صورت ناموفق بودن انتقال:
$ mscp -W mscp.checkpoint many-large-files 10.0.0.1:dst/
بررسی فایلها و تکههای باقیمانده و از سرگیری انتقال ناموفق:
# Dump the content of a checkpoint and exit (dry-run mode) $ mscp -vv -D -R mscp.checkpoint # resume transferring from the checkpoint $ mscp -R mscp.checkpoint
در یک شبکه با پهنای باند و تأخیر بالا (LFN)، گزینههای زیر ممکن است کارایی را بهبود بخشند:
$ mscp -n 64 -m 0xffff -a 64 -c aes128-gcm@openssh.com src 10.0.0.1:
گزینه -n تعداد اتصالهای SSH را نسبت به حالت پیشفرض افزایش میدهد، -m نخها را به هستههای پردازنده خاص متصل (pin) میکند، -a دستورهای همگامنشده در حال تبادل (inflight) WRITE/READ در SFTP را افزایش میدهد، و گزینه -c aes128-gcm@openssh.com بهویژه در میزبانهایی که از AES-NI پشتیبانی میکنند، سریعتر از رمزنگاری پیشفرض chacha20-poly1305 خواهد بود.
همچنین ببینید (SEE ALSO)
ارجاع مقاله (PAPER REFERENCE)
Ryo Nakamura and Yohei Kuga. 2023. Multi-threaded scp: Easy and Fast File Transfer over SSH. In Practice and Experience in Advanced Research Computing (PEARC '23). Association for Computing Machinery, New York, NY, USA, 320–323. DOI.
اطلاعات تماس (CONTACT INFORMATION)
برای ارسال وصلهها (patches)، گزارش خطاها یا درخواست ویژگیهای جدید، لطفاً یک مورد (issue) در GitHub باز کنید.
نویسندگان (AUTHORS)
Ryo Nakamura <upa@haeena.net>
| v0.2.4 | mscp |