پاکسازی حافظه اندروید با ADB

کشف امروزم! مشکل پر شدن فضای POCO X3 + راه حل با داریوش حقیقی! پاکسازی حافظه اندروید با ADB وقتی حافظه داخلی POCO X3 من بعد از چند سال استفاده تقریباً پر شد، نمی‌خواستم برای پیدا کردن چند فایل حجیم سراغ Factory Reset بروم. مسئله در ظاهر ساده بود: باید می‌فهمیدم چه فایل‌ها و پوشه‌هایی فضا را گرفته‌اند. اما خیلی زود مشخص شد که اسکن معمولی حافظه داخلی فقط بخش کوچکی از مصرف واقعی را نشان می‌دهد و قسمت بزرگی از فضا داخل App Data، Cache و مسیرهایی قرار دارد که Android 12 بدون Root اجازه خواندن مستقیم آنها را نمی‌دهد.در این پروژه از ADB، PowerShell، گزارش‌های dumpsys و چند نسخه اسکریپت اختصاصی استفاده کردم تا اول یک TreeSize قابل اتکا از بخش‌های قابل‌دسترسی بسازم، بعد بقایای بازی‌ها و Cacheهای واضح را پیدا کنم، حذف‌ها را مرحله‌ای انجام دهم و برای موارد مشکوک قبل از حذف Backup روی PC بگیرم. این مقاله مسیر واقعی همان پروژه را مستند می‌کند: از اولین خطای دانلود ADB تا Audit v1.3، پیدا کردن OBBهای یتیم، پاک‌سازی چند گیگابایت داده بلااستفاده، بررسی محدودیت‌های `/data` و رسیدن به یک روش قابل تکرار برای عیب‌یابی حافظه Android بدون Root.

محیط واقعی پروژه

تمام تست‌های این مقاله روی دستگاه واقعی زیر انجام شد. این مشخصات از خروجی ADB و گزارش‌های خود پروژه استخراج شده‌اند و برای بازتولید رفتارها اهمیت دارند.

مولفهمقدار ثبت‌شده
گوشیXiaomi POCO X3، مدل M2007J20CG
AndroidAndroid 12، SDK 31
MIUIV14.0.2.0.SJGMIXM
PowerShellPowerShell 7.6.4
ADBAndroid Debug Bridge 1.0.41، Platform Tools 37.0.1
ADB pathD:\AI\poco-x3\platform-tools\adb.exe
Project rootD:\AI\poco-x3
Internal shared storage/storage/emulated/0
microSD/storage/24E5-905A

اسکریپت‌های Audit با حداقل PowerShell 5.1 نوشته شدند، اما Runهای این پروژه با PowerShell 7.6.4 اجرا شدند. برای آرشیو گزارش‌ها نیز از 7-Zip در صورت وجود استفاده شد و فرمت ترجیحی پروژه 7z + LZMA2 + Ultra + Solid بود.

هدف پروژه

هدف فقط پیدا کردن «بزرگ‌ترین فایل» نبود. من می‌خواستم چند سؤال را با شواهد پاسخ بدهم: حافظه واقعی کجا مصرف شده است؟ کدام فایل‌ها متعلق به برنامه‌های حذف‌شده‌اند؟ کدام مسیرها فقط Cache، Log یا Trash هستند؟ کدام فایل‌ها ممکن است داده شخصی باشند؟ و آیا می‌توان قبل از هر حذف نامطمئن یک Backup قابل بررسی روی PC گرفت؟

از همان ابتدا یک اصل برای پروژه تعیین کردم: مسیر پیش‌فرض باید Read-only باشد. یعنی Audit نباید هیچ فایل یا دیتایی را خودش پاک کند. Cleanup تنها بعد از مشاهده شواهد، بررسی Package و در موارد لازم Backup انجام می‌شود.

اولین Audit

نسخه اولیه اسکریپت با نام POCO-X3-Storage-Audit.ps1 ساخته شد تا کل /storage/emulated/0 را Recursive بررسی کند، اندازه فایل‌ها را با stat بگیرد، حجم تجمعی پوشه‌ها را محاسبه کند و خروجی CSV و HTML بسازد.

