bash backup script

כיצד יוצרים סקריפט בלינוקס שמגבה מסד נתונים של MySQL

לא מזמן יצא לי לכתוב סקריפט BASH שיעשה גיבוי לאחד ממסדי הנתונים שלי. למי שלא יודע מה זה bash script או bash בכלל, מדובר על shell שנמצאת בכל לינוקס ומקינטוש (אפשר להתקין אותה גם על חלונות למי שבאמת מזוכיסט). ה-shell הזו מאפשרת לכתוב סקריפטים ותוכנות כדי לתחזק את השרת שלהם (בין שאר הדברים).
אני לא sysadmin אבל כמתכנת PHP אני מתמצא היטב בלינוקס ומבצע עבודות IT כשאני צריך. אחת מהעבודות האלו היא לכתוב סקריפט גיבוי לאחד מהאתרים הגדולים שלי. בניגוד למיליוני הסקריפטים שיש ברשת, אני רציתי לכתוב משהו פשוט מאד – רק סקריפט שיעשה גיבוי עם התאריך, זה הכל.

הנה הסקריפט:


#!/bin/bash
myusername="MYSQL USERNAME"
mypassword="MYSQL PASSWORD"
mydatabase="MY SQL DATABASE"
myfilename="mysqlbackup_launchpoker$mydatabase_$(date +%Y_%m_%d).gz"

mysqldump -u$myusername -p$mypassword -f  $mydatabase |gzip  > $myfilename

echo "finished dumping on $(date)"


את הקובץ הזה שומרים בשם כלשהו (כמו למשל backup.sh) לא נשכח לשנות את ההרשאה לקובץ על מנת שנוכל להריץ אותו:


chmod 755 backup.sh

לאחר שהענקנו הרשאת הרצה לקובץ, אנו בודקים אותו באמצעות backup.sh/. הגיבוי נוצר באותה תיקיה שבה הקובץ נשמר.

אחרי כן אפשר לשים את הקריאה לסקריפט ב-crontab. מקלידים


sudo crontab -e

ואז מכניסים את ה-cron, למשל אצלי רציתי גיבוי יומי שיתקיים כל יום בשעה ארבע וחצי בבוקר ולכן הכנסתי את ה-cron הבא:


30 4 * * * /home/ran/backups/backup.sh 2>&1 >> /home/ran/backups/backup.log


הסינטקס הזה גם מדפיס שגיאות/הודעות ב-backup.log שבתיקיה שלי.

אם אתם משתמשים ב-cron מאד חשוב שה-myfilename יכלול את שם הנתיב המלא שבו יש הרשאות לכתיבה.

ישנו מדריך ממש טוב בעברית ב-penguin.co.il לתכנות bash לכל המעוניינים. די שווה לדעת ולו מעט bash ולו רק בשביל מצבים כאלו.

פוסטים נוספים שכדאי לקרוא

תמונה של הבית הלבן עם מחשוב ענן וטקסט: FEDRAMP
פתרונות ומאמרים על פיתוח אינטרנט

FedRAMP & FIPS מבוא למתחילים

פרק מיוחד, לצד הקלטה של פרק של עושים תוכנה על אחת התקינות החשובות ביותר עבור חברות שסביר להניח שלא הכרתם

בינה מלאכותית

Safeguards על מודל שפה גדול (LLM)

פוסט בשילוב עם פודקאסט וסרטון על ההגנות שאפשר להציב על LLM בסביבת פרודקשן

גלילה לראש העמוד