تخطَّ إلى المحتوى
ططارق الوليديAI Developer Tools Directory
r

restic

نشط ومستقريعمل محلياً ✓بدون اشتراك API

أداة نسخ احتياطي مشفّر تنشئ لقطات قابلة للاستعادة محليًا أو على SFTP وS3 مع إزالة التكرار وفحص سلامة المستودع.

$brew install restic
💡

الاستخدام المثالي لهذه الأداة

يناسب مطورًا منفردًا أو فريقًا صغيرًا يريد نسخًا مشفّرة وقابلة للاختبار من ملفات المشاريع وملفات قواعد البيانات المُصدّرة. يعمل على قرص محلي أو تخزين بعيد، ويمكن جدولته بأدوات نظام التشغيل. لا يغني عن تصدير قاعدة البيانات بصورة متسقة أو اختبار الاستعادة.

التفاصيل والميزات المصورة

إذا كانت ملفات مشروعك موجودة على جهاز واحد أو خادم واحد، فتعطّل القرص أو خطأ أمر حذف قد يحوّل المشكلة التقنية إلى فقدان عمل كامل. restic أداة سطر أوامر مفتوحة المصدر تنشئ نسخًا احتياطية مشفّرة على شكل لقطات زمنية، وتخزنها محليًا أو على خادم ووجهات تخزين سحابي. قيمتها العملية أنها تجمع التشفير وإزالة التكرار والتحقق والاستعادة في ملف تنفيذي واحد؛ لكنها لا تختار سياسة النسخ ولا تختبر الاستعادة بدلًا منك.

🧭 ما أداة restic؟

restic برنامج نسخ احتياطي يعمل من الطرفية على macOS وLinux وWindows وأنظمة أخرى. يقرأ الملفات من جهازك، يقسم محتواها إلى كتل، يضغطها، يشفّرها، ثم يكتبها في مستودع Repository. يمكن أن يكون المستودع مجلدًا على قرص خارجي، أو مسار SFTP، أو خادم rest-server، أو تخزينًا متوافقًا مع S3، أو Azure Blob وGoogle Cloud Storage، أو وجهة يدعمها rclone.

كل تشغيل ناجح للأمر backup ينشئ لقطة Snapshot تصف الملفات في وقت محدد. اللقطة تبدو كاملة عند الاستعادة، لكن المستودع لا يعيد تخزين الكتل المتطابقة كل مرة. هذه الآلية تجعل تكرار النسخ عمليًا، مع بقاء الحاجة إلى مساحة تخزين كافية وسياسة احتفاظ وفحص دوري.

مسار ملفات المشروع عبر restic إلى مستودع محلي أو بعيد بعد الضغط والتشفير
مسار ملفات المشروع عبر restic إلى مستودع محلي أو بعيد بعد الضغط والتشفير

رسم توضيحي أصلي؛ ليس لقطة من واجهة المنتج.

🎯 كيف ستفيدك؟

تناسب restic مطورًا منفردًا أو فريقًا صغيرًا يريد نسخة قابلة للاستعادة من ملفات المشاريع، إعدادات التشغيل، المرفقات أو ملفات قواعد البيانات المُصدّرة، دون تشغيل منصة نسخ احتياطي كبيرة. تستطيع تشغيلها يدويًا أولًا، ثم ربط الأمر بـlaunchd على macOS أو cron/systemd timer على Linux أو Task Scheduler على Windows.

مثال عملي: قبل تعديل بنية تطبيق NASQ أو نقل الخادم، صدّر قاعدة PostgreSQL بأداة القاعدة المناسبة، ثم انسخ مجلد المشروع وملف التصدير إلى مستودع restic على قرص خارجي أو خدمة S3. إذا أخطأت في التعديل، يمكنك استعادة لقطة إلى مجلد منفصل ومقارنة الملفات قبل إرجاعها. restic لا ينفذ تصدير PostgreSQL بنفسه، ولا يضمن اتساق قاعدة تعمل أثناء قراءة ملفاتها؛ لذلك يجب إنشاء dump أو snapshot متسق أولًا.

🌟 الميزات والقدرات الرئيسية

1. لقطات متكررة مع إزالة التكرار