اولین Run در 19 اوت 2026 ساعت 23:50:12 شروع شد، اما قبل از رسیدن به اسکن گوشی شکست خورد. علت، دانلود خودکار Android Platform Tools بود:

[2026-08-19 23:50:12.895] [INFO] ADB not found. Downloading official Google Platform Tools...
[2026-08-19 23:50:13.998] [ERROR] Response status code does not indicate success: 404 (Not Found).

در این مرحله هیچ اسکن یا Cleanupی انجام نشده بود. مشکل فقط Bootstrap ابزار بود. برای نسخه بعدی چند روش دانلود در نظر گرفته شد، اما در عمل Platform Tools را دستی گرفتم و در مسیر پروژه Extract کردم.

راه‌اندازی ADB

بعد از Extract کردن Platform Tools، مسیر ADB را موقتاً به PATH همان پنجره PowerShell اضافه کردم:

راه‌اندازی ADB در اندروید با PowerShell، افزودن Platform Tools به PATH، فعال‌سازی USB Debugging و تأیید اتصال امن گوشی به کامپیوتر
مراحل راه‌اندازی ADB و اتصال اندروید به ویندوز؛ از تنظیم PATH و بررسی adb devices تا رفع unauthorized و تأیید USB Debugging
$env:PATH = "D:\AI\poco-x3\platform-tools;$env:PATH"

adb version
adb devices

خروجی نسخه ADB در همان Run ثبت شد:

Android Debug Bridge version 1.0.41
Version 37.0.1-15733141
Installed as D:\AI\poco-x3\platform-tools\adb.exe
Running on Windows 10.0.26200

گوشی ابتدا با وضعیت unauthorized دیده شد:

List of devices attached
88f99b0d        unauthorized

بعد از تأیید پیام USB debugging روی گوشی، وضعیت به device تغییر کرد و ارتباط آماده شد. برای انتشار عمومی، Serial دستگاه باید Sanitise شود و نباید در Repository یا گزارش نمونه باقی بماند.

Audit نسخه 1.1

نسخه POCO-X3-Storage-Audit-v1.1.ps1 در 19 اوت 2026 ساعت 23:59:36 اجرا شد. اسکن کامل فایل‌های قابل‌دسترسی تا 20 اوت ساعت 00:03:28 ادامه داشت و 10,356 فایل پیدا شد.

[2026-08-19 23:59:36.525] [INFO] Device: Xiaomi M2007J20CG | Android 12 | SDK 31
[2026-08-19 23:59:36.575] [INFO] Scanning every ADB-readable file under /storage/emulated/0 ...
[2026-08-20 00:03:28.912] [PASS] Files discovered: 10356
[2026-08-20 00:03:29.717] [PASS] Audit completed successfully.

بزرگ‌ترین فایل‌ها در همان Run دو OBB مربوط به KOTOR II بودند:

1.78 GB  /storage/emulated/0/Android/obb/com.aspyr.swkotorii/main.213.com.aspyr.swkotorii.obb
1.73 GB  /storage/emulated/0/Android/obb/com.aspyr.swkotorii/patch.14.com.aspyr.swkotorii.obb

اما مهم‌تر از خود OBBها، تناقضی بود که این Run نشان داد. مجموع فایل‌های قابل‌مشاهده حدود 6.76GB بود، در حالی که df نشان می‌داد 42GB از پارتیشن 45GB مصرف شده است:

Filesystem      Size Used Avail Use% Mounted on
/dev/fuse        45G  42G  3.3G  93% /storage/emulated

این تفاوت نشان داد که اسکن Shared Storage به‌تنهایی نمی‌تواند مصرف واقعی `/data` را توضیح دهد.

Full Audit

برای حل این محدودیت، نسخه‌های Full Audit ساخته شدند. v1.2 علاوه بر فایل‌ها، Packageهای نصب‌شده و خروجی dumpsys diskstats را بررسی می‌کرد و v1.3 خروجی TreeSize را هم اضافه کرد.

