استفاده از Syncthing برای ایجاد محیط توسعه دوم
همگامسازی فایلها و پوشهها بدون سرویسهای ابری
چند سال پیش یک اتفاق بد افتاد. کامپیوتر اصلی که باهاش توسعه میدادم دچار ایراد سختافزاری شد و تا مدتی که مشکل حل بشه، نیاز بود تا از یک کامپیوتر جدید استفاده کنم. مساله اما این بود که تا رسیدن به محیط توسعهای که بشه واقعاً ازش استفاده کرد پنج شش ساعت زمان داشت. تا همه نرمافزارهای مورد نیاز نصب و تنظیم بشن و همه فایلهای مورد نیاز جمعآوری بشن.
بعد اون حادثه دنبال این بودم که محیط توسعه دومی رو به عنوان پشتیبان داشته باشیم که در صورت نیاز بتونم راحت سوییچ کنم. این شامل تمام تنظیمات شبکهای و نرمافزاری مورد نیاز بود. کار انجام شد. الان شرایط طوری هست که در صورت نیاز با اتصال کیبورد و ماوس و مانیتور بدون اتلاف وقت میشه کار رو در سیستم پشتیبان از سر گرفت.
یک مساله دیگه هم بود: کدها و فایلها. نیاز به راهکاری برای سینک اینها بود. خب وقتی از git استفاده میکنیم راحت میتونیم pull بگیریم یا حتی مخازن جدید رو clone کنیم. اما من روش دیگهای رو پیش گرفتم: استفاده از Syncthing
Syncthing چیه؟
به کمک نرمافزار Syncthing میتونید پوشههایی مد نظرتون رو بین کامپیوتر/گوشیهای مختلفی که دارید sync کنید.

این همگامسازی به صورت امن انجام میشه و البته تنظیماتی هست که اگر مثلاً ماشینی که داره همگامسازی روش انجام میشه رو بهش مطمئن نیستید کلمه عبور برای رمزنگاری محتویات پوشه همگام شده اختصاص بدین.
مکانیزم کار Syncthing اینه که شما میتونید پوشههایی رو معرفی کنید و بین دستگاههای Remote برای همگامسازی به اشتراک بگذارید. Syncthing به صورت دوره ای اون پوشهها رو برای تغییرات اسکن میکنه و هر تغییری رو در مبدا به مقصدها انتقال میده.
این نرمافزار حتی امکان نسخهبندی (Versioning) رو هم داره و میتونید مشخص کنید تا چند روز یا چند نسخه از فایلها نگهداری بشه. زمان انتقال همه چیز رمزنگاری میشه و رمزگشایی در مقصد هست و البته انتقال میتونه در بستر شبکه داخلی شما (خونه یا محل کار) یا روی اینترنت انجام بشه که برای انتقال روی اینترنت relayهایی داره.
همین کار رو با Google Drive و امثالهم هم میتونید انجام بدید و پوشههایی از یک سیستم رو ابتدا در گوگل درایو و بعد در سیستمهای مقصد داشته باشید. اما مزیت استفاده از Syncthing یا راهحلهای مشابه اینه که میتونید این کار رو در شبکه داخلی انجام بدید.
در حال حاضر Syncthing رو مک و ویندوز و لینوکس و اندروید نرمافزار رسمی داره و البته برای مک و ویندوز علاوه بر نسخههای خط فرمانی، نسخه GUI دار هم داره.
محدودیتهای Syncthing
معماری Syncthing در حال حاضر اجازه نمیده که پوشهها رو در همون دستگاه sync کنید. مثلاً بگید فلان پوشه رو بردار در بهمان پوشه همین کامپیوتر کپی کن. این هم کاربردهایی داره مثلاً برای وقتی که میخواهید یک نسخه پشتیبان ابری داشته باشید.
محدودیت دیگه روی آیفون هست که به دلیل محدودیتهایی که iOS روی اجرای کارها در پسزمینه داره، کلاینت رسمی براش نیست ولی خب یک نسخه تجاری علیرغم این محدودیتها توسعه داده شده.