CPIO(1) General Commands Manual CPIO(1)

cpio — کپی کردن فایلها به و از بایگانیها

cpio -i [options] [pattern ...] [< archive] cpio -o [options] < name-list [> archive] cpio -p [options] dest-dir < name-list

دستور cpio فایل‌ها را میان بایگانی‌ها و دایرکتوری‌ها کپی می‌کند. این پیاده‌سازی می‌تواند از tar، pax، cpio، zip، jar، ar و تصاویر cdrom دارای ISO 9660 استخراج کند و می‌تواند بایگانی‌های tar، pax، cpio، ar و shar ایجاد کند.

نخستین گزینه برای cpio یک نشانگر حالت از فهرست زیر است:

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

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

, --null
خواندن نام فایل‌های جداشده با نویسه‌های NUL به جای خطوط جدید. این گزینه در صورتی که هر یک از نام فایل‌های در حال خواندن حاوی خط جدید باشد، ضروری است.
, --pwb
هنگام خواندن یک بایگانی با قالب باینری، فرض می‌کند که این بایگانی از نسخه قدیمی‌تر مربوط به گونه PWB از ویرایش ششم UNIX است. هنگام نوشتن یک بایگانی cpio، از قالب PWB استفاده می‌کند.
, --binary
(تنها در حالت o) هنگام نوشتن یک بایگانی cpio، از قالب باینری (جدیدتر، غیر PWB) استفاده می‌کند.
(تنها در حالت o) الحاق به بایگانی مشخص‌شده. (هنوز پیاده‌سازی نشده است.)
(حالت‌های o و p) بازنشانی زمان‌های دسترسی فایل‌ها پس از خوانده شدن آنها.
(تنها در حالت o) بلوک‌بندی خروجی در رکوردهای ۵۱۲۰ بایتی.
size
(تنها در حالت o) بلوک‌بندی خروجی در رکوردهای size بایتی.
(تنها در حالت o) استفاده از قالب نویسه‌ای قابل‌حمل قدیمی POSIX. معادل با --format odc.
, --make-directories
(حالت‌های i و p) ایجاد دایرکتوری‌ها در صورت لزوم.
file
(تنها در حالت i) خواندن فهرست الگوهای نام فایل از file جهت فهرست‌گیری و استخراج.
file, --file file
خواندن بایگانی از یا نوشتن بایگانی در file.
pattern
(تنها در حالت i) نادیده گرفتن فایل‌هایی که با pattern مطابقت دارند.
format, --format format
(تنها در حالت o) تولید بایگانی خروجی در قالب مشخص‌شده. قالب‌های پشتیبانی‌شده عبارتند از:
cpio
مترادف برای odc.
newc
قالب قابل‌حمل cpio در SVR4.
odc
قالب بایگانی هشت‌بیتی قدیمی و قابل‌حمل POSIX.1 cpio.
pax
قالب pax در POSIX.1، گسترشی از قالب ustar.
ustar
قالب tar در POSIX.1.

قالب پیش‌فرض odc است. برای اطلاعات کامل‌تر درباره قالب‌هایی که در حال حاضر توسط کتابخانه زیربنایی libarchive(3) پشتیبانی می‌شوند، libarchive-formats(5) را ببینید.