نسخه 1.2

Run نسخه v1.2 در 20 اوت 2026 ساعت 00:34:34 شروع شد و ساعت 00:38:02 با موفقیت تمام شد. مهم‌ترین خروجی آن تشخیص Orphan Candidateها بود:

3.51 GB  /storage/emulated/0/Android/obb/com.aspyr.swkotorii
90.72 MB /storage/emulated/0/Android/obb/com.roadhousegames.carnage

نسخه 1.3

v1.3 در 20 اوت ساعت 01:10:25 اجرا شد و علاوه بر Audit، چهار گزارش TreeSize ساخت:

TREESIZE.txt
TREESIZE-folders-only.txt
TREESIZE-folders.csv
TREESIZE-folders-and-files.csv

این نسخه علاوه بر نمایش سلسله‌مراتبی پوشه‌ها، امکان Sort و Filter کردن ساختار در Excel یا PowerShell را فراهم کرد. بعد از اولین Cleanup نیز v1.3 دوباره در 20 اوت ساعت 11:12:40 اجرا شد تا وضعیت جدید مبنای ادامه بررسی باشد.

بقایای بازی‌ها

قبل از حذف OBBهای بازی، فقط به اسم پوشه اکتفا نکردم. با Package Manager بررسی کردم که آیا Packageهای متناظر هنوز نصب هستند یا نه:

adb shell pm list packages | findstr /i "com.aspyr.swkotorii"
adb shell pm list packages | findstr /i "com.roadhousegames.carnage"
adb shell pm list packages | findstr /i "com.worms4.app"

هیچ‌کدام خروجی ندادند. سپس حجم واقعی مسیرها با du تأیید شد:

3.5G  /storage/emulated/0/Android/obb/com.aspyr.swkotorii
91M   /storage/emulated/0/Android/obb/com.roadhousegames.carnage
249M  /storage/emulated/0/Android/obb/Worms-4-v1.0.419806(www.farsroid.com)

در نتیجه KOTOR II و Carnage به‌عنوان Orphan تأیید شدند. Worms هم نصب نبود، اما ساختار پوشه آن Nested بود و همین موضوع یک ضعف v1.2/v1.3 را آشکار کرد: Orphan Detection سطح اول همیشه پوشه‌های واسط غیر-Package را درست تشخیص نمی‌دهد.

دو مسیر اول حذف شدند. حذف Worms در Attempt اول به دلیل وجود پرانتز در نام پوشه با خطای Shell شکست خورد:

/system/bin/sh: syntax error: unexpected '('

این یک Root Cause ساده ولی مهم بود: Quoteگذاری روی سمت PowerShell به‌تنهایی کافی نبود و باید کل Command ارسالی به Shell هم Quote می‌شد. Attempt اصلاح‌شده:

adb shell "rm -rf '/storage/emulated/0/Android/obb/Worms-4-v1.0.419806(www.farsroid.com)'"

بعد از Retest، هر سه مسیر با REMOVED تأیید شدند. فضای آزاد از 5.4GB به 9.3GB رسید:

قبل: 45G total | 40G used | 5.4G free | 88%
بعد: 45G total | 36G used | 9.3G free | 80%

این مرحله یک Fix واقعی و Validated بود، چون هم وجود نداشتن Packageها، هم حجم مسیرها، هم حذف آنها و هم تغییر df ثبت شد.

Trash و Cacheها

Audit جدید چند مسیر واضح دیگر پیدا کرد. دو مورد اصلی Trash/Recycle بودند:

/storage/emulated/0/DCIM/.globalTrash        ≈ 206 MB
/storage/emulated/0/cleanmaster/PicRecycle   ≈ 186 MB

این دو مسیر بعد از بررسی حذف شدند و وجود نداشتن آنها با du ... || echo REMOVED تأیید شد.

در مرحله بعد Cacheهای External چند برنامه حذف شد:

/Android/data/com.miui.cleaner/cache
/Android/data/com.miui.videoplayer/cache
/Android/data/org.telegram.messenger/cache
/Android/data/ir.nasim/cache

