چگونه تعداد فایل‌های زیاد در لینوکس را حذف کنیم

دسته بندی: آموزش, لینوکس
چگونه تعداد فایل‌های زیاد در لینوکس را حذف کنیم

‫inode ساختمان داده‌ای است که در فایل سیستم لینوکس اطلاعاتی مانند فایل‌ها، دایرکتوری‌ها و سایر خصوصیات فایل‌سیستم را دخیره می‌کند.

هر فایل‌سیستم تعداد محدودی inode (آی‌نود‌) و در نتیجه میزان مشخص فایل را می‌تواند نگه‌داری کند.

چنانچه تعداد فایل‌های فایل‌سیستم از میزان مشخصی بیشتر شود تعداد آی‌نود‌های مجاز آن فایل‌سیستم به اتمام می‌رسد و امکان ذخیره و ایجاد تعداد بیشتری فایل وجود نخواهد داشت.

برای یافتن تعداد آی‌نودهای مجاز از دستور زیر استفاده کنید.

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

اطلاعات بیشتر inodeها را با دستور زیر می‌توان مشاهده کرد.

دستور بالا حداکثر تعداد آی‌نود قابل اختصاص و آی‌نود‌های اختصاص یافته را نشان می‌دهد.

چنانچه آی‌نودهای فایل سیستم پر شود تنها راه‌حل مشکل پاک کردن فایل‌ها و دایرکتوری‌ها است.

حتما بخوانید:  آموزش تصویری حذف اکانت توییتر به صورت دائم و موقت (با گوشی و کامپیوتر)

راه‌های متفاوتی برای پاک کردن فایل‌ها وجود دارد. ابتدا باید فایل‌ها را مشاهده کنیم، با دستور ls می‌توانیم فایل‌ها را مشاهده کنیم؛ اما اگر تعداد فایل‌های درون یک دایرکتوری از تعداد مشخصی بیشتر باشد اجرای دستور ls بسیار زمان‌بر خواهد بود. به‌عنوان مثال در یک دایرکتوری با ۵۱۰۰۰۰ فایل اجرای دستور ls حدودا ۵۳ ثانیه زمان خواهد برد.

و از طرفی چنانچه بخواهیم سایر خصوصیات مانند زمان ایجاد و یا حجم فایل را مشاهده کنیم باید دستور ls را با پارامتر -l به کار ببریم دستور ls به شکل ls -l در دایرکتوری با ۵۱۰۰۰۰ فایل ۱ دقیقه و ۱۱ ثانیه زمان خواهد برد.

بهترین راه برای مشاده فایل‌ها استفاده از دستور ls با پارامتر -۱ است. این دستور فایل‌های یک دایرکتوری با ۵۱۰۰۰۰ فایل را در کمتر از ۱۸ ثانیه لیست خواهد کرد. 

برای پاک کردن فایل‌ها از دستور rm به همراه پارامتر -rf استفاده کنید.

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

در نتیجه چنانچه دستور rm -rf را در دایرکتوری اجرا کنیم که تعداد فایل‌های آن از ‫۲۰۹۷۱۵۲-۴ بیشتر باشد دستور با خطای command: Argument list too long متوقف می‌شود و دلیل بروز خطا این است که تمام فایل‌ها به عنوان پارمتر به دستور rm ارسال می‌شود در نتیجه تعداد کاراکتر پارامترها از حد مجاز فراتر خواهد بود.

حتما بخوانید:  روش های تولید محتوا برای سایت و اینستاگرام (11 تکنیک استادی)

How to delete insane amount of files in linux

برای رفع این مشکل چند راه متفاوت داریم.

نکته: در تمام مثال‌های زیر می‌خواهیم ۵۱۰۰۰۰ فایل یک دایرکتوری را حذف کنیم.

استفاده از دستور find:

اجرای این دستور بیش از ۲۶ دقیقه زمان خواهد برد.
دستور بالا ۷ دقیقه و ۴۴ ثانیه زمان خواهد برد.
دستور بالا ۷ دقیقه زمان خواهد برد.

استفاده از دستور ls:

این دستور ۱۹ ثانیه زمان خواهد برد.

بهترین و سریع‌ترین راه برای پاک کردن تعداد زیادی فایل در یک دایرکتوری استفاده از دستور ls -1 | xargs rm -f است.

گاهی اوقات تعداد بیشتر فایل می‌تواند اجرای دستور را با مشکل مواجه کند. به عنوان مثال فرض کنیم باید دو میلیارد فایل در یک دایرکتوری را حذف کنیم. از آنجا که تعداد فایل‌ها بسیار بیشتر از میزان جافظه سیستم است اجرای این دستور غیر ممکن است برای رفع این مشکل ابتدا دستور ls را اجرا می‌کنیم و خروجی دستور را در فایل ذخیره می‌کنیم، در مرجله بعد اطلاعات را از فایل می‌خوانیم و با استفاده از دستور xargs فایلها را پاک میکنیم.

و یا

مایلید هر دو هفته یک ایمیل مفید دریافت کنید؟

ما را در شبکه‌های اجتماعی دنبال کنید

همچنین شاید دوست داشته باشید!

آموزش نصب vsftpd

آموزش نصب vsftpd در اوبنتو

۰
در این مقاله می‌خواهیم چگونگی راه‌اندازی vsftpd برای توزیع اوبنتو در لینوکس را یاد بگیریم. قبل از آن بد نیست کمی راجع به مفهوم این…
SNI چیست؟ و چه فوایدی دارد؟

SNI چیست و چه وظیفه‌ای دارد؟

۰
افزایش امنیت اینترنت! یکی از دغدغه‌های بشر از سال‌ها پیش تا به‌امروز همین بوده است. در این راستا اقدامات زیادی انجام شده و در این…

نظرات کاربران

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

Fill out this field
Fill out this field
لطفاً یک نشانی ایمیل معتبر بنویسید.
You need to agree with the terms to proceed

فهرست