راهنمای جامع مدیریت فضای دیسک و پاک‌سازی هاست لینوکس

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

۵ دقیقه به‌روزرسانی ۱۶ مرداد ۱۴۰۵

چرا مدیریت فضای دیسک اهمیت دارد؟

فضای دیسک یکی از حیاتی‌ترین منابع در هر هاست اشتراکی یا سرور مجازی است. وقتی فضای دیسک به مرز ۹۰٪ یا ۹۵٪ می‌رسد، نه‌تنها سرویس‌دهی کند می‌شود، بلکه ممکن است سرویس‌هایی مانند 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، می‌توانید فضای دیسک هاست خود را همیشه در محدوده امن نگه دارید. اگر نیاز به راهنمایی بیشتر دارید، تیم پشتیبانی سرورنت می‌تواند در این زمینه به شما کمک کند. به یاد داشته باشید: هرگز فایل‌های سیستمی را بدون اطمینان حذف نکنید و همیشه قبل از پاک‌سازی، یک بکاپ از فایل‌های مهم بگیرید.

آیا این مطلب برایتان مفید بود؟