قبل از حذف، برنامه‌ها Force Stop شدند. سپس لاگ‌های حجیم Xiaomi Wearable، Bale و Happ Proxy بررسی شدند. مسیرها صراحتاً Log بودند و اندازه‌های ثبت‌شده تقریباً 54MB، 63MB و 51MB بود:

/Android/data/com.xiaomi.wearable/files/log
/Android/data/ir.nasim/files/logs
/Android/data/com.happproxy/files/assets/logs

این Logها نیز بعد از Force Stop برنامه مربوطه حذف شدند. در Happ Proxy فقط پوشه Logs حذف شد؛ فایل‌های اجرایی/داده‌ای مثل geoip.dat و geosite.dat نگه داشته شدند، چون بخشی از داده عملکرد برنامه بودند و Cache یا Log محسوب نمی‌شدند.

Backup قبل حذف

مهم‌ترین تغییر رویکرد پروژه زمانی بود که به برنامه com.sfiord.KianamErtebat رسیدم. مسیر زیر حدود 248MB Cache داشت:

/storage/emulated/0/Android/data/com.sfiord.KianamErtebat/files/Care/Care/app_cache

اما محتوای Cache فقط فایل‌های موقت ناشناس نبود؛ 65 فایل واقعی شامل MP4 و JPG داخل آن قرار داشت. در مقابل، /storage/emulated/0/Download/Care فقط 4 فایل و حدود 18MB داشت. بنابراین نمی‌توانستم فرض کنم همه Cacheها نسخه دیگری دارند.

در این مرحله به‌جای حذف مستقیم، Backup روی PC گرفتم:

$BackupRoot = "D:\AI\poco-x3\backup\PreCleanup-Care-$(Get-Date -Format yyyyMMdd-HHmmss)"
New-Item -ItemType Directory -Force $BackupRoot

adb pull "/storage/emulated/0/Android/data/com.sfiord.KianamErtebat/files/Care/Care/app_cache" "$BackupRoot\app_cache"
adb pull "/storage/emulated/0/Download/Care" "$BackupRoot\Download-Care"

خروجی Backup در 20 اوت 2026 حدود ساعت 11:39 ثبت شد:

app_cache/: 65 files pulled, 0 skipped.
Download/Care/: 4 files pulled, 0 skipped.

تعداد فایل‌ها روی PC دوباره شمرده شد و دقیقاً 65 و 4 فایل بود. مجموع Backup برابر 264.91MB شد. بعد از این Validation، برنامه Force Stop شد و فقط app_cache حذف شد. External Data آن برنامه از حدود 252MB به 4.6MB رسید.

این الگو از آن نقطه به بعد به سیاست پیشنهادی پروژه تبدیل شد: هر چیزی که ظاهراً Cache است ولی محتوای کاربرمانند دارد، اول روی PC Backup و Verify شود و بعد پاک شود.

فضای پنهان /data

بعد از پاک‌سازی Shared Storage، یک سؤال باقی ماند: چرا هنوز `/data` حدود 35GB مصرف دارد، در حالی که کل فایل‌های قابل مشاهده در `/storage/emulated/0` کمتر از 1GB شده‌اند؟

تلاش برای پیمایش مستقیم مسیرهای خصوصی با ADB معمولی به نتیجه زیر رسید:

du: /data: Permission denied
du: /data/app: Permission denied
du: /data/data: Permission denied
du: /data/user/0: Permission denied

این نتیجه نشان داد محدودیت اصلی دیگر اسکریپت نبود؛ Sandbox و Permissionهای Android 12 مانع خواندن مستقیم Private App Data می‌شدند. بنابراین برای Attribution از dumpsys diskstats استفاده کردم.

خروجی ثبت‌شده در آخرین بررسی:

App Size:       10878906880
App Data Size:   7227359862
App Cache Size:  1710006784
Photos Size:       27910144
Videos Size:         315392
Other Size:       750166016

در همان زمان df برای `/data` این وضعیت را نشان می‌داد:

Filesystem       Size Used Avail Use% Mounted on
/dev/block/sda16  45G  35G   10G  77% /data/user/0

