ویرگول
ورودثبت نام
معید خوش باطن
معید خوش باطنsoftware engineer | تقریبا دولوپر
معید خوش باطن
معید خوش باطن
خواندن ۴ دقیقه·۷ ماه پیش

انتقال دستی افزونه‌ها در لینوکس – تجربه شخصی من

چند وقت پیش تصمیم گرفتم مرورگرم رو عوض کنم رفتم سراغ بریو. نصبش روی فدورا مثل آب خوردن بود و وقتی برای اولین بار اجرا شد، ازم پرسید: «می‌خوای اطلاعاتت رو از کروم سینک کنم؟» خوشحال و خندون گفتم آره. همه‌چیز رو منتقل کرد... جز اکستنشن‌ها!

با اینکه تیک مربوط به extensions رو هم زده بودم، اما هیچ افزونه‌ای منتقل نشد. یه سرچ کوچیک کردم، ولی چیزی دستگیرم نشد. ماجرا رو بی‌خیال شدم... تا امروز!

امروز تصمیم گرفتم به‌جای اینکه منتظر مرورگر بمونم تا اکستنشن‌هامو منتقل کنه، خودم دست‌به‌کار شم و این فرایند رو انجام بدم.


config. و نقش اون تو برنامه‌ها در لینوکس

اگر لینوکس‌کار باشید، حتماً با مسیر config. برخورد داشتید. این دایرکتوری محلیه که برنامه‌ها تنظیمات کاربرمحورشونو اونجا نگه می‌دارن. مثلاً nvim تنظیماتش و تنظیمات پلاگین‌هاش رو اینجا ذخیره می‌کنه.

مرورگرها هم همین‌طورن. Chrome یا Brave برای خودشون دایرکتوری‌هایی داخل config. می‌سازن و اطلاعاتی مثل:

  • پروفایل کاربر

  • اکستنشن‌ها

  • تم‌ها و تنظیمات

  • هیستوری و بوکمارک‌ها

  • و ...

رو اونجا ذخیره می‌کنن.


مسیر مهاجرت چیه؟

کافیه بریم داخل دایرکتوری کروم، اکستنشن‌هارو پیدا کنیم، آخرین نسخه‌ی هرکدوم رو برداریم و تو Brave لود کنیم.

نکته:
ممکنه چند نسخه از کروم (مثل beta, dev یا stable) داشته باشید، پس پوشه‌ای که دقیقاً استفاده می‌کنید رو بشناسید. مثلاً:

~/.config/google-chrome/Default/

یکم جزئیات از داخل دایرکتوری کروم

وقتی وارد دایرکتوری نسخه مد نظرتون از کروم میشید، یه سری فایل‌ها و دایرکتوری‌هایی می‌بینید که به نظر یکم عجیب میان :)

مثلاً:

  • Address Validation Rules
    برای اعتبارسنجی آدرس‌هاست. اگر بازش کنید می‌بینید یه مپه که داره یه سری دیتا درباره فرمت آدرس‌های مختلف تو خودش نگه می‌داره

  • AmountExtractionHeuristicRegexes
    این دایرکتوری محتواش یه سری ریجکس و الگوریتمه برای استخراج عدد از متن. مثلاً برای حالت autofill.

  • BrowserMetrics
    این دایرکتوری وظیفه‌اش جمع‌آوری داده‌هایی متریکه که برای بهبود مرورگر ازش استفاده می‌کنن، مثلاً خطاها، پرفورمنس، یوزیج‌ها و...

  • WasmTtsEngine
    موتور text-to-speech که بر پایه WebAssembly هست.

و بقیه فایلا و دایرکتوری ها.


مرور ساختار دایرکتوری Default

وقتی وارد دایرکتوری Default/ بشید، با کلی فایل و پوشه‌ی عجیب‌غریب مواجه می‌شید، مثلاً:

  • Bookmarks و Bookmarks.bak: اطلاعات بوکمارک‌ها

  • Top Sites: سایت‌هایی که بیشتر بازدید کردید

  • Cookies: کوکی سایت‌ها

  • فایل Visited Links ردپای لینک‌هایی که بازدید کردی.

  • Login Data, Favicons و ...

خوشبختانه یه سری از این فایلا مثل کوکی ها و ... فایلای sqlite هستن و برای مشاهده‌ی محتوای این فایلامی‌تونید از پلاگین SQLite Viewer for VS Code استفاده کنید و خیلی راحت دیتاشو بخونید.


اکستنشن‌ها کجان؟

پوشه‌ی اصلی‌شون اینه:

~/.config/{chrome-name}/Default/Extensions/

داخل این پوشه، دایرکتوری‌هایی با نام‌های عجیب می‌بینید، نگران نباشید اینارم میبینیم که دقیقا چی هستن.

یه نمونه از دایرکتوری ها
یه نمونه از دایرکتوری ها