, --help
چاپ اطلاعات نحوه استفاده.
file
خواندن بایگانی از file.
, --extract
حالت ورودی. توضیحات آن در بالا آمده است.
(تنها در حالت‌های i و p) غیرفعال کردن بررسی‌های امنیتی هنگام استخراج یا کپی. این گزینه امکان استخراج از طریق پیوندهای نمادین، مسیرهای مطلق و نام مسیرهای حاوی ‘..’ در نام را فراهم می‌کند.
, --xz
(تنها در حالت o) فشرده‌سازی فایل با فشرده‌ساز سازگار با xz پیش از نوشتن آن. در حالت ورودی، این گزینه نادیده گرفته می‌شود؛ فشرده‌سازی xz به طور خودکار در ورودی تشخیص داده می‌شود.
مترادف برای -y.
(حالت‌های o و p) تمامی پیوندهای نمادین دنبال خواهند شد. به طور معمول، پیوندهای نمادین به صورت پیوند نمادین بایگانی و کپی می‌شوند. با این گزینه، هدف پیوند به جای آن بایگانی یا کپی خواهد شد.
, --link
(تنها در حالت p) ایجاد پیوند از دایرکتوری مقصد به فایل‌های اصلی، به جای کپی کردن.
(تنها در حالت o) فشرده‌سازی بایگانی حاصل با lrzip(1). در حالت ورودی، این گزینه نادیده گرفته می‌شود.
(تنها در حالت o) فشرده‌سازی بایگانی با فشرده‌ساز سازگار با lz4 پیش از نوشتن آن. در حالت ورودی، این گزینه نادیده گرفته می‌شود؛ فشرده‌سازی lz4 به طور خودکار در ورودی تشخیص داده می‌شود.
(تنها در حالت o) فشرده‌سازی بایگانی با فشرده‌ساز سازگار با zstd پیش از نوشتن آن. در حالت ورودی، این گزینه نادیده گرفته می‌شود؛ فشرده‌سازی zstd به طور خودکار در ورودی تشخیص داده می‌شود.
(تنها در حالت o) فشرده‌سازی فایل با فشرده‌ساز سازگار با lzma پیش از نوشتن آن. در حالت ورودی، این گزینه نادیده گرفته می‌شود؛ فشرده‌سازی lzma به طور خودکار در ورودی تشخیص داده می‌شود.
(تنها در حالت o) فشرده‌سازی بایگانی حاصل با lzop(1). در حالت ورودی، این گزینه نادیده گرفته می‌شود.
passphrase
عبارت عبور passphrase برای استخراج یا ایجاد یک بایگانی رمزگذاری‌شده استفاده می‌شود. در حال حاضر، zip تنها قالبی است که cpio می‌تواند بایگانی‌های رمزگذاری‌شده آن را مدیریت کند. نباید از این گزینه استفاده کنید مگر آنکه متوجه باشید استفاده از این گزینه چقدر ناامن است.
, --preserve-modification-time
(حالت‌های i و p) تنظیم زمان تغییر فایل در فایل‌های ایجادشده مطابق با زمان‌های موجود در مبدأ.
, --numeric-uid-gid
(حالت i، تنها همراه با -t) نمایش عددی uid و gid. به طور پیش‌فرض، cpio هنگامی که نام‌های کاربر و گروه در بایگانی ارائه شده باشند، آنها را نمایش می‌دهد، یا نام‌های کاربر و گروه را در پایگاه داده گذرواژه سیستم جستجو می‌کند.
(تنها در حالت i) عدم تلاش برای بازیابی مالکیت فایل. این حالت پیش‌فرض هنگام اجرا توسط کاربران غیر ریشه (non-root) است.
file
نوشتن بایگانی در file.
, --create
حالت خروجی. توضیحات آن در بالا آمده است.
, --pass-through
حالت انتقال مستقیم. توضیحات آن در بالا آمده است.
(تنها در حالت i) بازیابی مالکیت فایل. این حالت پیش‌فرض هنگام اجرا توسط کاربر ریشه (root) است.
جلوگیری از نمایش پیام‌های غیرضروری.
[user][:][group], --owner [user][:][group]
تنظیم مالک و/یا گروه برای فایل‌ها در خروجی. اگر گروه بدون کاربر مشخص شود (برای مثال، -R :wheel) آنگاه گروه تنظیم خواهد شد اما کاربر نه. اگر کاربر با دونقطه در انتها و بدون گروه مشخص شود (برای مثال، -R root:) آنگاه گروه روی گروه پیش‌فرض کاربر تنظیم خواهد شد. اگر کاربر بدون دونقطه در انتها مشخص شود، آنگاه کاربر تنظیم خواهد شد اما گروه نه. در حالت‌های -i و -p -، این گزینه تنها توسط کاربر ارشد (super-user) قابل استفاده است. (برای سازگاری، می‌توان به جای دونقطه از نقطه نیز استفاده کرد.)
(تمامی حالت‌ها.) تغییر نام تعاملی فایل‌ها. برای هر فایل، اعلانی حاوی نام فایل در /dev/tty نوشته می‌شود و یک خط از /dev/tty خوانده می‌شود. اگر خط خوانده‌شده خالی باشد، از آن فایل صرف‌نظر می‌شود. اگر خط حاوی یک تک‌نقطه باشد، فایل به صورت عادی پردازش می‌شود. در غیر این صورت، آن خط به عنوان نام جدید فایل در نظر گرفته می‌شود.
, --list
(تنها در حالت i) فهرست کردن محتویات بایگانی در stdout؛ محتویات را روی دیسک بازیابی نمی‌کند.
, --unconditional
(حالت‌های i و p) رونویسی بی‌قیدوشرط روی فایل‌های موجود. به طور معمول، یک فایل قدیمی‌تر روی فایل جدیدتر در دیسک رونویسی نخواهد شد.
, --dot
چاپ یک نقطه در stderr برای هر فایل هنگام پردازش آن. با -v جایگزین شده است.
, --verbose
چاپ نام هر فایل در stderr هنگام پردازش آن. همراه با -t -، فهرست مفصلی از هر فایل ارائه می‌دهد.
چاپ اطلاعات نسخه برنامه و خروج.
(تنها در حالت o) فشرده‌سازی بایگانی با فشرده‌ساز سازگار با bzip2 پیش از نوشتن آن. در حالت ورودی، این گزینه نادیده گرفته می‌شود؛ فشرده‌سازی bzip2 به طور خودکار در ورودی تشخیص داده می‌شود.
(تنها در حالت o) فشرده‌سازی بایگانی با فشرده‌ساز سازگار با compress پیش از نوشتن آن. در حالت ورودی، این گزینه نادیده گرفته می‌شود؛ فشرده‌سازی به طور خودکار در ورودی تشخیص داده می‌شود.
(تنها در حالت o) فشرده‌سازی بایگانی با فشرده‌ساز سازگار با gzip پیش از نوشتن آن. در حالت ورودی، این گزینه نادیده گرفته می‌شود؛ فشرده‌سازی gzip به طور خودکار در ورودی تشخیص داده می‌شود.

