RZ(1) General Commands Manual RZ(1)

rx, rb, rz - دریافت فایل با پروتکل‌های XMODEM، YMODEM و ZMODEM (دسته‌ای)

rz [- +8abeOpqRtTuUvy]
rb [- +abqRtuUvy]
rx [- abceqRtuUv] file
[-][v]rzCOMMAND

این برنامه از پروتکل‌های تصحیح خطا برای دریافت فایل‌ها از طریق یک درگاه سریال شماره‌گیری ورودی (dial-in) از برنامه‌های مختلف در حال اجرا تحت PC-DOS، CP/M، Unix و دیگر سیستم‌عامل‌ها استفاده می‌کند. این ابزار را می‌توان به‌طور دستی از اعلان شل فراخوانی کرد، یا به‌طور خودکار در نتیجه دستور «... sz file» که به برنامه فراخوان داده می‌شود اجرا نمود.

در حالی که rz آن‌قدر هوشمند است که از درون cu(1) فراخوانی شود، نسخه‌های بسیار کمی از cu(1) به‌اندازه کافی هوشمند هستند که اجازه دهند rz به‌درستی کار کند. نگارش‌های یونیکسی Professional-YAM برای چنین برنامه‌های شماره‌گیری خروجی (dial-out) در دسترس هستند.

دستور Rz (دریافت ZMODEM) فایل‌ها را با پروتکل دسته‌ای ZMODEM دریافت می‌کند. نام مسیرها توسط برنامه فرستنده ارائه می‌شوند و در صورت لزوم (و امکان‌پذیر بودن) دایرکتوری‌ها ساخته می‌شوند. به‌طور معمول، دستور «rz» به‌طور خودکار توسط برنامه فراخوان ZMODEM ارسال می‌شود، اما برخی از پیاده‌سازی‌های معیوب ZMODEM ممکن است نیازمند اجرای rz به شیوه سنتی و دستی باشند.

دستور Rb فایل(ها) را با پروتکل YMODEM دریافت می‌کند و هم سکتورهای استاندارد ۱۲۸ بایتی و هم سکتورهای ۱۰۲۴ بایتی را می‌پذیرد (گزینه -k در sb برنامه YAM). کاربر باید تعیین کند که آیا طول بلوک ۱۰۲۴ بایتی واقعاً بدون ایجاد افت داده یا خرابی سیستم، نرخ انتقال (throughput) را بهبود می‌بخشد یا خیر.

اگر اطلاعات فایلِ پروتکل True YMODEM (علامت تجاری Omen Technology) شامل طول فایل و غیره دریافت شود، طول فایل تعداد بایت‌های نوشته‌شده روی مجموعه داده خروجی را تعیین می‌کند، و زمان تغییر و مجوزهای فایل (file mode) (در صورت غیرصفر بودن) بر همان اساس تنظیم می‌شوند.

اگر هیچ اطلاعاتی از نوع True YMODEM دریافت نشود، اسلش‌ها در نام مسیر به زیرخط (underscore) تبدیل می‌شوند و هرگونه نقطه در انتهای نام مسیر حذف خواهد شد. این تبدیل برای فایل‌های دریافت‌شده از سیستم‌های CP/M مفید است. در YMODEM، نام هر فایل به حروف کوچک تبدیل می‌شود مگر اینکه شامل یک یا چند حرف کوچک باشد.

دستور Rx یک تک‌فایل file را با پروتکل XMODEM یا XMODEM-1k دریافت می‌کند. کاربر باید بررسی کند که آیا طول بلوک ۱۰۲۴ بایتی واقعاً بدون ایجاد مشکل باعث بهبود کارایی می‌شود یا خیر. کاربر باید نام فایل را به هر دو برنامه فرستنده و گیرنده بدهد. ممکن است تا ۱۰۲۳ نویسه زائد (garbage) به انتهای فایل دریافت‌شده افزوده شود.

دستور Rz را می‌توان به صورت rzCOMMAND نیز اجرا کرد (با یک علامت - اختیاری در ابتدا، همان‌طور که توسط login(1) تولید می‌شود). به ازای هر فایل دریافت‌شده، rz محتوای فایل را از طریق لوله به «COMMAND filename» هدایت می‌کند که در آن filename نام فایل منتقل‌شده است و محتویات فایل به عنوان ورودی استاندارد به آن داده می‌شود.