اول بیایید بریم سراغ chrome و مرورگرمونو باز کنیم بعد تو آدرس بار عبارت زیر رو بنویسیم:

chrome://extensions

بعد میبینیم که یه لیستی از اکستنشن هامون میاد و زیر هر کدوم دوتا دکمه هست : Details و Remove.
البته یه toggle button هم هست که برای فعال یا غیر فعال کردن اون افزونه ست.

یکی از اکستنشن ها رو انتخاب کنید و روی Details کلیک کنید.
تو صفحه ای که باز میشه اطلاعاتی مثل توضیحات، ورژن، سایز و ... نشون داده میشه یکی دیگه از آیتم هایی که اونجا میبینید ExtensionID یا حتی ممکنه ID خالی نوشته باشه.

خوب دقت کنید این براتون آشنا نیست؟!

آفرین دقیقا. این یکی از اون اسامی همون دایرکتوری هایی هست که داخل دایرکتوری Extensions تو config. دیدیم. پس الان دقیقا میدونیم که کدوم اکستنشن، دیتاش تو کدوم دایرکتوریه.
حالا من چون میخواستم کل اکستنشن هامو متنقل کنم اومدم یه اسکریپت نوشتم که میاد آخرین نسخه از اون اکستنشن ها رو برمیداره و میبره داخل یه دایرکتوری به اسم chrome_extensions_backup میزاره (که از طریق این لینک میتونید بهش دسترسی داشته باشید).


مرحله بعد لود کردن اکستنشن‌ها توی Brave

حالا برای اینکه بتونید اکستنشن هاتونو تو بریو ایمپورت کنید کافیه که اول اسکریپت بالا رو ران کنید بعد مرورگر بریو رو باز کنید و تو آدرس‌بار بنویسید:

brave://extensions

بعد مراحل زیرو انجام میدیم:

  • Developer mode رو فعال کنید

  • روی Load unpacked کلیک کنید

  • مسیر هر اکستنشن رو از داخل chrome_extensions_backup انتخاب کنید

همین! افزونه‌هاتون یکی‌یکی لود می‌شن


اما دیتای اکستنشن‌ها چی؟

یه سری اکستنشن ها هستن که دیتا دارن مثلا اکستنشن authentication

واقعیتش خودم این مورد رو که داشتم، سعی کردم از طریق خود اکستنشن تو کروم یه بک اپ بگیرم بعد اینور ایمپورت کنم که خیلی روش امن تریه ولی خوب شما میتونید این روشی که میگم رو هم امتحان کنید ( نمیدونم جواب میده یا چی چون تا الان امتحان نکردم صرفا میدونمش :) )

دیتاهای اکستنشن ها در پنج جا ممکنه ذخیره بشن:

  • در localStorage or sessionStorage

  • در indexedDB

  • در chrome.storage.sync و chrome.storage.local

  • فایل ها و کش های مختص به خود اکستنشن

  • Local Extension Settings

کاری که باید بکنید برید اول آی دی اون اکستنشن رو در بیارید که بتونید دیتاشو پیدا کنید بعد در دایرکتوری Default:
محتویات مربوط به اون آی دی رو از دایرکتوری های Local Extension Settings و IndexedDB و Extension State ببرید تو همین دایرکتوری ها در Default بریو.

~/.config/BraveSoftware/Brave-Browser/Default/

مثلا یه نمونه بخوام بگم:

cp -r ~/.config/google-chrome/Default/Local\ Extension\ Settings/<ext-id> \
~/.config/BraveSoftware/Brave-Browser/Default/Local\ Extension\ Settings/

به همین صورت برای دوتا دایرکتوری های دیگه هم همینکارو بکنید.

اما دو تا نکته:
نکته۱: ممکنه اکستنشن از chrome.storage.sync استفاده کنه که در اینصورت نیاز به لاگین با حساب گوگل هست و به محض لاگین عملیات sync شدن شروع میشه
نکته۲: ممکنه یه سری اکشتنشن ها باشن مثل LastPass یا MetaMask که اینا دیتای رمزنگاری شده دارن در نتیجه فقط با لاگین فعال میشن و کپی کردن دایرکتوری ها ممکنه کافی نباشه


امیدوارم این تجربه کمک‌تون کنه اگه خواستید از Chrome به Brave مهاجرت کنید و مشکلی شبیه به من داشتید بتونید راحت تر مشکل تونو حل کنید.

اگر دوست داشتید بیشتر درباره ساختار پوشه‌های Default/ و یا حتی خود فایل ها و دایرکتوری های کروم بدونید، تو کامنت یا از راه‌های دیگه بهم خبر بدید تا مفصل‌تر سراغش بریم :)

مراقب خودتون باشید 🌱
فعلا.

chromebraveتجربهلینوکسچالش
۴
۴
معید خوش باطن
معید خوش باطن
software engineer | تقریبا دولوپر
شاید از این پست‌ها خوشتان بیاید