| CPIO(1) | General Commands Manual | CPIO(1) |
نام (NAME)
cpio —
کپی کردن
فایلها به و
از
بایگانیها
خلاصه دستور (SYNOPSIS)
cpio -i
[options] [pattern ...]
[< archive] cpio
-o [options]
< name-list [> archive]
cpio -p
[options] dest-dir
< name-list
توضیحات (DESCRIPTION)
دستور
cpio
فایلها را
میان
بایگانیها
و
دایرکتوریها
کپی میکند.
این
پیادهسازی
میتواند
از tar، pax، cpio، zip،
jar، ar و تصاویر
cdrom دارای ISO 9660
استخراج
کند و
میتواند
بایگانیهای
tar، pax، cpio، ar و shar
ایجاد کند.
نخستین
گزینه برای
cpio یک
نشانگر
حالت از
فهرست زیر
است:
-i- ورودی. یک
بایگانی را
از ورودی
استاندارد
میخواند
(مگر آنکه
جایگزین
شده باشد) و
محتویات آن
را روی دیسک
استخراج
میکند یا
(در صورتی
که گزینه
-tمشخص شده باشد) فهرست محتویات را در خروجی استاندارد نمایش میدهد. اگر یک یا چند الگوی فایل مشخص شده باشد، تنها فایلهایی که با یکی از الگوها مطابقت داشته باشند استخراج خواهند شد. -o- خروجی. فهرستی از نام فایلها را از ورودی استاندارد میخواند و یک بایگانی جدید حاوی موارد مشخصشده در خروجی استاندارد (مگر آنکه جایگزین شده باشد) تولید میکند.
-p- انتقال مستقیم. فهرستی از نام فایلها را از ورودی استاندارد میخواند و فایلها را در دایرکتوری مشخصشده کپی میکند.
گزینهها (OPTIONS)
مگر در مواردی که صراحتاً خلاف آن ذکر شده باشد، گزینهها در تمامی حالتهای کاری قابل استفاده هستند.
-0,--null- خواندن نام فایلهای جداشده با نویسههای NUL به جای خطوط جدید. این گزینه در صورتی که هر یک از نام فایلهای در حال خواندن حاوی خط جدید باشد، ضروری است.
-6,--pwb- هنگام خواندن یک بایگانی با قالب باینری، فرض میکند که این بایگانی از نسخه قدیمیتر مربوط به گونه PWB از ویرایش ششم UNIX است. هنگام نوشتن یک بایگانی cpio، از قالب PWB استفاده میکند.
-7,--binary- (تنها در حالت o) هنگام نوشتن یک بایگانی cpio، از قالب باینری (جدیدتر، غیر PWB) استفاده میکند.
-A- (تنها در حالت o) الحاق به بایگانی مشخصشده. (هنوز پیادهسازی نشده است.)
-a- (حالتهای o و p) بازنشانی زمانهای دسترسی فایلها پس از خوانده شدن آنها.
-B- (تنها در حالت o) بلوکبندی خروجی در رکوردهای ۵۱۲۰ بایتی.
-Csize- (تنها در حالت o) بلوکبندی خروجی در رکوردهای size بایتی.
-c- (تنها در
حالت o)
استفاده از
قالب
نویسهای
قابلحمل
قدیمی POSIX.
معادل با
--formatodc. -d,--make-directories- (حالتهای i و p) ایجاد دایرکتوریها در صورت لزوم.
-Efile- (تنها در حالت i) خواندن فهرست الگوهای نام فایل از file جهت فهرستگیری و استخراج.
-Ffile,--filefile- خواندن بایگانی از یا نوشتن بایگانی در file.
-fpattern- (تنها در حالت i) نادیده گرفتن فایلهایی که با pattern مطابقت دارند.
-Hformat,--formatformat- (تنها در
حالت 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) را ببینید.
-h,--help- چاپ اطلاعات نحوه استفاده.
-Ifile- خواندن بایگانی از file.
-i,--extract- حالت ورودی. توضیحات آن در بالا آمده است.
--insecure- (تنها در حالتهای i و p) غیرفعال کردن بررسیهای امنیتی هنگام استخراج یا کپی. این گزینه امکان استخراج از طریق پیوندهای نمادین، مسیرهای مطلق و نام مسیرهای حاوی ‘..’ در نام را فراهم میکند.
-J,--xz- (تنها در حالت o) فشردهسازی فایل با فشردهساز سازگار با xz پیش از نوشتن آن. در حالت ورودی، این گزینه نادیده گرفته میشود؛ فشردهسازی xz به طور خودکار در ورودی تشخیص داده میشود.
-j- مترادف
برای
-y. -L- (حالتهای o و p) تمامی پیوندهای نمادین دنبال خواهند شد. به طور معمول، پیوندهای نمادین به صورت پیوند نمادین بایگانی و کپی میشوند. با این گزینه، هدف پیوند به جای آن بایگانی یا کپی خواهد شد.
-l,--link- (تنها در حالت p) ایجاد پیوند از دایرکتوری مقصد به فایلهای اصلی، به جای کپی کردن.
--lrzip- (تنها در حالت o) فشردهسازی بایگانی حاصل با lrzip(1). در حالت ورودی، این گزینه نادیده گرفته میشود.
--lz4- (تنها در حالت o) فشردهسازی بایگانی با فشردهساز سازگار با lz4 پیش از نوشتن آن. در حالت ورودی، این گزینه نادیده گرفته میشود؛ فشردهسازی lz4 به طور خودکار در ورودی تشخیص داده میشود.
--zstd- (تنها در حالت o) فشردهسازی بایگانی با فشردهساز سازگار با zstd پیش از نوشتن آن. در حالت ورودی، این گزینه نادیده گرفته میشود؛ فشردهسازی zstd به طور خودکار در ورودی تشخیص داده میشود.
--lzma- (تنها در حالت o) فشردهسازی فایل با فشردهساز سازگار با lzma پیش از نوشتن آن. در حالت ورودی، این گزینه نادیده گرفته میشود؛ فشردهسازی lzma به طور خودکار در ورودی تشخیص داده میشود.
--lzop- (تنها در حالت o) فشردهسازی بایگانی حاصل با lzop(1). در حالت ورودی، این گزینه نادیده گرفته میشود.
--passphrasepassphrase- عبارت عبور
passphrase برای
استخراج یا
ایجاد یک
بایگانی
رمزگذاریشده
استفاده
میشود. در
حال حاضر، zip
تنها قالبی
است که
cpioمیتواند بایگانیهای رمزگذاریشده آن را مدیریت کند. نباید از این گزینه استفاده کنید مگر آنکه متوجه باشید استفاده از این گزینه چقدر ناامن است. -m,--preserve-modification-time- (حالتهای i و p) تنظیم زمان تغییر فایل در فایلهای ایجادشده مطابق با زمانهای موجود در مبدأ.
-n,--numeric-uid-gid- (حالت i،
تنها همراه
با
-t) نمایش عددی uid و gid. به طور پیشفرض،cpioهنگامی که نامهای کاربر و گروه در بایگانی ارائه شده باشند، آنها را نمایش میدهد، یا نامهای کاربر و گروه را در پایگاه داده گذرواژه سیستم جستجو میکند. --no-preserve-owner- (تنها در حالت i) عدم تلاش برای بازیابی مالکیت فایل. این حالت پیشفرض هنگام اجرا توسط کاربران غیر ریشه (non-root) است.
-Ofile- نوشتن بایگانی در file.
-o,--create- حالت خروجی. توضیحات آن در بالا آمده است.
-p,--pass-through- حالت انتقال مستقیم. توضیحات آن در بالا آمده است.
--preserve-owner- (تنها در حالت i) بازیابی مالکیت فایل. این حالت پیشفرض هنگام اجرا توسط کاربر ریشه (root) است.
--quiet- جلوگیری از نمایش پیامهای غیرضروری.
-R[user][:][group],--owner[user][:][group]- تنظیم مالک
و/یا گروه
برای
فایلها در
خروجی. اگر
گروه بدون
کاربر مشخص
شود (برای
مثال،
-R:wheel) آنگاه گروه تنظیم خواهد شد اما کاربر نه. اگر کاربر با دونقطه در انتها و بدون گروه مشخص شود (برای مثال،-Rroot:) آنگاه گروه روی گروه پیشفرض کاربر تنظیم خواهد شد. اگر کاربر بدون دونقطه در انتها مشخص شود، آنگاه کاربر تنظیم خواهد شد اما گروه نه. در حالتهای-iو-p-،این گزینه تنها توسط کاربر ارشد (super-user) قابل استفاده است. (برای سازگاری، میتوان به جای دونقطه از نقطه نیز استفاده کرد.) -r- (تمامی حالتها.) تغییر نام تعاملی فایلها. برای هر فایل، اعلانی حاوی نام فایل در /dev/tty نوشته میشود و یک خط از /dev/tty خوانده میشود. اگر خط خواندهشده خالی باشد، از آن فایل صرفنظر میشود. اگر خط حاوی یک تکنقطه باشد، فایل به صورت عادی پردازش میشود. در غیر این صورت، آن خط به عنوان نام جدید فایل در نظر گرفته میشود.
-t,--list- (تنها در حالت i) فهرست کردن محتویات بایگانی در stdout؛ محتویات را روی دیسک بازیابی نمیکند.
-u,--unconditional- (حالتهای i و p) رونویسی بیقیدوشرط روی فایلهای موجود. به طور معمول، یک فایل قدیمیتر روی فایل جدیدتر در دیسک رونویسی نخواهد شد.
-V,--dot- چاپ یک نقطه
در stderr برای هر
فایل هنگام
پردازش آن.
با
-vجایگزین شده است. -v,--verbose- چاپ نام هر
فایل در stderr
هنگام
پردازش آن.
همراه با
-t-،فهرست مفصلی از هر فایل ارائه میدهد. --version- چاپ اطلاعات نسخه برنامه و خروج.
-y- (تنها در حالت o) فشردهسازی بایگانی با فشردهساز سازگار با bzip2 پیش از نوشتن آن. در حالت ورودی، این گزینه نادیده گرفته میشود؛ فشردهسازی bzip2 به طور خودکار در ورودی تشخیص داده میشود.
-Z- (تنها در حالت o) فشردهسازی بایگانی با فشردهساز سازگار با compress پیش از نوشتن آن. در حالت ورودی، این گزینه نادیده گرفته میشود؛ فشردهسازی به طور خودکار در ورودی تشخیص داده میشود.
-z- (تنها در حالت o) فشردهسازی بایگانی با فشردهساز سازگار با gzip پیش از نوشتن آن. در حالت ورودی، این گزینه نادیده گرفته میشود؛ فشردهسازی gzip به طور خودکار در ورودی تشخیص داده میشود.
کدهای خروج (EXIT STATUS)
The cpio utility exits 0 on
success, and >0 if an error occurs.
محیط (ENVIRONMENT)
متغیرهای
محیطی زیر
بر اجرای
cpio تأثیر
میگذارند:
LANG- تنظیمات محلی (locale) مورد استفاده. برای اطلاعات بیشتر environ(7) را ببینید.
TZ- منطقه زمانی مورد استفاده هنگام نمایش تاریخها. برای اطلاعات بیشتر environ(7) را ببینید.
مثالها (EXAMPLES)
دستور
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سازگاری (COMPATIBILITY)
گزینههای حالت 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)
است. برای
بهترین
سازگاری،
اسکریپتها
باید خود را
به نحو
استاندارد
محدود
کنند.
همچنین ببینید (SEE ALSO)
bzip2(1), gzip(1), mt(1), pax(1), tar(1), libarchive(3), cpio(5), libarchive-formats(5), tar(5)
استانداردها (STANDARDS)
در حال حاضر هیچ استاندارد فعلی 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 تعریف شدهاند.
تاریخچه (HISTORY)
ابزارهای
اصلی 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) است.
اشکالات (BUGS)
قالب بایگانی cpio چندین محدودیت اساسی دارد: این قالب نامهای کاربر و گروه را ذخیره نمیکند و تنها شمارهها را ذخیره میکند. در نتیجه، نمیتوان با اطمینان از آن برای انتقال فایلها میان سیستمهایی با شمارهگذاری متفاوت کاربران و گروهها استفاده کرد. قالبهای قدیمیتر cpio شمارههای کاربر و گروه را به ۱۶ یا ۱۸ بیت محدود میکنند که برای سیستمهای امروزی ناکافی است. قالبهای بایگانی cpio نمیتوانند از فایلهای بزرگتر از ۴ گیگابایت پشتیبانی کنند، به جز گونهی “odc” که میتواند از فایلهای تا ۸ گیگابایت پشتیبانی کند.
| September 16, 2014 | Linux 6.12.107+deb13-amd64 |