هر انتقال فایل زمانی تأیید می‌شود که COMMAND با وضعیت خروج ۰ پایان یابد. هر وضعیت خروج غیرصفر باعث خاتمه انتقال‌ها می‌شود.

یک کاربرد رایج برای این حالت rzrmail است که rmail(1) را فرامی‌خواند تا نامه‌ای را برای کاربرِ مشخص‌شده با نام فایل انتقال‌یافته ارسال کند. برای نمونه، ارسال فایل «caf» از یک سیستم PC-DOS به rzrmail در یک سیستم Unix منجر به ارسال محتویات فایل داس «caf» به کاربر «caf» خواهد شد.

در برخی سیستم‌های Unix دایرکتوری ورود باید حاوی پیوندی به COMMAND باشد، زیرا برنامه login مقدار SHELL=rsh را تنظیم می‌کند که استفاده از مسیرهای مطلق را ممنوع می‌سازد. در صورت اجرا با حرف «v» در ابتدای نام، rz خروجی پرجزئیات تولید خواهد کرد (گزینه v را ببینید). مدخل زیر برای Unix SYS III/V کاربرد دارد:
rzrmail::5:1::/bin:/usr/local/rzrmail
اگر متغیر محیطی SHELL شامل rsh ، rbash یا rksh (شل محدود) باشد، rz نام مسیرهای مطلق یا ارجاع به دایرکتوری والد را نخواهد پذیرفت، فایلی را که از قبل موجود است دستکاری نخواهد کرد، و هر فایلی را که با خطا دریافت شده باشد حذف می‌کند.

اگر rz به گونه‌ای فراخوانی شود که stdout و stderr آن به مجموعه‌داده‌های متفاوتی هدایت شده باشند، سطح جزئیات خروجی (Verbose) روی ۲ تنظیم می‌شود که باعث ارسال فریم‌به‌فریم گزارش‌های پیشرفت به stderr می‌گردد. این قابلیت را می‌توان با گزینه q غیرفعال کرد..SH "گزینه‌ها (OPTIONS)" معانی گزینه‌های موجود عبارتند از:

-+, --append
الحاق داده‌های دریافتی به یک فایل موجود (فقط ZMODEM و ASCII).
تبدیل فایل‌ها به قراردادهای Unix با حذف کاراکترهای بازگشت به ابتدای سطر (carriage return) و تمامی کاراکترهای پس از اولین Control Z (پایان فایل در CP/M).
نادیده‌گیری و انتقال فایل به صورت دودویی (binary) (همان‌طور که واقعاً هست).
بافر کردن NUMBER بایت پیش از نوشتن بر روی دیسک. مقدار پیش‌فرض ۳۲۷۶۸ است که باید برای بیشتر شرایط کافی باشد. اگر دستگاه کندی دارید، رابط دیسک شما ضعیف است یا دچار مشکلات سخت‌افزاری دیگری هستید، ممکن است بخواهید اندازهٔ بافر را افزایش دهید. -1 یا auto از بافری به اندازهٔ کافی بزرگ برای بافر کردن کل فایل استفاده می‌کنند. در استفاده از این گزینه محتاط باشید؛ در صورتی که سیستم شروع به سواپ (swap) کند، اوضاع معمولاً بدتر خواهد شد، نه بهتر.
فقط برای XMODEM. استفاده از CRC شانزده بیتی (به طور معمول یک جمع کنترلی تک‌بایتی استفاده می‌شود).
اجازه دادن به اجرای دستورها از راه دور ( ناامن ). این گزینه به ارسال‌کننده اجازه می‌دهد تا یک دستور دلخواه را از طریق system () یا execl () اجرا کند. مقدار پیش‌فرض، غیرفعال بودن این قابلیت است (؟). در صورت اجرا در حالت محدودشده (restricted)، این گزینه نادیده گرفته می‌شود.
ارسال داده‌های فایل خروجی به dev/null/؛ برای آزمایش. (فقط در Unix)
انتظار به مدت N ثانیه پیش از انجام هر کاری.
مجبور کردن ارسال‌کننده به گریز دادن (escape) همهٔ کاراکترهای کنترلی؛ به طور معمول کاراکترهای XON، XOFF، DLE، CR-@-CR و Ctrl-X گریز داده می‌شوند.
تغییر نام فایل دریافتی در صورتی که نام فایل مقصد از قبل وجود داشته باشد. به انتهای نام فایل جدید یک نقطه و یک عدد (از ۰ تا ۹۹۹) افزوده خواهد شد.
نمایش صفحهٔ راهنما.
توقف انتقال در صورتی که نرخ BPS (بایت بر ثانیه) برای مدت‌زمان مشخصی به کمتر از N افت کند (گزینهٔ --min-bps-time را ببینید).
به همراه --min-bps استفاده می‌شود. مقدار پیش‌فرض ۱۲۰ (ثانیه) است.
غیرفعال کردن کد مدیریت مهلت زمانی (timeout) خواندن. این گزینه در صورتی که فرستنده دادهٔ دیگری ارسال نکند باعث معلق ماندن lrz می‌شود، اما کارایی را (کمی) افزایش داده و بار سیستم را (از طریق کاهش حدود ۵۰ درصدی تعداد فراخوانی‌های سیستمی) کم می‌کند.

