دانلود فایلهای کششده
فهرست آیتمهای کششده به شما نشان میدهد nsin چه چیزی را ذخیره کرده است. گاهی خودِ فایلها را میخواهید — برای بازیابی تصاویر پس از خرابی سرور، برای دیدن آنچه واقعاً به بازدیدکنندهها سرویس میشود، یا برای گرفتن یک نسخهی پشتیبان پیش از یک تغییر بزرگ.
nsin-dump-cache.sh همین کار را از ترمینال انجام میدهد. یک یا چند دامنه به آن
بدهید تا هر آیتم کششده را در پوشهای جدا برای هر دامنه بنویسد؛ مسیرها و نام
فایلها همانطور که هستند حفظ میشوند.
فایلها از حافظهی کش nsin خوانده میشوند، نه از سایت شما. هیچ درخواستی به سرور شما زده نمیشود، پس پایینبودن سرور — که معمولاً دلیل اصلی نیاز به نسخههای کششده است — هیچ تأثیری روی نتیجه ندارد.
دانلود اسکریپت
Section titled “دانلود اسکریپت”curl -o nsin-dump-cache.sh https://nsin.ir/docs/nsin-dump-cache.shchmod +x nsin-dump-cache.shفقط به python3 نیاز دارد که روی macOS و همهی لینوکسهای رایج از پیش نصب است.
چیزی برای نصب کردن نیست.
تنظیم کلید API
Section titled “تنظیم کلید API”از panel.nsin.ir → Settings → API Keys یک کلید بسازید و آن را export کنید:
export NSIN_API_KEY="nsin_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"کلید فقطخواندنی کافی است — این اسکریپت فقط میخواند. بیشتر در کلیدهای API.
# یک دامنه (حداقل یک دامنه لازم است)./nsin-dump-cache.sh example.com
# چند دامنه با هم — هرکدام پوشهی خودش را میگیرد./nsin-dump-cache.sh example.com shop.example.com example.ir
# لوکیشن دیگر، فقط تصاویر، در پوشهی دلخواه، ۱۲ دانلود همزمان./nsin-dump-cache.sh example.com --node TH --images --out ~/backup -j 12هنگام اجرا برای هر دامنه یک نوار پیشرفت زنده میبینید — تعداد انجامشده، حجم دانلودشده، سرعت لحظهای و زمان باقیمانده — و فایلهای تمامشده بالای آن فهرست میشوند.
▶ example.com registry: 1284 cached entries at node IR 1190 unique URLs, 1190 objects to fetch ✓ example.com/assets/hero.webp 184.2 KB ✓ example.com/assets/app.4f2c.js 92.7 KB ⊙ example.com/old/banner.png no longer cached ████████████████▍ example.com 58% 690/1190 ↓684 ⊙6 214.6 MB · 5.1 MB/s ETA 01:24انتخاب لوکیشن
Section titled “انتخاب لوکیشن”سایت شما در هر لوکیشن nsin جداگانه کش میشود، پس یک آدرس میتواند چند نسخهی
ذخیرهشده داشته باشد. با --node انتخاب میکنید کدام نسخه را دانلود کنید:
./nsin-dump-cache.sh example.com # پیشفرض: IR./nsin-dump-cache.sh example.com --node TH./nsin-dump-cache.sh example.com --node any # هر نسخهای که اول در فهرست بیایدنام لوکیشنها همانهایی است که در فهرست آیتمهای کششده و در جمعهای هر لوکیشن میبینید و به بزرگی و کوچکی حروف حساس است. اگر لوکیشن انتخابی چیزی نداشته باشد، اسکریپت میگوید کدام لوکیشنها دارند:
nothing at node NY. cached at: IR (1284), TH (233)--node any بیشترین پوشش را میدهد — فایلی که فقط در یک لوکیشن کش شده هم
میآید — با این تفاوت که نسخهها از هر لوکیشنی که باشند برداشته میشوند.
فایلها کجا ذخیره میشوند
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. - فایلها بدون فشردهسازی بیرون میآیند، دقیقاً همانطور که nsin ذخیرهشان کرده، حتی اگر بازدیدکنندهها نسخهی gzip را بگیرند.
گزینهها
Section titled “گزینهها”| سوییچ | متغیر محیطی | کارکرد |
|---|---|---|
--node NAME, -n | NSIN_NODE | نسخهی کدام لوکیشن گرفته شود. پیشفرض IR؛ مقدار any یعنی هر نسخهای که در فهرست بیاید. |
--images, -i | IMAGES=1 | فقط تصاویر. حالت پیشفرض همهی آیتمهای کششده را میگیرد. |
--out DIR, -o | OUTDIR | محل ذخیره. پیشفرض: پوشهی جاری. |
-j N | CONCURRENCY | تعداد دانلود همزمان. پیشفرض ۸. |
-k | INSECURE=1 | نادیدهگرفتن بررسی گواهی HTTPS. |
-h | — | نمایش راهنما. |
| — | NSIN_API_KEY | الزامی. کلید API شما. |
| — | NSIN_API | آدرس پایهی API. پیشفرض https://api.nsin.ir. |
چطور کار میکند
Section titled “چطور کار میکند”برای هر آیتم دو درخواست به api.nsin.ir:
۱. فهرستگرفتن — GET /domains/<domain>/cache/keys که بهطور کامل و
صفحهبهصفحه خوانده و به لوکیشن انتخابی محدود میشود. همان دادهای که جدول
آیتمهای کششده نشان میدهد.
۲. دانلود — GET /domains/<domain>/cache/keys/content برای هر سطر، که
بایتهای ذخیرهشدهی همان آیتم را برمیگرداند.
هر آیتم با hostname و node و key_hash همان سطر آدرسدهی میشود — یعنی همان
هویتی که با آن ذخیره شده است. هیچ بخشی از این مسیر به سایت شما کاری ندارد: نه
درخواستی به لبه، نه درخواستی به سرور شما.
پرسشهای رایج
Section titled “پرسشهای رایج”پیام «not found, or this key’s user has no access» میگیرم. نام دامنه باید دقیقاً همان چیزی باشد که در پنل میبینید، و کلید باید متعلق به حسابی باشد که مالک آن دامنه است یا دامنه با آن به اشتراک گذاشته شده است.
تعداد فایلها خیلی کمتر از عدد پنل است.
عدد پنل مجموع همهی لوکیشنهاست. اجرای معمولی فقط نسخههای یک لوکیشن را
برمیدارد — --node any را امتحان کنید.
میتوانم با آن سایت را منتقل کنم؟ فایلهای عمومی و کششده را به شما میدهد — مفید است، اما نسخهی پشتیبان سرور نیست. چیزهای پشت ورود کاربر، هر چیزی که کشنشدنی علامت خورده، و صفحههایی که کسی بازدید نکرده هرگز ذخیره نشدهاند.