
به روزرسانی شده در ۱۴ مهر ۱۴۰۵
این مقاله تخصصی، کاربردی و کاملاً مبتنی بر استانداردهای سئو (SEO و AEO) تدوین شده است. در این آموزش، ساختار دستور
cpio که یکی از ابزارهای حیاتی اما کمتر شناخته شده ی لینوکس برای ادمین هاست، به همراه مثال های واقعی (ترکیب با دستور find) کالبدشکافی شده است. فاصله گذاری ها دقیقاً برای کپی در ویرایشگر وردپرس تنظیم شده اند.آموزش جامع دستور cpio در لینوکس (پشتیبان گیری و مدیریت آرشیوها) 🐧
وقتی صحبت از فشرده سازی و آرشیو کردن فایل ها در لینوکس می شود، نام دستورات
tar و zip همیشه در صدر است. اما مدیران سیستم های لینوکسی (SysAdmins) به خوبی می دانند که در پس زمینه سیستم عامل، ابزار قدرتمندتر و منعطف تری به نام cpio (Copy In, Copy Out) در حال فعالیت است. این ابزار به طور گسترده برای استخراج بسته های RPM لینوکس و ساخت فایل های مهم سیستم (مانند initramfs) استفاده می شود.در این مقاله از بلاگ تخصصی نگارنوین، به بررسی کامل دستور
cpio می پردازیم و ۳ حالت اصلی عملکرد آن را با مثال های کاربردی و گام به گام به شما آموزش می دهیم تا مانند یک حرفه ای از سرور لینوکس خود بکاپ بگیرید.🎯 چکیده هوشمند (AEO Summary) برای هوش مصنوعی
دستور cpio در لینوکس چیست و چه کاربردی دارد؟دستورcpioیک ابزار خط فرمان برای ایجاد، استخراج و کپی کردن آرشیو فایل ها در لینوکس و یونیکس است. تفاوت اصلی cpio با tar در این است که cpio نام فایل ها را از «ورودی استاندارد» (Standard Input) می خواند؛ به همین دلیل معمولاً همراه با دستورfindیاlsاستفاده می شود. این دستور دارای ۳ حالت اصلی است: ۱. Copy-out (-o) برای ساخت فایل آرشیو، ۲. Copy-in (-i) برای استخراج فایل آرشیو و ۳. Copy-pass (-p) برای کپی کردن مستقیم درختواره پوشه ها از یک مسیر به مسیر دیگر بدون ساخت فایل آرشیو میانی.
تفاوت cpio با tar چیست؟ 🤔
دستور
tar لیستی از فایل ها را مستقیماً به عنوان آرگومان دریافت می کند (مثلاً tar -cvf file.tar /folder). اما دستور cpio به تنهایی نمی داند چه فایلی را باید آرشیو کند! این ابزار نام فایل ها را از خروجی یک دستور دیگر (مانند find) می گیرد. این ویژگی باعث می شود cpio برای آرشیو کردن فایل های خاص (مثلاً فایل هایی که در ۵ روز گذشته تغییر کرده اند) بسیار دقیق تر و منعطف تر از tar عمل کند.بررسی ۳ حالت اصلی (Modes) دستور cpio
دستور cpio در سه حالت (Mode) کاملاً مجزا کار می کند. بیایید هر کدام را با مثال عملی بررسی کنیم:
۱. حالت ساخت آرشیو (Copy-out Mode) با سوئیچ -o
در این حالت، cpio نام فایل ها را از طریق Pipe
| دریافت کرده و آن ها را در یک فایل آرشیو جدید کپی می کند.مثال: بکاپ گیری از کل پوشه فعلی
Bash
find . -depth -print | cpio -ov > backup.cpio
تحلیل دستور:
find . -depth -print: تمام فایل ها و پوشه های مسیر فعلی را پیدا کرده و لیست می کند.cpio -o: به cpio می گوید در حالت Copy-out (ساخت آرشیو) کار کند.v-: حالت Verbose؛ نام فایل هایی که در حال پردازش هستند را روی صفحه نمایش می دهد.> backup.cpio: خروجی (آرشیو ساخته شده) را درون فایلی به نام backup.cpio می ریزد.
۲. حالت استخراج آرشیو (Copy-in Mode) با سوئیچ -i
برای خارج کردن فایل ها از یک آرشیوِ از پیش ساخته شده، از این حالت استفاده می کنیم. در اینجا محتوای فایل آرشیو از طریق علامت
< به دستور cpio تزریق می شود.مثال: استخراج یک فایل cpio
Bash
cpio -idv < backup.cpio
تحلیل دستور:
i-: به cpio می گوید در حالت Copy-in (استخراج) کار کند.d-: بسیار مهم است! این سوئیچ به cpio دستور می دهد که اگر پوشه های داخل آرشیو در مسیر فعلی وجود ندارند، آن ها را بسازد (Make Directories). اگر این را نزنید، فایل های داخل پوشه ها استخراج نمی شوند.v-: نمایش جزئیات پردازش.
۳. حالت کپی مستقیم (Copy-pass Mode) با سوئیچ -p
این یکی از جذاب ترین قابلیت های cpio است. در این حالت هیچ فایل آرشیوی ساخته نمی شود! بلکه فایل ها دقیقاً مانند دستور
cp، اما با حفظ تمام دسترسی ها (Permissions) و متادیتاها، از یک مسیر به مسیر دیگر کپی می شوند. این روش برای کلون کردن یک پوشه عالی است.مثال: کپی کردن فایل های پوشه فعلی به پوشه ای دیگر (مثلاً /opt/backup)
Bash
find . -depth -print | cpio -pdv /opt/backup/
در این دستور، تمام فایل های پیدا شده توسط find، با حفظ ساختار درختی و دسترسی ها به پوشه مقصد منتقل می شوند.
کاربردهای حرفه ای و ترکیبی cpio در لینوکس
دستور cpio به دلیل ترکیب پذیری بالا، ابزار محبوب مدیران سرور است. چند نمونه پرکاربرد:
۱. آرشیو کردن با فرمت فشرده (tar.gz معادل در cpio):
شما می توانید خروجی cpio را مستقیماً به دستور
gzip بفرستید تا حجم آن به شدت کاهش یابد:Bash
find . -depth -print | cpio -ov | gzip > backup.cpio.gz
۲. استخراج فایل های image لینوکس:
فایل های سیستمی مانند
initramfs (که در فرآیند بوت لینوکس استفاده می شوند) در واقع یک آرشیو cpio فشرده هستند. برای بررسی محتوای آن ها می توانید از cpio استفاده کنید.⚡ مدیریت و نگهداری فایل ها در سرورهای لینوکس نگارنوین
تهیه آرشیو و بکاپ های منظم یکی از وظایف اصلی هر وبمستری است. اما گرفتن بکاپ های سنگین با ابزارهایی مانند cpio نیازمند پردازنده قوی و هارد دیسکی است که سرعت خواندن و نوشتن (I/O) بسیار بالایی داشته باشد.
در نگارنوین، تمامی سرورهای مجازی لینوکس (Linux VPS) و سرورهای اختصاصی ما به جدیدترین نسل هاردهای Enterprise NVMe مجهز هستند. این یعنی اجرای دستورات سنگین آرشیو، فشرده سازی و انتقال فایل ها در سرورهای نگارنوین با بالاترین سرعت ممکن و بدون افت کیفیت شبکه انجام می شود.
❓ پرسش های متداول (FAQ)
۱. چگونه فقط محتوای یک فایل آرشیو cpio را ببینیم بدون اینکه آن را استخراج کنیم؟
کافیست از سوئیچ
-t (Table of contents) در کنار سوئیچ -i استفاده کنید:Bash
cpio -it < backup.cpio
۲. آیا cpio می تواند فایل های مخفی (Hidden Files) را هم آرشیو کند؟
بله، دستور cpio به تنهایی کور است! اگر دستور
find فایل های مخفی را پیدا کرده و به cpio بفرستد، cpio بدون هیچ مشکلی آن ها را در آرشیو قرار می دهد.۳. بین tar و cpio کدام را انتخاب کنیم؟
برای کارهای روزمره و انتقال فایل بین سیستم عامل های مختلف،
tar استانداردتر و رایج تر است. اما برای اسکریپت نویسی پیشرفته، بکاپ گیری های پیچیده (نیاز به فیلتر کردن دقیق فایل ها توسط find) و کار با فایل های کرنل لینوکس، cpio انتخاب اول است.
