احتمالاً برای شما هم پیشآمده که سرور لینوکسیتان به دلیل پر شدن ناگهانی دیسک، هشدارهای عجیبوغریب بدهد و سرویسها یکی پساز دیگری متوقف شوند. مواجهه با کمبود فضای لینوکس کلافهکننده است، اما مشکل اصلی معمولاً پر بودن کل هارد نیست؛ بلکه چند فایل یا پوشه لاگ مخفی و سنگین هستند که بدون اطلاع شما بخش زیادی از منابع را اشغال کردهاند. پیدا کردن فایلهای حجیم در لینوکس یعنی استفاده از ابزارها و دستورات ترمینال برای ردیابی دقیق و تفکیک دایرکتوریها براساس حجم آنها، تا بتوانید بدون آسیب زدن به فایلهای سیستمی، دیسک خود را مدیریت کنید.
این کار در محیط لینوکس معمولاً با ابزارهای پیشفرضی مثل find و du یا ابزارهای تعاملی پیشرفتهتر انجام میشود. در این آموزش، قدمبهقدم یاد میگیریم که چطور با استفاده از ابزارهای ترمینالی، فرآیند پیدا کردن فایل بزرگ لینوکس را انجام دهیم، روشهای حذف امن و پاکسازی سرور را بررسی کنیم و در نهایت، ترفندهایی برای مانیتورینگ فضای دیسک و پیشگیری از پر شدن دوباره فضا یاد بگیریم.
فهرست مطالب
سریعترین روشها برای پیدا کردن فایلهای بزرگ در لینوکس
وقتی با بحران پر شدن دیسک مواجه میشوید، زمان طلا است. فرایند پیدا کردن فایلهای حجیم در لینوکس نیازمند ابزارهایی است که بدون اتلاف وقت و درگیر کردن شدید منابع پردازشی سرور، مستقیماً شما را به منبع مشکل برسانند. بسته به اینکه بهدنبال یک فایل خاص میگردید یا میخواهید ساختار پوشهها را بررسی کنید، ۵ ابزار کلیدی زیر بهترین گزینههای شما هستند.