عند تشغيل النسخ مرة أخرى، يقارن restic الملفات باللقطة السابقة ويعيد استخدام الكتل الموجودة بدل تخزين نسخة كاملة جديدة. تظهر كل لقطة عند الاستعادة كحالة مستقلة للملفات، لكن البيانات المشتركة تُحفظ مرة واحدة داخل المستودع.

  • أين تجدها: restic backup للإنشاء وrestic snapshots للقائمة.
  • كيف تستخدمها: انسخ المسارات نفسها بانتظام، وثبّت اسم المضيف والمسارات أو الوسوم التي تستخدمها للتجميع.
  • الفائدة: تستطيع الرجوع إلى نقاط زمنية متعددة دون مضاعفة كل البيانات المتطابقة.
  • انتبه: نقل ملف إلى مسار جديد قد يجعله يُفحص من جديد. وإزالة التكرار لا تعني وجود نسختين مستقلتين؛ تلف المستودع قد يؤثر في عدة لقطات.
لقطتان تستخدمان الكتل المشتركة وتضيف الثانية كتلة جديدة فقط
لقطتان تستخدمان الكتل المشتركة وتضيف الثانية كتلة جديدة فقط

رسم توضيحي لآلية اللقطات وإزالة التكرار، وليس قياسًا لحجم التوفير.

2. تشفير مدمج ووجهات تخزين متعددة

يُنشئ restic init مستودعًا محميًا بكلمة مرور. وثائق التصميم تذكر أن بيانات المستودع مشفّرة ومصادق عليها، وتوفر الأداة إدارة عدة مفاتيح وصول بالأوامر key list/add/remove/passwd. التشفير يحدث على الجهاز الذي يشغّل restic قبل إرسال المحتوى إلى التخزين البعيد.

يمكنك البدء بمجلد محلي أو قرص خارجي، ثم الانتقال إلى SFTP أو S3-compatible من دون تغيير طريقة backup وrestore. التخزين السحابي قد يكون مدفوعًا وتُحسب تكلفته منفصلة عن restic.

  • الفائدة: لا تحتاج خدمة النسخ إلى قراءة محتوى ملفاتك بصيغة واضحة.
  • القيد الحاسم: فقدان كلمة مرور المستودع يعني فقدان القدرة على استعادة البيانات. احفظها في مدير كلمات مرور، واختبر الوصول بمفتاح احتياطي عند استخدامه.
  • الصلاحيات: حساب التخزين يحتاج الحد الأدنى اللازم للقراءة والكتابة والقائمة، والحذف عند تشغيل prune. لا تستخدم مفتاح حساب شامل إذا كان مزودك يتيح مفتاحًا مقيّدًا لمجلد أو bucket محدد.

3. فحص المستودع واستعادة كاملة أو انتقائية

يوفر restic check فحص بنية المستودع والفهارس، ويمكن استخدام خيارات قراءة البيانات للتحقق الأعمق. أما restore فيستعيد لقطة كاملة أو ملفات محددة عبر --include أو مسار فرعي. وتساعد أوامر ls وfind على تحديد مكان الملف داخل اللقطة.

النسخة الاحتياطية ليست ناجحة لمجرد أن الأمر انتهى برمز صفر. المسار الآمن هو: فحص دوري، واستعادة تجريبية إلى مجلد منفصل، وفتح ملفات حقيقية، ثم توثيق وقت آخر اختبار. عند الاستعادة داخل مجلد موجود قد تُستبدل ملفات؛ وخيار --delete قادر على حذف ما لا يوجد في اللقطة، لذلك توصي الوثائق باستخدام --dry-run -vv قبل التنفيذ.

فحص المستودع ثم الاستعادة إلى مجلد اختبار وفتح ملفات مختارة
فحص المستودع ثم الاستعادة إلى مجلد اختبار وفتح ملفات مختارة

رسم توضيحي لمسار تحقق عملي؛ لم أنفّذ الاستعادة على مشروعك.

4. سياسات احتفاظ وتنظيف قابلة للمعاينة

يحذف forget مراجع اللقطات القديمة وفق سياسة مثل آخر عدد من اللقطات أو آخر يومي/أسبوعي/شهري. بعد ذلك يحرر prune البيانات التي لم تعد تشير إليها لقطة. يمكن جمع الخطوتين عبر forget --prune، لكن prune قد يستغرق وقتًا ويقفل المستودع مؤقتًا.

