ما هو ملف ZST؟
Zstandard (اختصاراً zstd) هي خوارزمية ضغط بيانات بدون فقدان حديثة طورها Yann Collet في Meta (فيسبوك) وأُطلقت مفتوحة المصدر عام 2016. قننتها IETF معياراً رسمياً بـ RFC 8478 (الضغط) وRFC 8878 (الإطار).
ما يميز Zstandard هو التوازن الاستثنائي بين سرعة الضغط وسرعة فك الضغط ونسبة الضغط — تتفوق على gzip في كل المحاور: أسرع 2-5× في الضغط، وأسرع 3-4× في فك الضغط، مع نسب ضغط أفضل بـ 10-20%. تدعم zstd ضغطاً بالقاموس (Dictionary Compression) حيث يُدرَّب قاموس مشترك على بيانات مشابهة يُقلّل حجم الملفات الصغيرة بشكل كبير.
كيفية فتح ملفات ZST
- 7-Zip (ويندوز) — الإصدار 22.01+ يدعم zstd مجاناً
- zstd CLI (ويندوز، ماك، لينكس) —
zstd -d file.zstلفك الضغط - tar (لينكس، ماك) —
tar --zstd -xf archive.tar.zst - PeaZip (ويندوز، لينكس) — واجهة رسومية مجانية
- NanaZip (ويندوز) — بديل 7-Zip حديث يدعم zstd
المواصفات التقنية
| الخاصية | القيمة |
|---|---|
| البايتات السحرية | 28 B5 2F FD |
| نوع MIME | application/zstd |
| المعيار | RFC 8478، RFC 8878 (IETF) |
| الخوارزمية | LZ77 + FSE (Finite State Entropy) |
| مستويات الضغط | 1-22 (افتراضي 3) |
| الضغط | 400-600 ميجابايت/ثانية (مستوى 3) |
| فك الضغط | 1,700-2,000 ميجابايت/ثانية |
| ضغط القاموس | ✅ (للملفات الصغيرة المتكررة) |
| تعدد الخيوط | ✅ (pzstd للضغط المتوازي) |
الاستخدامات الشائعة
- مديرو حزم لينكس: Arch Linux (pacman) وFedora (RPM) وUbuntu الحديثة تضغط حزمها بـ zstd
- قواعد البيانات: PostgreSQL وRocksDB وMySQL يدعمون zstd للضغط الشفاف للجداول
- أنظمة الملفات: Btrfs وZFS يدعمان ضغط zstd الشفاف على مستوى نظام الملفات
- شبكات المحتوى (CDN): Cloudflare وFastly يستخدمان zstd في HTTP Content-Encoding
- الأرشفة والنسخ الاحتياطي: Restic وDuplicati ببرامج النسخ الاحتياطي يدعمان zstd
- ضغط بيانات لينكس الداخلي: Linux kernel يستخدم zstd لضغط النواة والـ initramfs
ZST مقابل XZ مقابل GZIP مقابل BZIP2
| الميزة | ZST | XZ | GZIP | BZIP2 |
|---|---|---|---|---|
| نسبة الضغط | ✅ جيدة | ✅ الأفضل | متوسطة | جيدة |
| سرعة الضغط | ✅ الأسرع | بطيء | ✅ سريع | متوسط |
| سرعة فك الضغط | ✅ الأسرع | ✅ سريع | ✅ سريع | بطيء |
| استهلاك الذاكرة | منخفض | عالٍ | ✅ منخفض | متوسط |
| القاموس | ✅ | ❌ | ❌ | ❌ |
| الشيوع | يتزايد | ✅ شائع | ✅ الأشيع | متراجع |
أوامر zstd الأساسية
# ضغط ملف (يحذف الأصل)
zstd file.tar
# ضغط مع الاحتفاظ بالأصل
zstd -k file.tar
# فك الضغط
zstd -d file.tar.zst
# ضغط بأعلى نسبة (مستوى 19، أبطأ)
zstd -19 bigfile.tar
# ضغط سريع جداً (مستوى 1)
zstd -1 file.tar
# ضغط متعدد الخيوط (أسرع على أجهزة متعددة النواة)
zstd -T0 -3 largefile.tar # T0 = كل الأنوية
# ضغط مجلد مع tar
tar -I 'zstd -T0' -cf archive.tar.zst directory/
# فك ضغط tar.zst
tar --zstd -xf archive.tar.zst
# عرض إحصاءات الضغط
zstd -v file.tar
# ضغط بقاموس مُدرَّب (للملفات الصغيرة المتكررة)
zstd --train training_data/ -o dictionary.dict
zstd -D dictionary.dict -o small.zst small_file.json
نصيحة: zstd المستوى 3 (الافتراضي) هو أفضل اختيار للاستخدام العام — يُوازن بين السرعة والضغط. للأرشفة طويلة الأمد استخدم المستوى 19 أو 22 (أبطأ لكن أصغر). لخطوط البيانات الحية استخدم المستوى 1 للحد الأقصى من السرعة.