پس بخش قابل توجهی از مصرف واقعی در App binary، Private App Data و Private Cache بود؛ چیزی که TreeSize ساده روی Shared Storage نمی‌توانست نمایش دهد.

برنامه‌های حجیم

v1.3 آرایه‌های dumpsys diskstats را به دو CSV مرتب تبدیل کرد: apps-by-storage.csv و apps-by-cache.csv. این مرحله کمک کرد به‌جای حدس، Packageهای واقعی را بر اساس App/Data/Cache رتبه‌بندی کنم.

Packageحجم کلCache
com.google.android.gms1479.37 MB4.39 MB
com.instagram.android1340.8 MB265.73 MB
com.android.chrome1274.58 MB544.9 MB
com.miui.gallery1016.41 MB0.12 MB
com.google.android.apps.photos854.77 MB90.54 MB
ir.nasim674.23 MB143.89 MB
com.whatsapp.w4b660.44 MB10.96 MB

بزرگ‌ترین Private Cache مشخص‌شده Chrome بود با 544.9MB، سپس Instagram با 265.73MB و Bale با 143.89MB. این داده‌ها Snapshot هستند و نباید به‌عنوان مقدار ثابت در دستگاه دیگر یا حتی Run بعدی استفاده شوند.

خطر pm clear

در این مرحله تفاوت Cache Clearing و Data Clearing اهمیت پیدا کرد. فرمان زیر Cache-only نیست:

adb shell pm clear PACKAGE

pm clear می‌تواند کل Data برنامه را حذف کند؛ یعنی Login، دیتابیس، Preference و سایر اطلاعات خصوصی. در جریان پروژه یک بار همین Command با Placeholder لفظی PACKAGE اجرا شد و خروجی Failed گرفت، بنابراین هیچ Package واقعی پاک نشد.

برای Private Cacheهایی که ADB بدون Root اجازه حذف انتخابی آنها را نمی‌دهد، روش محافظه‌کارانه باز کردن App Info و استفاده از گزینه Clear cache خود Android بود:

adb shell am start -a android.settings.APPLICATION_DETAILS_SETTINGS -d package:com.android.chrome

در آخرین وضعیت ثبت‌شده، پاک‌سازی Private Cacheهای Chrome، Instagram و سایر Packageهای بزرگ هنوز به‌صورت مرحله بعدی پیشنهاد شده بود و Validation اجرایی برای آنها در اطلاعات موجود ثبت نشده است. بنابراین این بخش هنوز Not Tested باقی می‌ماند.

بررسی Fastboot

در میانه پروژه موضوع Root و Backup کامل‌تر مطرح شد. قبل از هر Unlock، وضعیت Bootloader با ADB بررسی شد:

ro.boot.flash.locked        = 1
ro.boot.vbmeta.device_state = locked
ro.boot.verifiedbootstate   = green
ro.boot.veritymode          = enforcing

بنابراین Bootloader در وضعیت Locked و Verified Boot در حالت Green بود. گوشی با adb reboot bootloader وارد Fastboot شد، اما Windows دستگاه را با Driver صحیح بالا نیاورد.

Device Manager/PnP این Device را با Hardware ID زیر و Problem Code 28 گزارش کرد:

USB\VID_18D1&PID_D00D\<DEVICE_SERIAL>

Device Description: Android
Class Name: Unknown
Status: Problem
Problem Code: 28 (CM_PROB_FAILED_INSTALL)

در نتیجه fastboot devices خروجی نداد و fastboot getvar unlocked روی < waiting for any device > ماند. این Issue در پروژه حل نشد چون تصمیم گرفتم فعلاً Cleanup و Backup را مقدم بدانم. هیچ Unlock، Flash، Erase یا Root روی گوشی انجام نشد.

خطاها و درسها

این پروژه چند Attempt ناموفق یا ناقص داشت که حذف کردنشان از مستندات، بخش مهمی از مسیر عیب‌یابی را از بین می‌برد.

