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 ולו רק בשביל מצבים כאלו.

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

פייתון

קבצי קונפיגורציה בפואטרי

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

צילום מסך של סוואגר
יסודות בתכנות

openAPI

שימוש בתשתית הפופולרית למיפוי ותיעוד של API וגם הסבר בסיסי על מה זה API

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