از این گزینه با احتیاط استفاده کنید.

باز کردن فایل‌های خروجی در حالت نوشتن همگام (synchronous). این گزینه ممکن است هنگامی مفید باشد که هنگام نوشتن بافرها روی دیسک توسط update (یا bdflush یا هر دیمن دیگری که در سیستم شما بدین منظور است)، به دلیل وقفه‌های از دست رفته دچار خطا می‌شوید.

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

(در ZMODEM) محافظت: نادیده گرفتن فایل در صورت وجود داشتن فایل مقصد.
حالت بی‌صدا، پیام‌های تفصیلی را پنهان می‌کند.
حالت بازیابی پس از خرابی (crash recovery). برنامهٔ lrz تلاش می‌کند انتقال‌های متوقف‌شدهٔ فایل را از سر بگیرد.
ورود به حالت محدودتر. اگر این گزینه دو بار داده شود، lrz دایرکتوری‌ها یا فایل‌هایی که نامشان با نقطه شروع می‌شود را ایجاد نخواهد کرد.

برای اطلاعات بیشتر دربارهٔ حالت محدودشده، بخش SECURITY را ببینید.

توقف انتقال در ساعت HH و دقیقهٔ MM . گونه‌ای دیگر، با استفاده از +N به جای HH:MM ، انتقال را پس از N ثانیه متوقف می‌کند.
درخواست بستهٔ همگام‌سازی زمان (timesync) از ارسال‌کننده. ارسال‌کننده زمان سیستم خود را ارسال می‌کند و در صورت وجود اختلاف بیش از ۶۰ ثانیه، lrz هشدار می‌دهد.

اگر این گزینه دو بار داده شود، lrz تلاش می‌کند تا زمان سیستم محلی را با زمان دوردست تنظیم کند (اگر lrz توسط ریشه (root) اجرا نشود، این عمل ناموفق خواهد بود).

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

فعال یا غیرفعال کردن ثبت گزارش‌های سیستم (syslog). مقدار پیش‌فرض هنگام پیکربندی و کامپایل تعیین می‌شود. در صورتی که پشتیبانی از syslog کامپایل نشده باشد، این گزینه نادیده گرفته می‌شود.
تغییر مهلت زمانی به TIM دهم ثانیه. اگر مدیریت مهلت زمانی از طریق گزینهٔ O غیرفعال شده باشد، این مورد نادیده گرفته می‌شود.
عمل کردن به عنوان کلاینت tcp/ip: اتصال به پورت داده‌شده.

برای اطلاعات بیشتر، --tcp-server را ببینید.

عمل کردن به عنوان سرور: باز کردن یک سوکت، چاپ کارهایی که باید انجام شود و منتظر ماندن برای برقراری اتصال.

به طور معمول نیازی به استفاده از این گزینه نخواهید داشت زیرا lrzsz تنها پیاده‌سازی zmodem است که این سازوکار را درک می‌کند (یک افزونهٔ اختصاصی). در صورتی ممکن است بخواهید از این گزینه استفاده کنید که مجبور به استفاده از zmodem باشید (به هر دلیلی)، و نتوانید از گزینهٔ --tcp در lsz استفاده کنید (احتمالاً به این دلیل که telnet شما اجازهٔ اجرای برنامه‌ای محلی با اتصال ورودی/خروجی استاندارد به سمت دوردست را نمی‌دهد).

