چرا مدیریت فضای دیسک اهمیت دارد؟
فضای دیسک یکی از حیاتیترین منابع در هر هاست اشتراکی یا سرور مجازی است. وقتی فضای دیسک به مرز ۹۰٪ یا ۹۵٪ میرسد، نهتنها سرویسدهی کند میشود، بلکه ممکن است سرویسهایی مانند MySQL یا Apache بهطور کامل از کار بیفتند. بسیاری از کاربران تصور میکنند مشکل فقط از حجم فایلهای وبسایت است، اما در عمل لاگهای قدیمی، بکاپهای اضافی و کشهای بیاستفاده سهم بزرگی در اشغال فضا دارند. در این مقاله یاد میگیرید که چگونه با ابزارهای خط فرمان لینوکس، فضای دیسک را بهصورت دقیق بررسی کنید و با پاکسازی هدفمند، فضای ارزشمند را آزاد کنید.
بررسی اولیه: چه چیزی چقدر فضا گرفته است؟
قبل از هر اقدامی، باید بدانید کدام بخشها بیشترین مصرف را دارند. دو دستور پایهای برای این کار کافی است.
دستور df برای نمای کلی
دستور df -h (human-readable) میزان استفاده از هر پارتیشن را نشان میدهد. خروجی معمولی به این شکل است:
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 20G 18G 1.5G 93% /
اگر درصد استفاده از پارتیشن ریشه (/) بالای ۸۵٪ باشد، وقت اقدام است. نکته مهم: گاهی پارتیشنهای مجزا مثل /var یا /home ممکن است جداگانه پر شوند.
دستور du برای یافتن پوشههای حجیم
دستور du -sh /* اندازه هر پوشه در ریشه را نشان میدهد. برای بررسی دقیقتر، میتوانید از du -sh /var/* یا du -sh /home/* استفاده کنید. یک ترفند مفید: با du -sh /var/log/* | sort -rh | head -10 ده فایل یا پوشه بزرگ در /var/log را مرتب میبینید.
پاکسازی لاگهای قدیمی (بزرگترین دشمن فضای دیسک)
لاگهای سیستم و سرویسها معمولاً بدون محدودیت رشد میکنند. فایلهایی مثل /var/log/syslog، /var/log/messages و لاگهای Apache یا Nginx در /var/log/apache2/ یا /var/log/nginx/ میتوانند به راحتی چند گیگابایت فضا اشغال کنند.
حذف لاگهای قدیمی با logrotate
ابزار logrotate بهطور پیشفرض روی اکثر توزیعهای لینوکس نصب است، اما تنظیمات آن اغلب ناقص است. فایل تنظیمات اصلی در /etc/logrotate.conf است. یک نمونه تنظیمات برای لاگهای Apache:
/var/log/apache2/*.log { weekly rotate 4 compress delaycompress missingok notifempty create 640 root adm }این تنظیم باعث میشود لاگها هفتهای یک بار چرخانده شوند و فقط ۴ نسخه قدیمی نگه داشته شوند. اگر فضای دیسک بحرانی است، میتوانید
rotate 2یا حتیdailyتنظیم کنید.پاکسازی دستی لاگهای قدیمی
اگر
logrotateبهدرستی کار نکرده، میتوانید با دستور زیر لاگهای قدیمیتر از ۳۰ روز را حذف کنید:find /var/log -name "*.log.*" -type f -mtime +30 -deleteهمچنین فایلهای فشرده (
.gz) را میتوانید باfind /var/log -name "*.gz" -type f -deleteحذف کنید. نکته مهم: هرگز فایلهای لاگ فعال (مثل/var/log/syslog) را حذف نکنید؛ فقط نسخههای قدیمی را پاک کنید.مدیریت بکاپهای اضافی و غیرضروری
بکاپهای خودکار cPanel، Plesk یا اسکریپتهای دستی اغلب در پوشههایی مثل
/backup،/home/backupیا داخل پوشه کاربر ذخیره میشوند. یک اشتباه رایج: نگهداشتن بکاپهای روزانه برای ماهها.یافتن بکاپهای حجیم
با دستور زیر میتوانید فایلهای بکاپ (معمولاً با پسوند
.tar.gzیا.sql) را پیدا کنید:find / -name "*.tar.gz" -type f -size +100M -exec ls -lh {} \;اگر بکاپهای قدیمیتر از ۱۴ روز دارید و فضای دیسک کم است، میتوانید آنها را حذف کنید:
find / -name "*.tar.gz" -type f -mtime +14 -deleteاشتباه رایج: کاربران گاهی بکاپهای دیتابیس را در پوشه
public_htmlذخیره میکنند که از طریق وب قابل دانلود است و امنیت را به خطر میاندازد. این فایلها را به پوشهای خارج از دسترس وب منتقل کنید.پاکسازی کش (Cache) سیستم و برنامه
کشها برای سرعت طراحی شدهاند، اما گاهی حجم آنها از حد منطقی فراتر میرود.
کش apt (در توزیعهای مبتنی بر دبیان)
بستههای دانلود شده توسط apt در
/var/cache/apt/archives/ذخیره میشوند. با دستور زیر میتوانید آنها را پاک کنید:sudo apt-get cleanاین دستور معمولاً ۲۰۰ تا ۵۰۰ مگابایت فضا آزاد میکند.
کش MySQL/MariaDB
فایلهای موقت و لاگهای باینری MySQL در
/var/lib/mysql/یا/var/log/mysql/میتوانند بزرگ شوند. برای پاکسازی لاگهای باینری (در صورت فعال بودن)، ابتدا وارد MySQL شوید:mysql -u root -pسپس دستور زیر را اجرا کنید:
PURGE BINARY LOGS BEFORE NOW() - INTERVAL 7 DAY;این کار لاگهای باینری قدیمیتر از ۷ روز را حذف میکند. توجه: اگر از replication استفاده میکنید، قبل از پاکسازی مطمئن شوید که replicaها بهروز هستند.
کش PHP (اپلیکیشنهای وردپرس و لاراول)
وردپرس معمولاً کش تصاویر کوچک (thumbnails) را در
/wp-content/uploads/ذخیره میکند. افزونههایی مثل WP-Optimize میتوانند کش دیتابیس و فایلهای موقت را پاک کنند. برای لاراول، پوشه/storage/framework/cache/و/storage/framework/views/را بررسی کنید.پیدا کردن فایلهای بزرگ و غیرمعمول
گاهی فایلهای بزرگ در پوشههای غیرمنتظره پنهان میشوند. مثلاً فایلهای core dump، فایلهای لاگ قدیمی سرویسهای خاص، یا فایلهای آپلود شده توسط کاربران.
استفاده از
ncduبرای مرور تعاملیاگر
ncduنصب نیست، باsudo apt install ncduآن را نصب کنید. سپس باsudo ncdu /میتوانید بهصورت تعاملی پوشهها را مرور کنید و بزرگترین فایلها را ببینید. این ابزار بسیار سریعتر ازduبرای دایرکتوریهای بزرگ است.یافتن فایلهای بزرگتر از ۵۰۰ مگابایت
دستور زیر همه فایلهای بزرگتر از ۵۰۰ مگابایت را در کل سیستم پیدا میکند:
find / -type f -size +500M -exec ls -lh {} \; 2>/dev/nullخروجی را بررسی کنید و فایلهای غیرضروری را حذف کنید.
مدیریت فضای دیسک در هاست اشتراکی (بدون دسترسی روت)
اگر از هاست اشتراکی استفاده میکنید و دسترسی SSH ندارید، معمولاً از طریق cPanel یا Plesk میتوانید فضای دیسک را مدیریت کنید. در cPanel، بخش "Disk Usage" را باز کنید. در Plesk، به "Tools & Settings" > "Disk Usage" بروید. پوشههای
public_html،logsوbackupsرا بررسی کنید. اگر دسترسی SSH دارید، دستورات بالا را در دایرکتوری خانه خود اجرا کنید (بدون نیاز بهsudo).نکات پیشگیرانه برای آینده
- مانیتورینگ خودکار: یک اسکریپت ساده با دستور
df -hتنظیم کنید که هر روز اجرا شود و اگر فضای دیسک از ۸۵٪ بیشتر شد، به شما ایمیل بزند. - تنظیم logrotate: مطمئن شوید که همه سرویسهای مهم (Apache، Nginx، MySQL، PHP-FPM) تنظیمات logrotate مناسب دارند.
- بکاپهای هوشمند: بکاپهای قدیمیتر از ۳۰ روز را بهطور خودکار حذف کنید. از ابزارهایی مثل rsync برای نگهداشتن فقط آخرین نسخه استفاده کنید.
- کش را محدود کنید: در وردپرس، افزونههای کش را طوری تنظیم کنید که حداکثر ۵۰۰ مگابایت فضا اشغال کنند.
جمعبندی
مدیریت فضای دیسک یک فرآیند مداوم است، نه یک اقدام یکباره. با استفاده از دستورات ساده لینوکس مانند df، du و find، و با تنظیم ابزارهایی مثل logrotate، میتوانید فضای دیسک هاست خود را همیشه در محدوده امن نگه دارید. اگر نیاز به راهنمایی بیشتر دارید، تیم پشتیبانی سرورنت میتواند در این زمینه به شما کمک کند. به یاد داشته باشید: هرگز فایلهای سیستمی را بدون اطمینان حذف نکنید و همیشه قبل از پاکسازی، یک بکاپ از فایلهای مهم بگیرید.