ابدأ دائمًا بـforget ... --dry-run واقرأ ما سيُحفظ وما سيُحذف. بعد التنظيف شغّل check في وقت لا يتعارض مع النسخ. لا تنسخ أرقام سياسة عامة من الإنترنت؛ حددها بحسب حجم البيانات، سرعة رفعها، وحجم الضرر الذي تريد الرجوع عنه.

سياسة احتفاظ يومية وأسبوعية وشهرية مع معاينة ثم تنظيف وفحص
سياسة احتفاظ يومية وأسبوعية وشهرية مع معاينة ثم تنظيف وفحص

الأرقام في الرسم مثال توضيحي وليست توصية ثابتة.

🪜 مثال استخدام خطوة بخطوة

مثال توضيحي على macOS لم أنفذه على جهازك: مستودع على قرص خارجي باسم Backup ونسخ مجلد مشروع.

  1. ثبّت restic وتحقق من نسخته:
brew install restic
restic version
  1. أنشئ المستودع مرة واحدة واختر كلمة مرور قوية:
restic init --repo /Volumes/Backup/restic-projects
  1. نفّذ أول نسخة مع استبعاد المجلدات القابلة لإعادة البناء:
restic -r /Volumes/Backup/restic-projects backup "$HOME/Projects/nasq" \
  --exclude node_modules --exclude .nuxt
  1. اعرض اللقطات ثم افحص المستودع:
restic -r /Volumes/Backup/restic-projects snapshots
restic -r /Volumes/Backup/restic-projects check
  1. استعد أحدث لقطة إلى مجلد منفصل، وافتح ملفات مختارة وقارنها:
restic -r /Volumes/Backup/restic-projects restore latest \
  --target "$HOME/Restores/nasq-test"
  1. بعد نجاح التجربة، أنشئ جدولة منفصلة وتسجيلًا لرمز الخروج. لا تجعل رسالة «اكتمل» بديلًا عن اختبار الاستعادة، ولا تحفظ كلمة المرور صريحة داخل مستودع Git.

⚖️ ماذا تضيف مقارنة بالنسخ اليدوي؟

النسخ اليدويباستخدام restic
تنسخ مجلدًا جديدًا كل مرةتنشئ لقطة وتعيد استخدام الكتل المتطابقة
قد تبقى الملفات واضحة على التخزينيُشفّر المستودع بكلمة مرور قبل الإرسال
يصعب معرفة أي نسخة تخص أي وقتتعرض snapshots اللقطات والمضيف والمسارات والوسوم
تحذف مجلدات قديمة يدويًاتطبق سياسة احتفاظ قابلة للمعاينة بـ--dry-run
تفترض أن النسخة سليمةتستخدم check واستعادة تجريبية إلى مسار منفصل

هذه مقارنة لسير العمل، وليست ضمانًا ضد فقدان البيانات. النسخة الموجودة على القرص نفسه ليست حماية من تعطل القرص، والتشفير لا يمنع صاحب صلاحية التخزين من حذف ملفات المستودع.

⚙️ الإعدادات المهمة

  • RESTIC_REPOSITORY أو --repository-file: يحدد موقع المستودع بدل تكرار -r.
  • RESTIC_PASSWORD_FILE أو --password-command: يزود كلمة المرور للأتمتة. احمِ الملف أو الأمر بصلاحيات مستخدم محدودة، ولا تسجله في Git.
  • --exclude و--exclude-file: يستبعد ملفات يمكن إعادة إنشائها أو بيانات لا تريد نسخها. راجع الاستبعاد لأن الخطأ هنا قد يحذف أهم ملف من نطاق النسخ.
  • --dry-run: يعاين backup وrestore وforget وبعض عمليات إعادة الكتابة دون تعديل المستودع.
  • الوسوم --tag: تساعد على فصل نسخ الإنتاج والتطوير أو نوع المهمة، وتؤثر في التجميع وسياسات الاحتفاظ.

🔗 التكاملات والتوافق

