رفتن به محتوا

دانلود فایل‌های کش‌شده

فهرست آیتم‌های کش‌شده به شما نشان می‌دهد nsin چه چیزی را ذخیره کرده است. گاهی خودِ فایل‌ها را می‌خواهید — برای بازیابی تصاویر پس از خرابی سرور، برای دیدن آنچه واقعاً به بازدیدکننده‌ها سرویس می‌شود، یا برای گرفتن یک نسخه‌ی پشتیبان پیش از یک تغییر بزرگ.

nsin-dump-cache.sh همین کار را از ترمینال انجام می‌دهد. یک یا چند دامنه به آن بدهید تا هر آیتم کش‌شده را در پوشه‌ای جدا برای هر دامنه بنویسد؛ مسیرها و نام فایل‌ها همان‌طور که هستند حفظ می‌شوند.

nsin-dump-cache.sh

Terminal window
curl -o nsin-dump-cache.sh https://nsin.ir/docs/nsin-dump-cache.sh
chmod +x nsin-dump-cache.sh

فقط به python3 نیاز دارد که روی macOS و همه‌ی لینوکس‌های رایج از پیش نصب است. چیزی برای نصب کردن نیست.

از panel.nsin.ir → Settings → API Keys یک کلید بسازید و آن را export کنید:

Terminal window
export NSIN_API_KEY="nsin_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

کلید فقط‌خواندنی کافی است — این اسکریپت فقط می‌خواند. بیشتر در کلیدهای API.

Terminal window
# یک دامنه (حداقل یک دامنه لازم است)
./nsin-dump-cache.sh example.com
# چند دامنه با هم — هرکدام پوشه‌ی خودش را می‌گیرد
./nsin-dump-cache.sh example.com shop.example.com example.ir
# فقط تصاویر، در پوشه‌ی دلخواه، ۱۲ دانلود هم‌زمان
./nsin-dump-cache.sh example.com --images --out ~/backup -j 12

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

▶ example.com
registry: 1284 cached entries
1190 unique URLs, 1190 objects to fetch
✓ example.com/assets/hero.webp 184.2 KB · hit
✓ example.com/assets/app.4f2c.js 92.7 KB · hit
████████████████▍ example.com
58% 690/1190 ↓684 ✗6 214.6 MB · 5.1 MB/s ETA 01:24

فایل‌ها کجا ذخیره می‌شوند

Section titled “فایل‌ها کجا ذخیره می‌شوند”

فایل‌ها در پوشه‌ی جاری (یا --out) نوشته می‌شوند، برای هر دامنه یک پوشه:

example.com/
├── index.html
├── assets/
│ ├── hero.webp
│ └── app.4f2c.js
└── cdn.example.com/ ← هر هاست دیگر، زیرپوشه‌ی خودش را دارد
└── logo.png
  • ساب‌دامنه‌ها و هاست‌های وایلدکارت زیرپوشه‌ی جداگانه می‌گیرند تا دو /logo.png متفاوت روی هم نوشته نشوند.
  • آدرس‌هایی که پسوند ندارند بر اساس چیزی که سرور واقعاً برمی‌گرداند نام‌گذاری می‌شوند — /media/8412 که WebP است به‌صورت 8412.webp ذخیره می‌شود.
  • وقتی یک آدرس با کوئری‌های مختلف کش شده باشد (/search?q=a و /search?q=b)، هرکدام یک پسوند کوتاه می‌گیرند تا هر دو نگه داشته شوند: search~e244bbd4.html و search~a96c6999.html.
سوییچمتغیر محیطیکارکرد
--images, -iIMAGES=1فقط تصاویر. حالت پیش‌فرض همه‌ی آیتم‌های کش‌شده را می‌گیرد.
--out DIR, -oOUTDIRمحل ذخیره. پیش‌فرض: پوشه‌ی جاری.
-j NCONCURRENCYتعداد دانلود هم‌زمان. پیش‌فرض ۸.
-kINSECURE=1نادیده‌گرفتن بررسی گواهی HTTPS.
-hنمایش راهنما.
NSIN_API_KEYالزامی. کلید API شما.
NSIN_APIآدرس پایه‌ی API. پیش‌فرض https://api.nsin.ir.

اسکریپت دو کار انجام می‌دهد:

۱. از API می‌پرسد چه آیتم‌هایی برای دامنه‌ی شما کش شده — همان فهرستی که جدول آیتم‌های کش‌شده در پنل نشان می‌دهد، این بار به‌طور کامل و صفحه‌به‌صفحه. ۲. هر آدرس را روی HTTPS دانلود و روی دیسک ذخیره می‌کند.

مرحله‌ی دوم یک درخواست معمولی به سایت شماست، پس هر چیزی که هنوز در کش باشد از نزدیک‌ترین لوکیشن nsin سرویس می‌شود. هر خط تمام‌شده وقتی از کش آمده باشد hit نشان می‌دهد و خلاصه‌ی پایانی آن‌ها را می‌شمارد:

done example.com 1184 saved · 0 skipped · 6 failed · 412.9 MB · 1173 edge hits

پیام «not found, or this key’s user has no access» می‌گیرم. نام دامنه باید دقیقاً همان چیزی باشد که در پنل می‌بینید، و کلید باید متعلق به حسابی باشد که مالک آن دامنه است یا دامنه با آن به اشتراک گذاشته شده است.

چند فایل با خطای HTTP 404 ناموفق شدند. آن آیتم‌ها هنوز در فهرست کش بودند اما آدرسشان دیگر روی سرور شما وجود ندارد. آیتم‌های پاک‌شده یا منقضی هم همین رفتار را دارند.

می‌توانم با آن سایت را منتقل کنم؟ فایل‌های عمومی و کش‌شده را به شما می‌دهد — مفید است، اما نسخه‌ی پشتیبان سرور نیست. هر چیزی که هرگز از طریق nsin درخواست نشده باشد، کش نشده و در خروجی نخواهد بود.