اگر از این گزینه استفاده کنید باید lsz را با گزینهٔ --tcp-client ADDRESS:PORT اجرا کنید. lrz در هنگام راه‌اندازی، آدرس و پورت را چاپ خواهد کرد.

استفاده از این گزینه با خطرات امنیتی همراه است؛ ممکن است فرد دیگری در این میان به پورت متصل شود. برای جزئیات، بخش SECURITY را ببینید.

غیرفعال کردن حالت محدودشده (در صورتی که برنامه تحت یک شل محدودشده اجرا شود، این کار ممکن نیست).
شمارهٔ نسخه را چاپ می‌کند.
حالت پرحرف (verbose). باعث الحاق فهرستی از نام‌های فایل به stderr می‌شود. تکرار بیشتر v خروجی بیشتری تولید می‌کند.
تنظیم اندازهٔ پنجره روی N.
استفاده از پروتکل XMODEM.
بله، بازنویسی روی هر فایل موجود دیگری با همین نام.
استفاده از پروتکل YMODEM.
استفاده از پروتکل ZMODEM. برخلاف ZMODEM اصلی، lrz به‌طور پیش‌فرض در حالت محدودشده (restricted mode) کار می‌کند. در حالت محدودشده، lrz نام مسیرهای مطلق یا ارجاع به یک دایرکتوری والد را نمی‌پذیرد، فایل‌های موجود را تغییر نمی‌دهد، و هر فایلی را که همراه با خطا دریافت شده باشد حذف می‌کند. اجرای دستور از راه دور غیرفعال است.

برای استفاده از یک حالت محدودتر، متغیر محیطی ZMODEM_RESTRICTED را مقداردهی کنید یا گزینهٔ R را مشخص نمایید. این کار ایجاد زیردایرکتوری‌ها و فایل‌های نامرئی (پنهان) را غیرفعال می‌کند.

حالت محدودشده می‌تواند با گزینهٔ U خاموش شود، مگر اینکه lrz تحت یک شل محدودشده (restricted shell) اجرا شده باشد.

استفاده از گزینه‌های
--tcp-client یا --tcp-server یک مخاطرهٔ امنیتی به همراه دارد، زیرا ممکن است پیش از شما شخص دیگری به پورت متصل شده و داده‌هایتان را برباید. اگر تقاضای زیادی برای یک حالت امن‌تر وجود داشته باشد، ممکن است نوعی چالش رمز عبور (password challenge) به آن اضافه کنم.

دستور lrz از متغیرهای محیطی زیر استفاده می‌کند:

اگر این متغیر شامل rsh یا rksh باشد، lrz یک شل محدودشده را تشخیص می‌دهد.
اگر این متغیر تنظیم شده باشد، lrz وارد حالت محدودتر می‌شود.

(دستور Pro-YAM)

<ALT-2>
دستور Pro-YAM: sz *.h *.c
(این کار به‌طور خودکار rz را در سیستم متصل‌شده فراخوانی می‌کند.)

ZMODEM.DOC, YMODEM.DOC, Professional-YAM, crc(omen), sz(omen), usq(omen), undos(omen)

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

ارسال داده‌های سریال به مینی‌کامپیوترهای اشتراک‌زمانی (timesharing) با سرعت‌های بالای مداوم، به عنوان عامل قفل شدن، توقف کامل سیستم (system halts)، وحشت هسته (kernel panics)، و رفتارهای غیرعادی گاه‌به‌گاه شناخته شده است. هنگام آزمایش ورودی پرسرعت به یک سیستم، در صورتی که انتقال فایل‌ها ناموفق بود، راه‌اندازی مجدد (reboot) سیستم را مد نظر داشته باشید، به‌ویژه اگر رفتار سیستم دگرگون‌شده به نظر می‌رسد.

پارامتر "ulimit" در Unix باید به اندازه کافی بالا تنظیم شود تا اجازه انتقال فایل‌های بزرگ داده شود.

