آموزش حذف تعداد فایل زیاد در لینوکس به صورت عملی و قدم به قدم
برای حذف فایلها از ترمینال لینوکس، معمولاً از دستورات rm، shred، wipe یا toolkit استفاده میشود. همه موارد فوق را میتوان برای رسیدگی به پروندههای نسبتاً کوچک استفاده کرد. اگر میخواهید فایلها یا دایرکتوریهای بزرگ را حذف کنید. بهعنوانمثال، برای فایلهایی با حجم حدود 100-200 گیگابایت، فایل “Scheduling I/O” را حذف کنید. همچنین مقدار RAM مصرفشده در طول فرآیند میتواند بسیار طولانی باشد. در این مقاله از سایت روناک هاست قصد داریم که به آموزش حذف تعداد فایل زیاد در لینوکس به صورت عملی و قدم به قدم بپردازیم
اگر قصد خرید هاست لینوکس را دارید می توانید به صفحه هاست لینوکس استاندارد مراجعه کنید.
این آموزش به شما نشان میدهد که چگونه بهطور مؤثر و قابلاعتماد فایلها و دایرکتوریهای بزرگ را در لینوکس حذف کنید. هدف اصلی در اینجا استفاده از تکنیکی است که در هنگام حذف فایلهای بزرگ سرعت سیستم را کاهش نمیدهد، بلکه ورودی/خروجی خوبی (I/O) ارائه میکند. این کار را میتوان با استفاده از دستور ionice انجام داد. درواقع،inode یک ساختار دادهای است که اطلاعاتی مانند فایلها، دایرکتوریها و سایر ویژگیهای سیستم فایل را در یک سیستم فایل لینوکس ذخیره میکند. هر فایل سیستم میتواند شامل تعداد محدودی از اینودها و درنتیجه تعداد معینی فایل باشد.
هنگامیکه تعداد فایلهای یک سیستم فایل از مقدار معینی بیشتر شود، تعداد inode های مجاز در این سیستم فایل تمام میشود و هیچ فایل دیگری ذخیره یا ایجاد نمیشود.
با استفاده از دستور زیر تعداد inode های مجاز را تعیین کنید:
df –i
خروجی این کد بهصورت زیر است:
Filesystem Inodes IUsed IFree IUse% Mounted on
rootfs 60506112 32619 60473493 1% /
با استفاده از دستور rm در لینوکس چگونه فایلها رو حذف کنیم؟
سادهترین راه این است که فایلهای موجود در فهرست فعلی را حذف کنید. برای اینکه بتوانید یک فایل را حذف کنید ابتدا باید دستور rm را بنویسید سپس محل قرارگیری فایل را مشخص کنید و درنهایت نام فایلی که قرار است حذف شود را در کنار اسکریپت rm وارد کنید. هدایت. برای اجرای این دستور باید اسکریپت زیر را در محیط سرور سیستمعامل یا لینوکس خود وارد کنید.
rm file_1.txt
اگر فایل شما در دایرکتوری فعلی وجود ندارد، میتوانید یک مسیر به محل فایل ایجاد کنید. برای این کار باید دستور زیر اجرا شود:
rm./path/to/the/file/file_1.txt
همچنین میتوانید بیش از یک نام فایل را در کنار دستور rm تایپ کنید. اگر این کار را انجام دهید، تمام فایلهای مشخصشده حذف میشوند. اسکریپت زیر به شما کمک میکند چندین فایل را بهخوبی حذف کنید:
rm file_2.txt file_3.txt
برای حذف فایلها از دستور rm با پارامتر -rf استفاده کنید.
rm -rf /home/user/*
لینوکس محدودیتی در تعداد کاراکترهایی دارد که میتوان بهعنوان پارامتر به هر دستور ارسال کرد. از یک دستور کوچک برای مشاهده این محدودیت در سیستم خود استفاده کنید.
$getconf ARG_MAX
2097152
بنابراین اگر دستور rm -rf را روی دایرکتوری حاوی بیش از 2097152-4 فایل اجرا کنید، این دستور مانند زیر برای شما نمایش داده میشود. command: Argument list too long، خطا، فهرست خیلی طولانی است. دلیل خطا این است که همه فایلها بهعنوان پارامتر به دستور rm ارسال میشوند. درنتیجه تعداد کاراکترهای پارامتر از حد مجاز فراتر میرود.
روشهای متفاوتی برای حل این مسائل موجود هستند. بنابراین، توجه داشته باشید: تمام مثالهای زیر 510000 فایل را در یک فهرست حذف میکنند. از دستور find: استفاده کنید.
find. -type f -exec rm
‘{}’ \;
دستور فوق 7 دقیقه و 44 ثانیه طول میکشد.
time find. -type f -delete
real 7m44.217s
دستور فوق 7 دقیقه و 44 ثانیه طول میکشد.
find. -print0 | xargs -0 rm
استفاده کردن از کد ls:
ls -1 | xargs rm -f
این دستور 19 ثانیه طول میکشد.
بهترین و سریعترین راه برای حذف تعداد زیادی فایل در یک فهرست، ls -1 | است فرمان xargs rm -f است.
تعداد زیاد فایلها میتواند اجرای دستور را دشوار کند. فرض کنید باید 2 میلیارد فایل را در یک فهرست حذف کنید. این دستور را نمیتوان اجرا کرد زیرا تعداد فایلها از ظرفیت سیستم بیشتر است. برای حل این مشکل ابتدا دستور ls را اجرا میکنیم و خروجی دستور را در یک فایل ذخیره میکنیم. مرحله بعدی خواندن اطلاعات فایل و استفاده از دستور We delete xargs files است.
ls -1 > file.txt
rm $(<file.txt) و یا xargs rm < file.txt
حذف تعداد فایل زیاد در لینوکس | فایل های غیر نوشتنی و کدها
اگر دایرکتوری یا فایل قابلنوشتن نباشد، از شما خواسته میشود که حذف را تائید کنید. گزینههای -r و -f را میتوان با هم برای حذف دایرکتوریهای غیر خالی استفاده کرد.
دایرکتوری rm -rf
در هنگام استفاده از دستور بالا باید دقت زیادی کرد. استفاده نادرست از دستور rm-rf میتواند منجر به از دست دادن دائمی دادهها یا خرابی سیستم شود. اینیک دستور بسیار خطرناک است و باید بااحتیاط زیاد استفاده شود. از دستور tree برای درک ساختار دایرکتوری و فایلهای حذفشده توسط دستور rm -rf استفاده کنید.
اگر سیستم شما tree را نصب نکرده باشد، میتوانید از apt-get برای نصب این بسته بر روی سیستمهای مبتنی بر اوبونتو یا دبیان استفاده کنید. سایر توزیعهای لینوکس نیز میتوانند از ابزارهای مدیریت بسته مناسب استفاده کنند.
sudo apt-get install-tree
اجرای فرمان tree تصویر زیبایی از ساختار دایرکتوری و فایلهای داخل آن دایرکتوریها به شما میدهد.
همچنین میتوانید مسیری برای این دستور تعیین کنید تا این tree را از ریشه دایرکتوری دیگری در سیستم فایل دریافت کنید. tree path/to/directory
دستور rm نیز دارای گزینههایی مانند one-file-system، -no-preserve-root و -preserve-root است. بااینحال، استفاده از این گزینهها تنها به کاربران باتجربه توصیه میشود. یک اشتباه میتواند تمام فایلهای سیستم را حذف کند. برای اطلاعات بیشتر به صفحه راهنما (+) مراجعه کنید.
حذف تعداد فایل زیاد در لینوکس به صورت گروهی
اگر میخواهید گروهی از فایلها را برای حذف انتخاب کنید، میتوانید از گزینهای به نام wildcards استفاده کنید که بهعنوان wildcard نیز شناخته میشود. علامت * نشاندهنده استفاده از حروف و علامتهای متعدد است؟ فقط یک حرف را مشخص کنید. دستور زیر تمامی فایلها، ازجمله تصاویر PNG را در فهرست فعلی حذف میکند.
rm *.png
دستور زیر تمامی فایلهایی که فقط یک کاراکتر دارند را حذف میکند. بهعنوانمثال، فایلهای 1 و 2 حذف میشوند، اما اسکریپت زیر فایل 12 را حذف نمیکند.
rm *.?
اگر هر یک از فایلهای رایانه شما فقط خواندنی است، نمیتوانید بدون تائید آنها را حذف کنید. بنابراین، باید با y و n تائید یا رد کنید و Enter را فشار دهید.