Windows Batch Script לגיבוי נתונים

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

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

למה סקריפטים של שורת הפקודה?

מדוע להשתמש בסקריפט שורת פקודה כאשר ישנן תוכנות גיבוי מסחריות וחינמיות בחוץ? ובכן, לסקריפטים של שורת הפקודה יש ​​מספר יתרונות ייחודיים. הנה כמה מהם:

  • פקודות ילידים : איזו דרך טובה יותר לגבות נתונים מאשר שימוש בפונקציות הזמינות דרך התוכנית שיוצרת את הנתונים? בין אם זו מערכת ההפעלה עצמה באמצעות פקודת העתקת קובץ פשוטה או פקודת מסד נתונים להפקת קובץ בינארי שניתן לשחזר, תוכנת המקור יודעת הכי טוב איך לגבות את עצמה.
  • שליטה אולטימטיבית : מכיוון שסקריפט שורת פקודה עוקב אחר הליך פשוט שלב אחר שלב, אתה יודע בדיוק מה קורה ויכול לשנות בקלות את ההתנהגות.
  • מָהִיר : מכיוון שהכל פקודה ילידית, שום דבר אינו נתון לפרשנות. שוב, אתה משתמש בפקודות המסופקות על ידי התוכנית עצמה, כך שהתקורה נשמרת למינימום.
  • חָזָק : עדיין לא ראיתי משימת גיבוי שלא ניתן לבצע באמצעות סקריפט שורת פקודה... ועשיתי כמה דברים מגניבים. למרות שייתכן שתצטרך לעשות קצת מחקר וניסוי וטעייה אם יש לך צרכים ייחודיים באמת, בדרך כלל הפונקציות והתכונות המובנות של שפת הסקריפט שבה אתה משתמש מספיקים יותר.
  • חינם וגמיש : ברור שסקריפט שורת פקודה לא עולה כלום (מחוץ לזמן הפיתוח שלו), אז אתה יכול להעתיק את הסקריפטים שלך לכל מספר של מכונות ומערכות עם מעט זמן או עלות. השוו זאת לעלות רכישת רישיונות לתוכנת גיבוי במספר שרתים ו/או מחשבים שולחניים.

סקירה מהירה של סקריפט אצווה הגיבוי

רוב האנשים מעולם לא למדו להשתמש ב-scripting שורת פקודה, וזה נחשב ל"אמנות שחורה". עם זאת, זה למעשה דבר די פשוט ללמוד. כדי להדגים את כוחה של שורת הפקודה, אני מספק סקריפט אצווה פשוט של Windows שבו אתה יכול להשתמש כדי לגבות את הנתונים החשובים שלך. סקריפט זה הניתן להגדרה וניתן להתאמה אישית אינו דורש ידע (או נכונות ללמוד) של שפת ה-batch scripting של Windows, אך אם תחליט שברצונך ללמוד עוד על קבצי סקריפטים של Windows, תמצא את הסקריפט הזה כמקום התחלה טוב .

מה עושה סקריפט הגיבוי:

  1. יוצר גיבויים מלאים או יומיומיים (ראה להלן להגדרה) של קבצים ותיקיות שאתה מציין בקובץ טקסט נפרד לתצורה (ראה להלן).
    • כאשר שמה של תיקיה, התיקיה וכל תיקיות המשנה מגובות.
    • כאשר קובץ מקבל שם, רק הקובץ הזה מגובה.
  2. דוחס (מכווץ) את הקבצים המגובים. לאחר העתקת כל הקבצים לגיבוי, הם נדחסים כדי לחסוך במקום. 7-Zip נדרש להתקין במערכת שלך כדי שזה יעבוד.
  3. תאריך את הקובץ הדחוס ומעביר אותו למיקום אחסון. לאחר דחיסת קבצי הגיבוי, הארכיון המתקבל מקבל שם קובץ בהתאם לתאריך הנוכחי ולאחר מכן מועבר למיקום אחסון מוגדר, כגון כונן חיצוני או מיקום רשת.
  4. מנקה אחרי עצמו. לאחר השלמת כל המשימות, הסקריפט האצווה מנקה את כל הקבצים הזמניים שהוא יצר.

דרישות:

Windows 2000/XP/2003/Vista ומעלה

7-Zip (זה בחינם)

קובץ תצורה:

קובץ התצורה הוא פשוט קובץ טקסט המכיל קבצים ותיקיות לגיבוי, הוזן פריט גיבוי אחד בכל שורה. הקובץ הזה צריך ייקרא "BackupConfig.txt" ויהיה ממוקם באותה תיקיה כמו סקריפט הגיבוי. הנה דוגמה לקובץ BackupConfig.txt (שים לב, התו "#" בשורה הראשונה מציין שהשורה היא הערה; תמיד מתעלמים מהערות כאשר הסקריפט פועל):

# הזן שמות קבצים ותיקיות, אחד בכל שורה.

C:מסמכים והגדרותJason Faulknerשולחן עבודה C:מסמכים והגדרותJason Faulknerהמסמכים שלי קבצים חשובים C:ScriptsBackupScript.bat

הדוגמה שלמעלה תגבה את שולחן העבודה של משתמש Windows ג'ייסון פוקנר (וכל התיקיות בשולחן העבודה), את התיקיה שנקראת "קבצים חשובים" בתוך המסמכים שלי (וכל התיקיות בתוך "קבצים חשובים") ואת הקובץ "BackupScript.bat" שבתוכו ספריית C:Scripts.

סוגי גיבויים:

  • גיבוי מלא: עותק מלא של כל הקבצים והתיקיות (כולל תיקיות משנה) כלולים בגיבוי.
  • גיבוי מצטבר: כאשר מסופקת תיקיה, רק קבצים שנוצרו או השתנו ב- דייט נוכחי הם

    מגובה. כאשר מסופק קובץ, הוא תמיד מגובה, ללא קשר למועד השינוי שלו.