مشکلنتیجهوضعیت
دانلود خودکار Platform Tools با Invoke-WebRequest404؛ اسکن شروع نشدSuperseded با دانلود دستی و ADB محلی
حذف Worms بدون Quote مناسب برای ShellSyntax error روی پرانتزFix و Retest موفق
Orphan Detection سطح اولپوشه واسط Worms را کامل تشخیص ندادKnown limitation
Direct du روی `/data`Permission deniedAccepted limitation بدون Root
Fastboot روی WindowsDevice Code 28 / Driver missingUnresolved، خارج از Scope فعلی
Private Cache cleanupروش App Info پیشنهاد شدNot Tested در آخرین وضعیت

مسیر پیشنهادی

بعد از تجربه این پروژه، اگر بخواهم همین کار را از ابتدا روی یک گوشی Android غیرروت‌شده تکرار کنم، مسیر تمیزتر برای خواننده این است:

مسیر پاکسازی حافظه اندروید با ADB شامل اسکن فضای ذخیره‌سازی، بررسی Packageها، پشتیبان‌گیری، حذف امن Cache و ارزیابی فضای آزاد
مراحل پیشنهادی پاکسازی امن حافظه اندروید با ADB؛ از USB debugging و تحلیل Storage تا Backup، مدیریت Cache و بررسی نتیجه نهایی
  1. Developer Options و USB debugging را فعال کنید و با adb devices اتصال را تأیید کنید.
  2. قبل از حذف هر چیزی، df -h /data و df -h /storage/emulated/0 را ثبت کنید.
  3. Shared Storage را با find/stat و du اسکن کنید و TreeSize بسازید.
  4. Packageهای نصب‌شده را با pm list packages بررسی کنید و OBB/Data مشکوک را با Package Manager تطبیق دهید.
  5. برای مسیرهای واضح Cache/Log/Trash، برنامه را Force Stop کنید و فقط همان مسیر تأییدشده را حذف کنید.
  6. اگر یک Cache شامل عکس، ویدئو یا داده‌ای است که ممکن است برای کاربر مهم باشد، اول با adb pull روی PC Backup بگیرید و تعداد/حجم فایل‌ها را Verify کنید.
  7. برای فضای خصوصی از dumpsys diskstats استفاده کنید و Packageها را بر اساس App/Data/Cache رتبه‌بندی کنید.
  8. برای Private Cache از Clear cache خود Android استفاده کنید؛ از pm clear برای Cleanup معمولی استفاده نکنید.
  9. بعد از هر مرحله دوباره df و Audit کامل بگیرید تا اثر واقعی تغییر مشخص شود.

خروجی‌های پروژه

اسکریپت‌های Full Audit برای هر Run یک پوشه Timestampدار زیر D:\AI\poco-x3\reports می‌سازند. مهم‌ترین فایل‌ها عبارت‌اند از:

SUMMARY.txt
REPORT.html
run.log
df-all.txt
dumpsys-diskstats.txt
packages-all.txt
packages-user.txt
apps-by-storage.csv
apps-by-cache.csv
internal-all-files.csv
internal-all-folders.csv
internal-large-files-100MB-plus.csv
extensions-by-size.csv
orphan-candidates.csv
android-data-obb-media-package-check.csv
cleanup-candidates-readonly.csv
TREESIZE.txt
TREESIZE-folders-only.txt
TREESIZE-folders.csv
TREESIZE-folders-and-files.csv

این خروجی‌ها برای بررسی دستی، Excel، PowerShell، مقایسه Runها و توسعه ابزارهای بعدی قابل استفاده‌اند. Diagnostic bundle نیز در صورت وجود 7-Zip با 7z/LZMA2 ساخته می‌شود.

Timeline پروژه

رویدادهای زیر فقط از Timestampهای ثبت‌شده در Runها و فایل‌ها استخراج شده‌اند.

