סינכרון קבצי הגדרות בין מכונות עם yadm

16/06/2024

יאדם (קיצור של yet another dotfiles manager) הוא כלי פשוט שלוקח קבצים מכל מיני מקומות ומעלה אותם לגיט בתור ריפו אחד, כדי שאפשר יהיה בפקודה אחת למשוך את כל הקבצים האלה חזרה למקומות שלהם על מכונה אחרת, או לקבל ניהול גירסאות על הקבצים אפילו שהם מפוזרים. ולמה שמישהו ירצה מאגר גיט שמאגד יחד קבצים מפוזרים? נו זה ברור משמו - קבצים שנקראים ביוניקס dotfiles הם קבצי הגדרות והם יכולים להיות מפוזרים בכל מיני מקומות על הדיסק. כשעוברים למחשב חדש נוח לקבל את כל ההגדרות שלנו, ומצד שני לאף אחד אין כח להעתיק אותם מכל המקומות בהם קבצים אלה מפוזרים.

בפוסט זה אראה איך להשתמש ב yadm כדי לסנכרן שני קבצי הגדרות בין מכונות דרך מאגר גיטהאב. הדוגמה על אובונטו אבל yadm זמין לכל הפצה של לינוקס וגם ל Mac ו Windows כך שאין שום תירוץ לא להשתמש בו.

1. התקנה ויצירת ריפו

יאדם זמין דרך מאגר החבילות הרגיל של אובונטו ואני מתקין אותו עם:

$ sudo apt update
$ sudo apt install yadm

אחרי ההתקנה אני מוודא שהוא הותקן והכל בסדר עם:

$ yadm --version

את הניסוי עשיתי על מכונה חדשה לכן יצרתי שני קבצי קונפיגורציה:

$ cat > ~/.vimrc
set number
set backspace=2
syntax on
filetype indent on
colorscheme desert  
^D

$ cat > ~/.bash_aliases
alias c=clear
alias rm="rm -f"

ואנחנו מוכנים לסינכרון. בשביל לאתחל את yadm מספיק להפעיל:

$ yadm init

יאדם יצר מאגר גיט מקומי בתיקייה /home/ubuntu/.local/share/yadm/repo.git/, וכן אפשר לקנפג את מיקום התיקייה.

השלב הבא הוא להוסיף את קבצי הקונפיגורציה למאגר וזה עובד כמעט כמו עבודה רגילה עם גיט:

$ yadm add ~/.vimrc ~/.bash_aliases
$ yadm commit -m 'initial version'

הפקודות נראות כמו פקודות גיט ולא במקרה - מבחינת yadm אנחנו מפעילים פקודות גיט רגילות, רק שהקבצים מרוכזים במאגר שנמצא בתיקייה אחרת. מסיבה זאת גם כל פעם שנשנה את אחד מקבצי ההגדרות או שנרצה להוסיף קובץ נוסף נצטרך להוסיף אותו עם yadm add ואז yadm commit.

ומאחר ומדובר בסך הכל במאגר גיט אפשר גם לסנכרן אותו לגיטהאב. פתחתי בשביל הדוגמה מאגר https://github.com/ynonp/dotfiles_demo ואז חיברתי את המאגר המקומי שלי למאגר על גיטהאב:

$ yadm remote add origin https://github.com/ynonp/dotfiles_demo.git
$ yadm push -u origin main

2. משיכת הקבצים למחשב חדש

השלב הבא הוא החלק הכיפי בעבודה עם yadm וזה המשיכה של קבצי הקונפיגורציה למחשב חדש. יצרתי עם multipass מכונה חדשה והרצתי שם (כמובן אחרי התקנה של yadm):

$ yadm clone https://github.com/ynonp/dotfiles_demo

וזה מספיק בשביל לקבל את כל קבצי ההגדרות במקום הנכון שלהם. אם הייתי מפעיל את זה על מכונה קיימת יאדם היה מכניס רק את קבצי ההגדרות החדשים ולא דורס קבצים שכבר היו לי.

3. מידע נוסף

יאדם יודע לעשות עוד המון דברים - הוא יודע לשמור גירסאות אחרות של קבצי ההגדרות לפי מערכת הפעלה או סוג מכונה, להצפין חלק מקבצי ההגדרות כדי שתוכלו לאחסן שם מפתחות SSH, להשתמש בתבניות כדי ליצור דינמית חלק מההגדרות ועוד המון המון דברים. למידע נוסף על הכלי מומלץ לבקר בתיעוד שלהם שנמצא באתר הבית בקישור: https://yadm.io/docs/overview