גיבוי הנתונים של Windows Batch Script

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

  • מיקום אחסון הגיבוי שבו מאוחסנים קבצי הגיבוי הדחוסים שנוצרו.
  • היום בשבוע בו מופעל הגיבוי המלא (בכל יום אחר יפעיל גיבוי מצטבר).
  • המיקום שבו מותקן 7-Zip במחשב שלך. הסקריפט מוגדר אוטומטית להיראות במיקום ברירת המחדל.

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

בלי להכביר מילים, הנה זה:

הערה: מכיוון שהציטוטים אינם מוצגים כראוי למטה (וכתוצאה מכך עלולים לקלקל את הסקריפט), צירפתי קישור טקסט רגיל מתחת לסקריפט שבו תוכל להשתמש כדי לקבל מקור מדויק להעתקה ממנו.

@ECHO OFF REM BackupScript REM גרסה 1.01, עודכן: 2008-05-21 REM מאת Jason Faulkner (מאמרים[-at-]132solutions.com) REM מבצע גיבויים מלאים או מצטברים של תיקיות וקבצים שהוגדרו על ידי המשתמש. REM Usage--- REM > BackupScript SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION REM ---Configuration Options--- REM מיקום תיקיית REM שבו ברצונך לאחסן את ארכיון הגיבוי שנוצר. REM התיקיה הזו חייבת להתקיים. אל תשים '' בסוף, זה יתווסף אוטומטית. REM ניתן להזין נתיב מקומי, אות כונן חיצוני (לדוגמה F:) או מיקום רשת (לדוגמה. \serverbackups) SET BackupStorage=C:Backup REM באיזה יום בשבוע ברצונך לבצע גיבוי מלא? REM הזן אחד מהאפשרויות הבאות: ראשון, שני, שלישי, רביעי, ה', שישי, שבת, * REM כל יום בשבוע מלבד זה שצוין להלן יפעיל גיבוי מצטבר. REM אם תזין '*', יופעל גיבוי מלא בכל פעם. SET FullBackupDay=* מיקום REM שבו מותקן 7-Zip במחשב שלך. REM ברירת המחדל היא בתיקייה, '7-Zip' בספריית Program Files שלך. SET InstallLocationOf7Zip=%ProgramFiles%7-Zip REM +-------------------------------------- --------------------------------+ REM | אל תשנה שום דבר למטה כאן אלא אם כן אתה יודע מה אתה עושה. | REM +------------------------------------------------ -----------------------+ משתני שימוש ב-REM. SET exe7Zip=%InstallLocationOf7Zip%7z.exe SET dirTempBackup=%TEMP%backup SET filBackupConfig=אימות REM של BackupConfig.txt. IF NOT EXIST %filBackupConfig% ( ECHO לא נמצא קובץ תצורה, חסר: %filBackupConfig% GOTO End ) IF NOT קיים "%exe7Zip%" ( ECHO 7-Zip אינו מותקן במיקום: %dir7Zip% ECHO אנא עדכן את הספרייה שבה 7-Zip מותקן. GOTO End ) משתני גיבוי REM. FOR /f "tokens=1,2,3,4 delims=/ " %%a IN ('תאריך /t') DO (SET DayOfWeek=%%a SET NowDate=%%d-%%b-%%c SET FileDate=%%b-%%c-%%d ) IF {%FullBackupDay%}=={*} SET FullBackupDay=%DayOfWeek% IF /i {%FullBackupDay%}=={%DayOfWeek%} ( SET txtBackup =Full SET swXCopy=/e ) ELSE ( SET txtBackup=Incremental SET swXCopy=/s /d:%FileDate% ) ECHO מתחיל להעתיק קבצים. IF NOT EXIST "%dirTempBackup%" MKDIR "%dirTempBackup%" FOR /f "skip=1 tokens=*" %%A IN (%filBackupConfig%) DO ( SET Current=%%~A IF NOT EXIST "!Current! " ( ECHO ERROR! לא נמצא: !Current! ) ELSE ( ECHO Copying: !Current! SET Destination=%dirTempBackup%!Current:~0,1!%%~pnxA REM קבע אם הערך הוא קובץ או ספרייה. IF "%%~xA"=="" ( REM Directory. XCOPY "!Current!" "!Destination!" /v /c /i /g /h /q /r /y %swXCopy% ) ELSE (קובץ REM. COPY /v /y "!Current!" "!Destination!" ) ) ) ECHO סיימתי להעתיק קבצים. הֵד. SET BackupFileDestination=%BackupStorage%Backup_%FileDate%_%txtBackup%.zip REM אם קובץ הגיבוי קיים, הסר אותו לטובת הקובץ החדש. IF EXIST "%BackupFileDestination%" DEL /f /q "%BackupFileDestination%" ECHO דחיסת קבצים מגובים. (חלון חדש) REM דחיסת קבצים באמצעות 7-Zip בתהליך בעדיפות נמוכה יותר. התחל "דחיסה של גיבוי. אל תסגור" /belownormal /wait "%exe7Zip%" a -tzip -r -mx5 "%BackupFileDestination%" "%dirTempBackup%" ECHO בוצע דחיסת קבצים מגובים. הֵד. ECHO ניקוי. IF EXIST "%dirTempBackup%" RMDIR /s /q "%dirTempBackup%" ECHO. :End ECHO Finished. הֵד. ENDLOCAL

מקור טקסט רגיל זמין כאן: גיבוי

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

  • כיצד ליצור קובץ אצווה
  • כיצד ליצור משימה מתוזמנת של Windows

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

תהנה!