خالی کردن فایل های حجیم در لینوکس
آزاد کردن فضای دیسک، مدیریت فایل های لاگ یا بهبود عملکرد سیستم از مهم ترین دلایلی هستند که می توانند باعث شوند به دنبال راه های خالی کردن فایل های حجیم در لینوکس (بدون نیاز به حذف خود فایل) باشید.
روش های زیادی برای حذف محتوای فایل های بزرگ لینوکس وجود دارد که از پر کاربردترین آنها می توان به دستور truncate، عملگر < و echo اشاره کرد که با استفاده از آنها می توانید بدون نیاز به حذف خود فایل، فقط محتوای داخل آنها را پاکسازی کنید.
* البته توجه داشته باشید که چون در لینوکس همه چیز حکم یک فایل را دارد، باید مطمئن باشید که فایل هایی که تخلیه می کنید، جزو فایل های کاربری یا سیستمی ضروری نباشند چون پاک کردن محتوای چنین فایل هایی می تواند باعث بروز خطا یا خرابی سیستم شود.
پیش نیازهای خالی کردن فایل های حجیم در لینوکس
- سیستم یا سرور لینوکس با توزیع دلخواه
- دسترسی نوشتن (write) به فایل یا برخورداری از امتیازات root یا sudo
اگر موقع خالی کردن محتوای یک فایل، با خطای Permission Dined مواجه شدید، باید نسبت به اخذ مجوز write فایل موردنظر اقدام کنید.
برای این کار می توانید با دستور cd در مسیر فایل موردنظر قرار بگیرید و سپس دستور زیر را اجرا کنید:
sudo chmod +w filename
* در صورت تمایل به داشتن یک سرور لینوکس حرفه ای و قدرتمند برای اجرای عملیات سنگینی مثل خالی کردن محتوای فایل های بزرگ لینوکس، می توانید به صفحه خرید سرور مجازی لینوکس سر بزنید.
برای شروع کافیست با دستور cd در مسیر فایل موردنظر قرار بگیرید و سپس روش های زیر را به دلخواه امتحان کنید:
روش ۱. حذف محتوای فایل با عملگر <
ساده ترین و سریع ترین راهی که می توانید برای خالی کردن فایل های حجیم در لینوکس امتحان کنید، این است که اسم فایل موردنظر را با عملگر ریدایرکت < همراه کنید.
> File.log
ایده این عملگر برای حذف محتوای فایل، ریدارکت محتوای خالی (پوچ) به فایل موردنظر است. به این صورت که < برای خواندن ورودی از یک فایل و ارسال آن به برنامه یا دستور بعدی استفاده شود و زمانی که قبل از این عملگر، هیچ فایلی برای دریافت ورودی وجود نداشته باشد، این عملگر هم فایل موردنظر را باز می کند و محتوای آن را با (هیچ چیز یا مقدار خالی) جایگزین می کند.
روش ۲. خالی کردن فایل حجیم با استفاده از dev/null/
null device موجود در مسیر dev/null/ معمولاً برای دور انداختن خروجی های جریان های خروجی ناخواسته استفاده می شود ولی چون حکم یک فایل خالی (سیاهچاله) را دارد، می توانید به جای دریافت مقدار هیچ از ناکجاآباد (روش اول)، این بار محتوای خالی را از dev/null/ به سمت فایل موردنظر ریدایرکت کنید تا محتوای خالی آن با محتوای فایل موردنظر جایگزین شود و شما هم به هدف خود یعنی خالی کردن فایل های حجیم در لینوکس برسید.
برای استفاده از این فایل برای حذف محتوای فایل موردنظر می توانید از دستور زیر استفاده کنید:
cat /dev/null > File.txt
دستور cat، فایل dev/null/ را باز می کند و محتوای آن را می خواند. سپس عملگر < خروجی دستور cat را به فایل هدف یعنی File.log هدایت می کند و چون خروجی cat چیزی جز هیچ نیست، پس محتوای فایل موردنظر هم با هیچ جایگزین می شود و در نتیجه، خالی می شود.
روش ۳. پاکسازی محتوای فایل با دستور echo
این بار ایده ریدایرکت مقدار هیچ به سمت فایل موردنظر را با دستور echo وارد عمل می کنیم. همانطور که می دانید دستور echo برای نمایش یک پیام یا متن در خروجی استفاده می شود.
حالا اگر دستور echo بدون متن را با عملگر ریدایرکت و فایل موردنظر همراه کنید، خط خالی مربوط به echo با محتوای فایل جایگزین می شود و نتیجه چیزی نیست جز یک فایل خالی!
echo > File.log
البته بهتر است به این نکته هم اشاره کنیم که محتویات فایل خالیِ خالی نیست و ۱ بایت دارد و آن هم به خاطر خط خالی است که توسط echo به فایل موردنظر ریدایرکت کردید. اگر فکر می کنید که اندازه فایل حتماً باید ۰ بایت باشد، این روش مناسب شما نیست.
روش ۴. از بین بردن محتوای فایل با دستور true
در این روش باید عملگر : که معادل دستور true است را با عملگر ریدایرکت همراه کنید تا خروجی خالی دستور true از طریق عملگر < به فایل هدایت شود، محتوای فایل هم با خروجی خالی جایگزین شود و در نتیجه یک فایل خالی در اختیار شما قرار بگیرد.
: > File.log
یا
true > File.log
دستور true با هیچ خروجی همراه نیست و فقط با کد خروجی 0 که نشانه اجرای موفقیت آمیز است خاتمه پیدا می کند.
روش ۵. حذف محتوای فایل با دستور truncate
دستور truncate سبک کار متفاوتی با روش های قبل دارد. به این صورت که به کمک آپشن s می توان اندازه فایل موردنظر را روی 0 تنظیم کرد که در این صورت سایز فایل به ۰ بایت کاهش پیدا می کند و این هم به معنی خالی شدن محتوای فایل است.
truncate -s 0 File.log
با اینکه این دستور عملیات خالی کردن فایل های حجیم در لینوکس را با سرعت و راحتی بیشتری جلو می برد ولی می توانید از آن برای مدیریت اندازه فایل ها به شکل دلخواه بهره ببرید.
برای آشنایی بیشتر با آپشن ها و کاربرد دستور truncate می توانید از دستور زیر استفاده کنید:
man truncate
روش آخر. حذف فایل از سیستم لینوکس
با اینکه هدف اصلی شما از مراجعه به این صفحه، حذف محتوای فایل است، نه حذف خود فایل! ولی اگر با هیچکدام از روش های بالا به نتیجه دلخواه نرسیدید و فایل موردنظر شما هم جزو فایل های مهم و سیستمی نیست که حذف آن تاثیر منفی روی عملکرد سیستم بگذارد، می توانید از دستورات حذف فایل در لینوکس هم کمک بگیرید و خود فایل را هم همراه محتویات آن حذف کنید.
ابتدا با دستور cd به مسیر فایل موردنظر بروید.
یکی از دستورات زیر را اجرا کنید:
rm File.txt
unlink File.txt
هر دوی این دستورات، فایل موردنظر را از فایل سیستم لینوکس حذف می کنند.
محتوای چه نوع فایل هایی در لینوکس قابل پاکسازی هستند؟
اکثر فایل های لینوکس قابل پاکسازی هستند و با هر کدام از دستورات بالا می توانید محتوای آنها را خالی کنید. از مهم ترین فایل های قابل تخلیه در لینوکس، می توان به موارد زیر اشاره کرد:
- فایل های متنی با پسوند txt ،log ،cfg ،conf و …
- فایل های سورس کد با پسوند py ،cpp ،sh و …
- فایل های داده ای مثل CSV ،JSON ،XML ،SQLite و …
- فایل های تصویری و ویدیویی با پسوند mp4 ،png ،jpg و …
- فایل های صوتی با پسوند ogg ،mp3 و …
- فایل های فشرده با پسوند rar ،zip و …
فراموش نکنید که برای حذف محتوای فایل های در لینوکس، حتماً باید از مجوز نوشتن برخوردار باشید.
سخن آخر
راه های زیادی برای خالی کردن فایل های حجیم در لینوکس وجود دارد که از بین آنها، عملگر ریدایرکت و دستور truncate جزو پرکاربردترین ها هستند و در عرض سه سوت می توانند شما را هدفتان برسانند.