The cpio utility exits 0 on success, and >0 if an error occurs.

متغیرهای محیطی زیر بر اجرای cpio تأثیر می‌گذارند:

تنظیمات محلی (locale) مورد استفاده. برای اطلاعات بیشتر environ(7) را ببینید.
منطقه زمانی مورد استفاده هنگام نمایش تاریخ‌ها. برای اطلاعات بیشتر environ(7) را ببینید.

دستور cpio به طور سنتی همراه با دستور find(1) برای کپی کردن سلسله‌مراتب فایل‌ها استفاده می‌شود. نخستین مثال در اینجا، به سادگی تمامی فایل‌ها را از src به dest کپی می‌کند:

find src | cpio -pmud dest

با انتخاب دقیق گزینه‌های دستور find(1) و ترکیب آن با سایر ابزارهای استاندارد، می‌توان کنترل بسیار دقیقی بر روی این که چه فایل‌هایی کپی شوند اعمال کرد. مثال بعدی فایل‌هایی را از src به dest کپی می‌کند که بیش از ۲ روز قدمت دارند و نام آنها با یک الگوی خاص مطابقت دارد:

find src -mtime +2 | grep foo[bar] | cpio -pdmu dest

این مثال فایل‌هایی را از src به dest کپی می‌کند که بیش از ۲ روز قدمت دارند و حاوی واژه “foobar” هستند:

find src -mtime +2 | xargs grep -l foobar | cpio -pdmu dest

گزینه‌های حالت i، o و p و همچنین گزینه‌های a، B، c، d، f، l، m، r، t، u و v با استاندارد SUSv2 مطابقت دارند.

استاندارد قدیمی POSIX.1 مشخص کرده بود که تنها -i -، -o و -p به عنوان گزینه‌های خط فرمان تفسیر شوند. هر یک از آنها یک تک‌آرگومان از فهرستی از نویسه‌های تغییردهنده را دریافت می‌کردند. برای مثال، نحو استاندارد -imu را مجاز می‌داند اما از -miu یا -i -m -u پشتیبانی نمی‌کند، چرا که m و u تنها تغییردهنده‌هایی برای -i هستند و به خودی خود گزینه خط فرمان محسوب نمی‌شوند. نحو پشتیبانی‌شده توسط این پیاده‌سازی با استاندارد سازگار با گذشته (backwards-compatible) است. برای بهترین سازگاری، اسکریپت‌ها باید خود را به نحو استاندارد محدود کنند.

bzip2(1), gzip(1), mt(1), pax(1), tar(1), libarchive(3), cpio(5), libarchive-formats(5), tar(5)

در حال حاضر هیچ استاندارد فعلی POSIX برای دستور cpio وجود ندارد؛ این دستور در ISO/IEC 9945-1:1996 (“POSIX.1”) ظاهر شد اما از IEEE Std 1003.1-2001 (“POSIX.1”) حذف گردید.

قالب‌های تبادل فایل cpio، ustar و pax توسط IEEE Std 1003.1-2001 (“POSIX.1”) برای دستور pax تعریف شده‌اند.

ابزارهای اصلی cpio و find توسط دیک هایت (Dick Haight) در حین کار در گروه پشتیبانی یونیکس AT&T نوشته شدند. آنها نخستین بار در سال ۱۹۷۷ در PWB/UNIX 1.0 ظاهر شدند، سیستم “Programmer's Work Bench” که برای استفاده در داخل AT&T توسعه یافته بود. آنها نخستین بار در خارج از AT&T به عنوان بخشی از System III Unix در سال ۱۹۸۱ منتشر شدند. در نتیجه، cpio در واقع بر tar تقدم تاریخی دارد، حتی با این که تا مدتی بعد در خارج از AT&T چندان شناخته‌شده نبود.

این یک پیاده‌سازی مجدد کامل بر پایه کتابخانه libarchive(3) است.

قالب بایگانی cpio چندین محدودیت اساسی دارد: این قالب نام‌های کاربر و گروه را ذخیره نمی‌کند و تنها شماره‌ها را ذخیره می‌کند. در نتیجه، نمی‌توان با اطمینان از آن برای انتقال فایل‌ها میان سیستم‌هایی با شماره‌گذاری متفاوت کاربران و گروه‌ها استفاده کرد. قالب‌های قدیمی‌تر cpio شماره‌های کاربر و گروه را به ۱۶ یا ۱۸ بیت محدود می‌کنند که برای سیستم‌های امروزی ناکافی است. قالب‌های بایگانی cpio نمی‌توانند از فایل‌های بزرگ‌تر از ۴ گیگابایت پشتیبانی کنند، به جز گونه‌ی “odc” که می‌تواند از فایل‌های تا ۸ گیگابایت پشتیبانی کند.

September 16, 2014 Linux 6.12.107+deb13-amd64