بافربندی ورودی TTY در برخی سیستم‌ها ممکن است اجازه بلوک‌های طولانی یا ورودی جریانی (streaming) در سرعت بالا را ندهد. هنگامی که نمی‌توانید داده‌ها را با سرعت بالا با استفاده از ZMODEM،‏ YMODEM-1k یا XMODEM-1k به سیستم Unix ارسال کنید، در حالی که YMODEM با بلوک‌های ۱۲۸ بایتی به درستی کار می‌کند، باید به این مشکل مشکوک شوید. اگر مدیریت خط tty سیستم واقعاً دچار ایراد باشد، پورت سریال یا کل سیستم ممکن است در برابر هجوم داده‌های پیوسته (bursts) پرسرعت دوام نیاورد.

پارامتر عددی zmodem l در DSZ یا Pro-YAM می‌تواند روی مقداری بین ۶۴ تا ۱۰۲۴ تنظیم شود تا طول burst را محدود کند ("zmodem pl128").

کد CRC ۳۲-بیتی به لطف Gary S. Brown فراهم شده است. کد ایجاد دایرکتوری برگرفته از برنامهٔ PD TAR متعلق به John Gilmore است.

فراخوانی rz از بیشتر نسخه‌های cu(1) کار نمی‌کند، زیرا فرایند دریافت در cu با rz بر سر دریافت نویسه‌ها از مودم رقابت می‌کند.

برنامه‌هایی که پروتکل انتقال فایلِ مشخص‌شده را به‌درستی پیاده‌سازی نکرده‌اند ممکن است باعث شوند sz پورت را برای یک یا دو دقیقه معلق (hang) کند. تمام موارد گزارش‌شده از این مشکل با استفاده از ZCOMM،‏ Pro-YAM، یا برنامه‌های دیگر که پیاده‌سازی صحیحی از پروتکل مشخص‌شده دارند برطرف شده است.

بسیاری از برنامه‌هایی که ادعای پشتیبانی از YMODEM را دارند تنها از XMODEM با بلوک‌های 1k پشتیبانی می‌کنند، و اغلب حتی همان را هم به درستی پیاده نکرده‌اند.

نام مسیرها به ۱۲۷ نویسه محدود شده‌اند. در حالت تک‌فایلی XMODEM، نام مسیر ارائه‌شده در خط فرمان همچنان به روشی که در بالا شرح داده شد پردازش می‌شود. تبدیل CR/LF به NL در گزینهٔ ASCII تنها CRها را حذف می‌کند؛ برنامهٔ undos(omen) تبدیل هوشمندانه‌تری انجام می‌دهد.

نسخهٔ VMS زمان فایل را تنظیم نمی‌کند.

ممکن است تعامل ورودی/خروجی استاندارد VMS C و RMS محتویات فایل را به‌طور غیرمنتظره‌ای تغییر دهد.

نسخهٔ VMS از فراخوانی به صورت rzCOMMAND پشتیبانی نمی‌کند. نسخهٔ فعلی VMS از XMODEM،‏ XMODEM-1k یا YMODEM پشتیبانی نمی‌کند.

طبق مستندات VMS، روال ورودی بافربندی‌شده که در نسخهٔ VMS نرم‌افزار rz به‌کار رفته است، تأخیری تا یک ثانیه برای هر تراکنش پروتکل ایجاد می‌کند. این تأخیر ممکن است برای فایل‌های بسیار کوتاه چشمگیر باشد. حذف خط "#define BUFREAD" از rz.c این تأخیر را به بهای افزایش مصرف CPU برطرف خواهد کرد.

نسخهٔ VMS در برخی شرایط خطا باعث می‌شود DCL پیام خطایی عجیب و بی‌ربط تولید کند؛ این امر ناشی از عدم سازگاری تابع "exit" در VMS با استاندارد Unix/MSDOS است..SH "قابلیت‌های ZMODEM (ZMODEM CAPABILITIES)" Rz از درخواست‌های ورودی ZMODEM برای حالت دودویی (-b)، اسکی (-a)، محافظت (-p)، رونویسی (-y) و الحاق (-+) پشتیبانی می‌کند. پیش‌فرض بر روی محافظت (-p) و دودویی (-b) تنظیم شده است.

نسخه‌های Unix از اجرای دستورات ZMODEM پشتیبانی می‌کنند.

rz.c, crctab.c, rbsb.c, zm.c, zmodem.h فایل‌های منبع Unix.

rz.c, crctab.c, vrzsz.c, zm.c, zmodem.h, vmodem.h, vvmodem.c, فایل‌های منبع VMS.

OMEN