۱- استفاده از دستور find (اصلیترین روش)
اگر به دنبال جراحی دقیق سیستمی هستید و میدانید هارد سرور با فایلهای چند گیگابایتی اشغال شده، دستور find اولین و قدرتمندترین گزینه شما است. این ابزار به شما اجازه میدهد کل سیستم یا یک دایرکتوری خاص را براساس فیلتر حجم شخم بزنید.
پیدا کردن فایلهای بیش از 1 گیگ در لینوکس:
برای ردیابی فایلهای بسیار بزرگ در کل سیستم، دستور زیر را اجرا کنید:
find / -type f -size +1G
محدود کردن مسیر برای بهینهسازی سرعت:
جستوجو در کل روت (/) روی سرورهای بزرگ زمانبر است. بهتر است مسیر را به پوشههای مستعدِ پر شدن (مثل /var یا /home) محدود کنید:
find /var/log -type f -size +100M
find / -type f -size +1G 2>/dev/null
۲- استفاده از دستور du برای پیدا کردن پوشههای پرمصرف
گاهی مشکل از یک فایلِ تک و بزرگ نیست؛ بلکه یک پوشه (مثلاً پوشه کش یا بکآپهای قدیمی) حاوی هزاران فایل کوچک است که در مجموع دیسک را خفه کردهاند. در این شرایط، دستور du (مخفف Disk Usage) وارد رقابت میشود. برای بررسی مصرف فضا در سرور لینوکس و مرتبسازی دایرکتوریها از سنگین به سبک، این ساختار ترکیبی بهترین بازدهی را دارد:
du -h --max-depth=1 /var 2>/dev/null | sort -rh | head -n 10
کالبدشکافی این دستور به زبان ساده:
- آپشن –max-depth=1: مانع از غرق شدن دستور در زیرپوشهها میشود و فقط لایه اول را نشان میدهد.
- بخش sort -rh: خروجی را بر اساس حجم (Human-readable) به صورت نزولی مرتب میکند.
- بخش head -n 10: فقط ۱۰ پوشه اول که بیشترین سهم را در کمبود فضای لینوکس دارند به شما نشان میدهد.
۳- بررسی سریع فضای دیسک با دستور df
قبلاز اینکه به فکر حذف فایلهای اضافی در لینوکس بیفتید، باید یک نگاه کلان به وضعیت سیستم داشته باشید. دستور df (Disk Free) ابزار مانیتورینگ فضای دیسک در سطح پارتیشنهاست. این دستور به شما نمیگوید کدام فایل بزرگ است، اما مشخص میکند کدام سکتور یا پارتیشن به مرز انفجار رسیده است.
با اجرای دستور زیر، بررسی کل فضای دیسک را در چند ثانیه انجام دهید:
df -h
| ستون خروجی | مفهوم و کاربرد در عیبیابی |
|---|---|
| Size | ظرفیت کل پارتیشن |
| Used | میزان فضای اشغالشده فعلی |
| Avail | فضای خالیِ باقیمانده برای نجات سرویسها |
| Use% | حیاتیترین ستون؛ اگر بالای 90% باشد، یعنی سرور در وضعیت قرمز است. |
۴- استفاده از ls برای شناسایی فایلهای حجیم
اگر وارد یک دایرکتوری خاص (مثلاً دایرکتوری دانلودها یا بکآپ) شدهاید و میخواهید خیلی سریع بدانید کدام فایل حجیم در لینوکس رتبه اول اشغال فضا را دارد، نیازی به دستورات پیچیده نیست؛ ls کارتان را راه میاندازد. کافی است سوییچ S (حروف بزرگ) را به دستور معروف ls اضافه کنید تا مرتبسازی بر اساس حجم انجام شود:
ls -lhS
این روش سادهترین راهکار برای ردیابی و پیدا کردن فایل بزرگ لینوکس در یک پوشه محلی است و خروجی را از بزرگترین به کوچکترین فایل ردیف میکند.
۵- ابزار تعاملی ncdu (روش حرفهایتر)
اگر میانه خوبی با دستورات خطی متوالی ندارید و بهدنبال یک ابزار گرافیکی ترمینالی میگردید، ncdu شاهکار است. این ابزار در واقع نسخه پیشرفته و نcurses دستور du است که به شما اجازه میدهد با کلیدهای جهتنما (Arrow Keys) روی کیبورد، درمیان پوشهها بچرخید، حجم هر کدام را با نمودارهای متنی ببینید و حتی همانجا فایلهای اضافی را حذف کنید.
این ابزار به صورت پیشفرض نصب نیست. برای پیدا کردن فایلهای حجیم در Ubuntu و دبیان ابتدا آن را نصب کنید:
sudo apt install ncdu
سپس کافی است دستور زیر را بزنید تا کل دایرکتوری جاری را اسکن کند:
ncdu
# نمای شماتیک از محیط تعاملی ncdu در ترمینال:
ncdu 1.15.1 ~ Use the arrow keys to navigate, press ? for help
--- /var ---------------------------------------------------------
9.2 GiB [##########] /log
3.1 GiB [### ] /lib
1.4 GiB [# ] /cache
جدول مقایسه و انتخاب سریع ابزار
برای اینکه در لحظه بحران بدانید کدام دستور دقیقاً برای کار شما ساخته شده، این جدول مقایسهای را به خاطر بسپارید:
| نام ابزار | بهترین سناریوی مصرف | سطح جزییات خروجی | سرعت اجرا |
|---|---|---|---|
| df | بررسی کلی وضعیت پارتیشنها قبل از هر اقدامی | کلان (پارتیشن) | فوقالعاده سریع |
| find | شکار فایلهای سنگین سرور با حجم یا فرمت مشخص | بسیار دقیق (فایل) | متوسط (بسته به وسعت مسیر) |
| du | ردیابی و پیدا کردن پوشههای پرمصرف سیستمی | متوسط (پوشهها) | متوسط |
| ls | مرتبسازی سریع فایلها درون یک پوشه خاص | دقیق (محیط محلی) | بسیار سریع |
| ncdu | وبگردی تعاملی در ترمینال و پاکسازی بصری سرور لینوکس | کامل و پویا | نیاز به اسکن اولیه |
چگونه فایلهای حجیم را حذف یا مدیریت کنیم؟
بعداز پیدا کردن فایلهای حجیم در لینوکس، نوبت به تصمیمگیری درباره آنها میرسد. همیشه اولین راهکار، حذف کردن نیست. بسته به اهمیت فایل، شما سه راه پیش رو دارید: حذف امن، فشردهسازی برای روز مبادا، یا انتقال به یک فضای ذخیرهسازی دیگر.

در ادامه، الفبای مدیریت این فایلها را بدون ریسک خوابیدن سرور بررسی میکنیم.
حذف فایلهای اضافی
سریعترین راه برای افزایش فضای خالی لینوکس، حذف فایلهایی است که مطمئن هستیم دیگر به آنها نیاز نداریم (مانند فایلهای نصب قدیمی یا فایلهای زیپ موقت). اما در محیط ترمینال، دکمه Undo یا سطل زبالهای وجود ندارد.
۱- حذف امن فایلها با چاشنی احتیاط:
قبلاز دویدن سراغ دستور خطرناک rm -rf، اگر کاملاً مطمئن نیستید، از سوییچ -i استفاده کنید تا سیستم پیشاز حذف هر فایل از شما تاییدیه بگیرد:
rm -i large_backup.tar.gz
پاکسازی لاگهای قدیمی و سنگین:
معمولاً دایرکتوری /var/log متهم ردیف اول در کمبود فضا است. برای حذف فایلهای لاگِ قدیمیِ فشردهشده (با پسوند .gz) که دیگر نیازی به آنها نیست، میتوانید از این دستور استفاده کنید:
rm /var/log/*.gz
راه حل اول (ردیابی فایلهای شبح): با دستور زیر پروسسهای مزاحم را پیدا کنید:
lsof | grep deleted
پس از پیدا کردن PID (شناسه پروسس)، آن سرویس را ریاستارت کنید تا فضا آزاد شود.
راه حل دوم (پیشگیری): بهجای حذف (rm) فایلهای لاگی که در حالِ نوشتن هستند، حجم آنها را با این ترفند به صفر برسانید بدون اینکه پروسس قطع شود.
> /var/log/nginx/access.log
۲- فشردهسازی فایلها
همیشه نمیتوان فایلهای حجیم سرور را با خیال راحت پاک کرد؛ مثلاً فایلهای دیتابیس قدیمی یا لاگهای چند ماه پیش برای تحلیلهای آینده حیاتی هستند. در این حالت، پاکسازی سرور لینوکس را با فشردهسازی انجام میدهیم. ابزارهای tar و gzip با کاهش چشمگیر حجم فایلها، فضای دیسک شما را نجات میدهند:
- بستهبندی و فشردهسازی همزمان یک پوشه پرمصرف:
tar -czvf archive_name.tar.gz /path/to/large_directory
(سوییچ -zکار فشردهسازی با الگوریتم gzip را انجام میدهد تا کمترین حجم ممکن اشغال شود).
- فشردهسازی یک فایل تک و بزرگ:
gzip huge_file.log
(این دستور فایل شما را به huge_file.log.gz تبدیل کرده و نسخه اصلی را حذف میکند).
۳- انتقال فایلها به فضای دیگر
اگر دیسک سرور رو به اتمام است اما فایلها باید زنده و در دسترس بمانند، بهترین راهکار ردیابی و انتقال آنها به یک سرور دیگر یا فضای ابری پشتیبان (Object Storage) است.
برای این کار، دو ابزار استاندارد و ایمن در لینوکس وجود دارد:
۱- دستور rsync: این دستور برای انتقال فایلهای حجیم عالی است؛ چرا که اگر ارتباط شبکه قطع شود، قابلیت ادامهدهی (Resume) دارد:
rsync -avzP /path/to/large_file.tar.gz user@remote_server_ip:/backup/
۲- دستور scp (سریع و ساده): برای انتقالهای سریع در بستر SSH:
scp /path/to/large_file.tar.gz user@remote_server_ip:/backup/
بررسی و مانیتورینگ مصرف فضا در سرور لینوکس
اینکه منتظر بمانید تا دیسک سرور ۱۰۰٪ پر شود و بعد به فکر پیدا کردن فایلهای حجیم در لینوکس بیفتید، مانند این است که علائم آمپر آب ماشین را نادیده بگیرید تا موتور بسوزد. یک مدیر سیستم هوشمند، با مانیتورینگ فضای دیسک به صورت دورهای، پیش از اینکه سرویسها (مثل پایگاه داده) کرش کنند، گلوگاهها را شناسایی میکند.
ابزارهای پیشنهادی برای پایش مداوم

برای بررسی مصرف فضا در سرور لینوکس، نباید خودتان را به چک کردنهای دستی محدود کنید. ابزارهای زیر به شما کمک میکنند همیشه یک قدم جلوتر از پر شدن هارد باشید:
- ابزار Netdata (پایش آنی و گرافیکی):
اگر به دنبال یک سیستم مانیتورینگ سبک اما فوقالعاده دقیق هستید، Netdata یک داشبورد زنده تحت وب به شما میدهد که مصرف دیسک و نرخ نوشتن دادهها (I/O) را ثانیه به ثانیه تحلیل میکند.
- اسکریپتهای Cron و خودکارسازی:
اگر تمایلی به نصب ابزارهای جانبی ندارید، میتوانید یک کرونجاب (Cron Job) ساده بنویسید که هر شب وضعیت دیسک را بررسی کرده و در صورت رد شدن از مرز ۸۵٪ به شما ایمیل یا پیام هشدار بفرستد.
- دستور du برای مانیتورینگ دورهای:
با اجرای هفتگی دستورات ردیابی، پیدا کردن پوشههای پرمصرف (مثل مسیرهای موقت /tmp یا بکآپها) به یک عادت سالم سیستمی تبدیل میشود.
پیشگیری از پر شدن مجدد فضای دیسک

پاکسازی یکباره سرور احساس خوبی دارد، اما اگر ریشه مشکل را حل نکنید، چند هفته یا حتی چند روز دیگر دوباره به نقطه صفر برمیگردید و مجبورید فرایند پیدا کردن فایلهای حجیم در لینوکس را تکرار کنید. لاگها و کشهای سیستمی مانند غبار روی میز هستند؛ اگر بهطور منظم آنها را پاک نکنید تلنبار میشوند. برای پیشگیری از پر شدن دوباره فضا، باید مکانیزمهای دفاعی سرور را فعال کنید.
۱- پاکسازی خودکار لاگها با ابزار logrotate
بزرگترین متهم کمبود فضای سرور، فایلهای لاگ (.log) هستند که بدون توقف رشد میکنند. ابزار logrotate بهصورت پیشفرض در لینوکس وجود دارد و وظیفه آن مدیریت، فشردهسازی و حذف خودکار لاگهای قدیمی است.
تنظیمات این ابزار در مسیر /etc/logrotate.conf قرار دارد. کانفیگ اصولی برای پاکسازی سرور لینوکس باید شامل موارد زیر باشد:
- چرخش دورهای (Rotation): تعریف اینکه لاگها به صورت هفتگی (weekly) یا روزانه (daily) آرشیو شوند.
- محدودیت تعداد فایل: به عنوان مثال با دستور rotate 4 تعیین میکنید که سیستم فقط ۴ نسخه آخر لاگ را نگه دارد و نسخههای قدیمیتر را به کل حذف کند.
- فشردهسازی خودکار: فعال کردن آپشن compress باعث میشود لاگهای قدیمی فوراً به فرمت کمحجم .gz تبدیل شوند تا فضای خالی بیشتری در لینوکس داشته باشید.
۲- مدیریت و تخلیه کش (Cache Management)
مدیران بسته (مثل apt در اوبونتو یا dnf/yum در ردیف اتمسفر ردهت) فایلهای نصب (packages) را پساز دانلود در کش سیستم نگه میدارند. این فایلها بعد از نصب دیگر کاربردی ندارند.
- در توزیعهای Ubuntu/Debian: با اجرای دستور زیر، کش پکیجهای قدیمی را تخلیه کنید:
sudo apt-get clean
- در توزیعهای CentOS/RHEL: از این دستور برای پاکسازی استفاده کنید:
sudo dnf clean all
۳- تنظیم سیستم هشدار (Alerting) برای فضای دیسک
یکی از بهترین راهها برای اینکه غافلگیر نشوید، نوشتن یک اسکریپت ساده از نوع Bash است. این اسکریپت درصورتیکه حجم دیسک از یک درصد مشخص فراتر رود به شما هشدار میدهد:
#!/bin/bash
CURRENT=$(df / | grep / | awk '{ print $5 }' | sed 's/%//g')
THRESHOLD=85
if [ "$CURRENT" -gt "$THRESHOLD" ]; then
echo "هشدار: فضای دیسک سرور به $CURRENT% رسیده است!" | mail -s "بحران دیسک سرور" admin@example.com
fi
(کافی است این اسکریپت را در کرونجاب سیستم قرار دهید تا هر ۶ ساعت یکبار دیسک را پایش کند).
یک راهکار پایدار برای مدیریت فایلهای حجیم در سرور
واقعیت این است که تکنیکهای ترمینالی و دستوراتی مانند find یا du همگی راهحلهایی موقت و مانند مسکن عمل میکنند. شما میتوانید امروز پساز پیدا کردن فایلهای سنگین سرور، چند گیگابایت فضا آزاد کنید، اما با رشد کسبوکار، افزایش کاربران و تلنبار شدن لاگهای جدید، بحران کمبود فضای لینوکس خیلی زود دوباره به سراغتان میآید.
در معماریهای سنتی و سرورهای معمولی، ارتقای هارد دیسک یک کابوس فنی است؛ معمولاً نیاز به خاموشی سرور (Downtime)، انتقال دردسرساز کل دادهها و کانفیگ مجدد پارتیشنها دارد. در چنین شرایطی، دویدن بهدنبال پیدا کردن فایلهای بزرگ لینوکس در ساعات شلوغی سایت، تمرکز شما را از توسعه پروژه دور میکند.
چرا سرور ابری، پاسخ منطقی به رشد دادهها است؟
برای رهایی دائمی از این چالش، ساختار زیرساخت شما باید تغییر کند. در زیرساختهای مدرن، استفاده از پلتفرمهایی که امکان افزایش منابع بهصورت لحظهای را فراهم میکنند، میتواند سدی محکم در برابر خوابیدن سرویسها باشد. به همین دلیل، مدیران سیستم باهوش بهجای دستوپنجه نرم کردن با محدودیتهای سختافزاری، به سراغ اجاره سرور ابری میروند.
اگر میخواهید بدانید سرور ابری چیست؟ و چطور این مشکل را ریشهای حل میکند، باید خیلی مختصر و مفید به مقیاسپذیری فوری منابع اشاره داشت که در مقاله زیر جزئیات آن بعلاوه توضیحات کاربردی دیگر آمده است.
ابر فردوسی با درک دقیق این دغدغهها، نسل جدید سرورهای ابری خود را بر پایه قدرتمندترین پردازندههای Intel Xeon و AMD EPYC به همراه حافظههای پرسرعت NVMe طراحی کرده است تا علاوه بر سرعت، پایداری دیسک شما را نیز تضمین کند.
مزایای استراتژیک سرور ابری ابر فردوسی برای مدیران سیستم:
- هر زمان که در سیستم مانیتورینگ فضای دیسک متوجه شدید به مرز هشدار نزدیک شدهاید، بدون یک ثانیه خاموشی سرور یا اختلال در عملکرد، حجم هارد خود را بدون استرس برای حذف فایلهای حجیم سرور افزایش دهید.
- هزینهها بهصورت ساعتی محاسبه میشود. شما فقط بهاندازه همان فضایی که دیتابیس یا فایلهایتان اشغال کردهاند پول میدهید.
- با کمک کلید API اختصاصی، میتوانید اسکریپتهای خودکارسازی بنویسید تا درصورت نیاز، منابع سرور را بر اساس ترافیک یا حجم دادهها به صورت خودکار تغییر دهد.
- سرویسهای شما در بهترین لوکیشنهای ایران (برج میلاد، دانشگاه فردوسی، خواجه نصیر) و بر روی سختافزارهای HPE میزبانی میشوند.
برای شروع بدون ریسک، اعتبار اولیه ۱۰۰ هزار تومانی بهصورت خودکار در پنل شما فعال میشود تا بتوانید کیفیت، سرعت دیسک و پایداری شبکه را کاملاً رایگان تست کنید.
جمعبندی
پیدا کردن فایلهای حجیم در لینوکس مهارتی است که هر وبمستر و مدیر سروری باید به آن مسلط باشد. در این راهنما آموختیم که چطور با دستور find جراحیهای دقیق انجام دهیم، با ابزار du پوشههای پرمصرف را ردیابی کنیم و با کمک ncdu به صورت تعاملی ترمینال را پاکسازی کنیم. همچنین دیدیم که چگونه با ابزارهایی مثل logrotate مانع از پر شدن مجدد هارد شویم. اما در نهایت، ارتقا به یک زیرساخت مقیاسپذیر مانند سرور ابری، تنها راهکار پایدار برای مدیریت دادههای در حال رشد است.
حالا شما بگویید؛ معمولاً در سرورهای شما کدام پوشه یا فایل لاگ بیشتر از همه فضا غصب میکند؟ آیا تابهحال با چالش فایلهای حذفشده اما آزادنشده (فایلهای شبح) روبهرو شدهاید؟ نظرات و سؤالات خود را در بخش دیدگاهها با ما به اشتراک بگذارید تا باهم بررسی کنیم.
منابع:
digitalocean | linuxize | linux.die | gnu | redhat | dev.yorhel | tecmint | netdata | aws.amazon | cloud.google
سؤالات متداول
چگونه فایلهای بزرگ را در لینوکس پیدا کنیم؟
برای این کار ابزارهای متعددی در ترمینال وجود دارد، اما بهطور خلاصه، استفاده از دستور find برای ردیابی فایلهای تکی و دستور du برای بررسی حجم پوشهها سریعترین راهحل است. اگر به دنبال یک راهنمای گامبهگام و عملی هستید، مفاهیم مطرحشده در همین آموزش پیدا کردن فایلهای حجیم در لینوکس به شما کمک میکند تا در کمتر از چند دقیقه سورس اصلی اشغال هارد را پیدا کنید.
بهترین دستور یافتن فایلهای بزرگ در لینوکس چیست؟
انتخاب بهترین ابزار کاملاً به سناریوی شما بستگی دارد:
اگر به دنبال یک فایل خاص (مثلاً بالای 1 گیگابایت) میگردید، دستور find / -type f -size +1G
بهترین گزینه است.
اگر میخواهید دایرکتوریهای سنگین را ردیابی کنید، ترکیب دستور du -h –max-depth=1 2>/dev/null | sort -rh بالاترین بازدهی را دارد.
تفاوت اصلی find و du برای مدیریت فضای دیسک چیست؟
دستور find: به صورت عمیق و جراحیگونه سیستم را برای پیدا کردن «فایلها» بر اساس فیلترهای دقیق (حجم، فرمت، زمان ساخت) شخم میزند.
دستور du (Disk Usage): حجم کل «پوشهها و دایرکتوریها» را محاسبه میکند. این ابزار برای رفع پر شدن فضای دیسک لینوکس و شناسایی پوشههای پرمصرف (مانند پوشه بکآپ یا کش) کاربرد دارد.
ابزار ncdu چیست و چرا برای سرورهای بزرگ پیشنهاد میشود؟
ابزار ncdu نسخه گرافیکی-ترمینالی (ncurses) دستور du است. این ابزار کل دیسک را اسکن کرده و فضایی شبیه به فایلمنیجرهای ویندوز یا مک در ترمینال به شما میدهد. مزیت بزرگ آن این است که میتوانید با کلیدهای جهتنما بین پوشهها حرکت کنید، حجم هرکدام را به صورت نمودار بصری ببینید و حتی با فشردن کلید d فایلهای اضافی را همانجا حذف کنید.
چرا بعد از حذف یک فایل حجیم با دستور rm، فضای دیسک سرور آزاد نمیشود؟
این یکی از تلههای معروف لینوکس است. اگر فایلی را با rm حذف کنید اما یک سرویس زنده (مثل Nginx یا دیتابیس) هنوز در حال نوشتن یا استفاده از آن فایل باشد، لینوکس فضا را آزاد نمیکند. برای حل این مشکل:
۱. با دستور lsof | grep deleted شناسه (PID) پروسس لجباز را پیدا کنید.
۲. آن سرویس را ریاستارت کنید تا فضا کاملاً آزاد شود.