تایم‌لاین پروژه پاکسازی حافظه اندروید با ADB شامل مراحل Audit، اسکن فایل‌ها، TreeSize، Cleanup، بررسی مجدد و پشتیبان‌گیری اطلاعات گوشی
روند زمانی پاکسازی امن حافظه اندروید با ADB، از Audit اولیه و شناسایی فایل‌ها تا تحلیل فضای ذخیره‌سازی، Cleanup و Backup نهایی
زمانرویدادنتیجه
2026-08-19 23:50اجرای Audit اولیهدانلود ADB با 404 شکست خورد
2026-08-19 23:59Audit v1.110,356 فایل پیدا شد
2026-08-20 00:03پایان v1.1گزارش و Archive ساخته شد
2026-08-20 00:34Full Audit v1.2Orphan Candidateها استخراج شدند
2026-08-20 01:10Full Audit v1.3TreeSize اضافه شد
2026-08-20 11:12Audit مجدد v1.3وضعیت بعد از Cleanup ثبت شد
2026-08-20 11:39Backup Care روی PC65 + 4 فایل، 0 skipped

برای Cleanupهای میانی Timestamp دقیق همه Commandها در اطلاعات موجود ثبت نشده است؛ بنابراین فقط ترتیب آنها قابل اتکا است و زمان ساختگی برایشان اضافه نشده است.

وضعیت نهایی پروژه

آخرین نسخه قابل اثبات اسکریپت POCO-X3-Storage-Full-Audit-v1.3.ps1 است. آخرین Full Audit ثبت‌شده در 20 اوت 2026 ساعت 11:12 اجرا شد و با PASS تمام شد.

وضعیت نهایی پروژه پاکسازی حافظه اندروید با ADB شامل Audit، TreeSize، حذف OBB، Backup، محدودیت داده خصوصی و خطاهای باقی‌مانده
جمع‌بندی پاکسازی حافظه اندروید با ADB با نمایش مراحل اعتبارسنجی‌شده، اسکن فضای ذخیره‌سازی، Cleanup، پشتیبان‌گیری و وضعیت موارد حل‌نشده پروژه
موضوعوضعیتمدرک
Audit Shared StorageValidatedRunهای v1.1 تا v1.3
TreeSizeValidatedچهار فایل TreeSize ساخته شد
حذف OBBهای بازی‌های حذف‌شدهValidatedPackage check + REMOVED + df
Gallery/Bazaar cleanupValidatedحجم مسیر قبل/بعد + df
Trash/Recycle cleanupValidatedREMOVED برای هر دو مسیر
Care backup-before-deleteValidated65/65 و 4/4 فایل، 0 skipped
Direct private-data scanمحدودPermission denied بدون Root
Private cache cleanupNot Testedفقط Candidateها رتبه‌بندی شدند
Fastboot driverUnresolvedWindows Code 28
Root/Bootloader unlockNot PerformedBootloader همچنان Locked
Full pre-unlock backupNot Completedفقط Backup موضعی Care انجام شد

خلاصه پروژه

مشکل اصلی، پر شدن حافظه داخلی POCO X3 بدون تمایل به Factory Reset بود. اسکن اولیه نشان داد بخش بزرگی از مصرف واقعی با Shared Storage توضیح داده نمی‌شود. با توسعه Audit از نسخه اولیه تا v1.3، فایل‌های حجیم، OBBهای یتیم، Cacheها، Logها، Trashها و Packageهای پرمصرف شناسایی شدند. چند مرحله Cleanup با Verification انجام شد و برای Cache مشکوک Care، Backup روی PC قبل از حذف گرفته شد.

در آخرین وضعیت ثبت‌شده، پارتیشن `/data` حدود 45GB ظرفیت، 35GB مصرف و 10GB فضای آزاد داشت. بخش بزرگی از مصرف باقی‌مانده مربوط به App Size، Private App Data و Private Cache است. محدودیت مهم فعلی این است که ADB بدون Root نمی‌تواند `/data/user/0` را مستقیم پیمایش کند؛ برای همین Attribution از `dumpsys diskstats` انجام می‌شود. Root و Unlock هنوز انجام نشده‌اند و Fastboot Driver ویندوز نیز در وضعیت Code 28 باقی مانده است.

سؤالات متداول

آیا ADB بدون Root می‌تواند کل حافظه Android را فایل‌به‌فایل بخواند؟

