/ #البرمجيات الحرة #تقنية 

حلول لا مركزية: كيف تزامن الملفات محليًا بين أجهزتك المختلفة

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

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

لاحقًا انتبهت إلى أنني لا أحتاج إلى الميزة الأساسية لتخزين الملفات سحابيًا، أي الوصول لهذه الملفات من أي جهازٍ متصل بالإنترنت. أستخدم الشبكة العالمية وأعمل من خلالها منذ سنوات طويلة، ولا أذكر أنني استخدمتُ مرةً جهازًا آخر غير جهازي للوصول لملفاتي القليلة التي أخزنها على الشبكة. فاستعمالي لهذه الخدمات كان بغرض التخزين الاحتياطي أولًا، ومزامنة المعلومات بين أجهزتي المختلفة ثانيًا.

هذا يعني أن ما أحتاج إليه هو تطبيق مزامنة لا مركزي، أحدّد من خلاله المجلدات التي أريد مزامنتها (دون نقلها إلى مجلد رئيسي كما في دروب بوكس وغيره)، ليعمل بالخلفية على التأكد من أن جميع الأجهزة المتصلة تملك أحدث نسخة دومًا. هذا بالضبط ما يُقدّمه Syncthing.

في نهاية عام 2013 أطلق Jakob Borg تطبيق Syncthing المكتوب بلغة غو، والذي يستخدم بروتوكول جديد خاص به لتبادل البيانات. خلال وقتٍ قصير أصبح التطبيق متوفر في المستودعات الرسمية لمعظم التوزيعات الرئيسة، كما توفرت له نسخ لأنظمة ويندوز، أندرويد وغيرهما.

بعد تثبيت التطبيق وتشغيله، يُمكن الوصول إلى لوحة الإدارة من خلال الرابط http://localhost:8384/ والتي تشتمل على ثلاثة أقسام رئيسة:

المجلدات

التي تعرض المجلدات المُشاركة مع الأجهزة الأخرى، لا يشترط أن تكون هذه المجلدات موجودة تحت دليل رئيسي، كما هو الحال عند استخدام دروب بوكس ونيكست كلاود، بل يمكن اختيارها بحريّة تامة.

إضافة مجلدٍ جديد تكون عبر تحديد مساره على جهازك، وإعطائه مُعرّف فريد - يقترحه البرنامج - Folder ID يُستخدم للمزامنة، بهذه الطريقة يمكن أن تحمل المجلدات المشتركة أسماءً مختلفة بين الأجهزة المختلفة.

يمكن مشاركة المجلد مع بعض أو كل الأجهزة التي تريد، بالإضافة إلى خيار مفيد لتتبّع نُسخ الملفات المُزامنة File Versioning، وهذا الخيار يمكن أن يأخذ إحدى القيم التالية:

  • الإبقاء على الملفات المحذوفة أو المستبدلة في مجلد مخفي لعدد مُحدد من الأيام (نسخة واحدة فقط)
  • الإبقاء على نسخ مُتعدّدة؛ محدودة العدد للملفات التي تحذف أو تستبدل في مجلد مخفي، يحمل كل منها ختمًا زمنيًا يوضح توقيته.
  • الإبقاء على جميع النسخ المختلفة للملفات المحذوفة أو المستبدلة، تبقى كل نسخة عددًا مُحددًا من الأيام.
  • استخدام تطبيق خارجي لإدارة النسخ مثل git

كما ترى فإن الخيارات السابقة ممتازة، وكل منها يناسب غرضًا مختلفًا أو يلائم طبيعة الملفات التي تنوي مزامنتها ووتيرة التعديل التي تطرأ عليها وأهمية الاحتفاظ به.

من الخيارات الأخرى عند إضافة مجلد جديد تحديد أنماط للتجاهل Ignore Patterns وهو أمر مشابه لما يقوم به ملف .gitignore حيث يتم استثناء ملفات أو أنماط ملفات من المزامنة.

المزامنة - افتراضيًا - تتم بطريقتين: مسح شامل للمجلد يجري كل ساعة (يمكن تعديل الوقت)، والطريقة الثانية من خلال تلقي إشعار من نظام الملفات عن وجود تعديل على أحد الملفات.

الأجهزة الأخرى

القسم الثاني للوحة التحكم يحمل اسم Remote Devices، حيث تتم إضافة الأجهزة من خلاله إما من خلال مسح صورة QR أو نسخ ولصق مُعرّف الجهاز ID.

انتبه إلى أن الإعدادات لامركزية بين الأجهزة المختلفة، إن كنتَ تُشارك مجلدًا باسم Default بين جهازين A وَ B، فيمكنك على سبيل المثال تحديد مهلة إجراء المسح الشامل الدوري مرة كل ساعة على الجهاز A ومرة كل ربع ساعة على الجهاز B. هذا يعني أن التعديلات التي يقوم بها الجهاز A ستصل بوتيرة أسرع للجهاز الثاني.

من الخيارات التي يُمكن تحديدها أيضًا عند إضافة جهاز جديد خيار Introducer، إن حددتَ جهازًا كمُقدّم، فهذا يعني بأن الأجهزة التي يُضيفها ستنقل إلى قائمة “الأجهزة” على جهازك أنت أيضًا. بالإضافة إلى إمكانية تحديد السرعة التي يُمكن للجهاز أن يستخدمها أثناء رفع أو تنزيل الملفات، هذا يسمح بعدم إبطاء الشبكة المحلية في حال مزامنة ملفات ضخمة.

الجهاز الحالي

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

استخدامات مُتعدّدة

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

المزامنة دون الحاجة للرفع إلى الإنترنت شجعتني على العودة لإدارة ملاحظاتي محليًا، أي دون استخدام تطبيق إدارة الملاحظات مثل Simple Note أو Evernote. حيث أكتب الملاحظات كملفات نصيّة صرفة، مُستخدمًا تنسيق org mode (وهو تنسيق مُشابه لمارك دوان لكن بخيارات أكثر)، وأزامنها على Syncthing، يمكن تحرير الملاحظات باستخدام عدد لا حصر له من التطبيقات على مختلف المنصات، ثم حفظها، ليُصار مزامنتها تلقائيًا.

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

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

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

هذا بدوره يفتح الشهية للحديث عن Emby

الصورة من ويكيبيديا