يتوفر restic كملف تنفيذي مستقل وحزم لأنظمة macOS وLinux وWindows، كما توجد صورة Docker رسمية. التخزين المدعوم مباشرة يشمل المحلي وSFTP وREST وS3-compatible وAzure وGoogle Cloud Storage وغيرها، ويضيف rclone وجهات أخرى. على Windows يستطيع استخدام VSS للملفات المقفلة، لكن بعض الاستعادة الكاملة للروابط والواصفات الأمنية تحتاج صلاحيات Windows خاصة أو تشغيلًا إداريًا.

restic أداة CLI وليست لوحة مراقبة أو خدمة جدولة. استخدم نظام التشغيل للجدولة، وntfy أو قناة مشابهة للتنبيه، وسجلًا منفصلًا لنتيجة كل تشغيل. هذا تكامل في سير العمل وليس ميزة مدمجة في restic.

💰 التكلفة والتشغيل المحلي

كود restic مجاني ومفتوح المصدر بترخيص BSD-2-Clause، ولا يحتاج API مدفوعًا لتشغيله على قرص محلي أو خادم تملكه. قد تدفع مقابل تخزين S3 أو B2 أو Azure أو نقل البيانات وطلبات API بحسب المزود. تعمل عملية التشفير والفهرسة على جهاز العميل، ويحتاج الوصول إلى الشبكة فقط عند استخدام مستودع بعيد أو التحديث الذاتي.

في 5 أكتوبر 2026 عرض GitHub نحو 36.4 ألف نجمة و1.9 ألف تفرع. هذه أرقام شعبية متغيرة وليست تقييمًا للأمان أو ضمانًا لجودة الاستعادة.

⚠️ الحدود ومتى لا تستخدمها وحدها

  • restic لا ينشئ نسخة متسقة من قاعدة بيانات تعمل؛ استخدم pg_dump أو آلية snapshot مناسبة أولًا.
  • لا توجد واجهة رسومية أو جدولة مدمجة؛ تحتاج سطر أوامر وجدولة ومراقبة منفصلة.
  • كلمة المرور المفقودة لا يمكن تجاوزها لاستعادة البيانات.
  • forget وprune وrestore --delete عمليات مؤثرة؛ عاينها واختبرها قبل الأتمتة.
  • النسخ إلى مستودع واحد لا يحقق قاعدة تعدد النسخ أو الفصل الجغرافي. استخدم وجهة ثانية أو copy بحسب مستوى المخاطر.
  • مزود التخزين أو مهاجم يملك صلاحية الحذف يستطيع إتلاف المستودع؛ فكّر في append-only أو object lock أو نسخة ثانية مستقلة، ثم اختبر السيناريو فعليًا.
  • حجم الذاكرة والوقت يزدادان مع حجم المستودع وبعض عمليات check وprune؛ نفذها في نافذة تشغيل مناسبة.

🔐 الأمان والصلاحيات والخصوصية

يحتاج restic قراءة كل ملف تريد نسخه، وكتابة إلى المستودع، وقراءة/حذف عناصر التخزين عند الاستعادة والتنظيف. لا تشغله كـroot إلا إذا كان نطاق النسخ يتطلب ذلك، لأن الصلاحية الواسعة توسع أثر أي خطأ في المسارات أو السكربت. خصص حسابًا ومفتاح تخزين للمستودع بدل استخدام مفاتيحك العامة.

احفظ كلمة مرور المستودع ومفاتيح S3 أو SSH في مدير أسرار أو ملف محمي، ولا تضعها في سطر أمر يظهر في سجل العمليات. انتبه أيضًا إلى أن مخرجات الطرفية وسجلات التصحيح قد تعرض مسارات وأسماء ملفات؛ راجعها قبل مشاركتها. التشفير يحمي محتوى المستودع، لكنه لا يحمي الجهاز أثناء قراءة الملفات ولا يمنع حذف النسخة من طرف يملك صلاحية التخزين.

📚 المصادر وتاريخ التحقق

تحققت في 5 أكتوبر 2026 من المستودع الأصلي، الإصدار v0.19.1، التوثيق الرسمي، التثبيت، إعداد المستودع والوجهات، النسخ واللقطات، الاستعادة، الاحتفاظ والتنظيف، والترخيص. أحدث إصدار مستقر موثق هو v0.19.1 بتاريخ 5 يوليو 2026، وآخر commit ظاهر وقت الفحص بتاريخ 25 سبتمبر 2026. لم أثبت restic أو أنفذ مثال النسخ والاستعادة على جهاز فعلي.