خیر. در این پروژه دسترسی مستقیم به `/data`، `/data/app`، `/data/data` و `/data/user/0` با Permission denied رد شد. برای اندازه‌گیری Private App Storage از گزارش‌های Android مانند dumpsys diskstats استفاده شد.

آیا حذف پوشه Android/obb امن است؟

فقط وقتی Package متناظر دیگر نصب نباشد و مسیر با شواهد بررسی شده باشد. در این پروژه قبل از حذف OBBها، نصب نبودن Packageها با pm list packages تأیید شد.

آیا pm clear همان Clear cache است؟

خیر. pm clear می‌تواند کل Data برنامه را حذف کند. برای پاک کردن Cache خصوصی، در این پروژه استفاده از گزینه Clear cache داخل App Info پیشنهاد شد.

چرا TreeSize کمتر از df حجم نشان می‌دهد؟

TreeSize روی `/storage/emulated/0` فقط فایل‌های Shared Storage قابل‌دسترسی را جمع می‌کند، اما df /data App binaries، Private Data، Private Cache و سایر داده‌های پارتیشن را هم حساب می‌کند.

برای فایل‌های مشکوک چه روشی کم‌ ریسک‌تر است؟

Backup روی PC با adb pull، سپس Verify تعداد و حجم فایل‌ها، Force Stop برنامه، حذف فقط مسیر تأییدشده و در پایان اندازه‌گیری مجدد.

آیا در این پروژه گوشی Root شد؟

خیر. Bootloader در وضعیت Locked و Verified Boot در حالت Green ثبت شد. هیچ Unlock یا Flash انجام نشد.

جمع‌بندی

نتیجه اصلی این پروژه برای من این بود که «حافظه داخلی پر شده» در Android لزوماً یک مسئله File Manager نیست. ممکن است چند گیگابایت در OBBهای برنامه‌های حذف‌شده، Cacheهای قابل بازسازی، Logها و Trashها پنهان شده باشد، اما بخش مهم دیگری هم در Private App Data قرار دارد که بدون Root مستقیماً قابل پیمایش نیست.

پاکسازی حافظه اندروید با ADB؛ اسکن و پاک کردن امن بدون R2F | داریوش حقیقی
پاکسازی حافظه اندروید با ADB؛ اسکن و پاک کردن امن بدون R2F | داریوش حقیقی

ترکیب ADB، PowerShell، TreeSize سفارشی و dumpsys diskstats اجازه داد بدون Factory Reset و بدون Root، بخش زیادی از مصرف را به‌صورت قابل دفاع شناسایی و چند مرحله Cleanup را Validate کنم. مهم‌تر از میزان فضای آزادشده، یک Workflow قابل تکرار شکل گرفت: اول اندازه‌گیری، بعد تشخیص مالکیت، سپس Backup در موارد نامطمئن، حذف محدود و در پایان Retest.

پروژه در این نقطه تمام نشده است. پاک‌سازی Private Cacheهای بزرگ، Backup کامل قبل از هر تصمیم برای Unlock و رفع Fastboot Driver هنوز باقی مانده‌اند. بنابراین وضعیت نهایی، یک ابزار Audit و Cleanup مرحله‌ای معتبر است؛ نه یک راه‌حل کامل Root-level برای مشاهده تمام فایل‌های `/data`.

داریوش حقیقی
نویسنده و توسعه‌دهنده

داریوش حقیقی

بیش از 20 سال تجربه در حوزه فناوری اطلاعات، طراحی سایت، سئو تکنیکال، مدیریت سرورهای لینوکس و ویندوز، توسعه وردپرس، برنامه‌نویسی، اتوماسیون و هوش مصنوعی.در djh.ir تلاش می‌کنم تجربیات واقعی پروژه‌های اجرایی، آموزش‌های کاربردی و راهکارهای عملی را با زبانی ساده و قابل استفاده منتشر کنم.

20+ سال تجربه
100+ پروژه اجرایی
1000+ ساعت آموزش

نظر و سوالتون رو اینجا بنویسید...

تماس در تلگرام