קרוב לוודאי ששמעתם על שירותים, כמו Dropbox, המשמשים לשמירת קבצים מסונכרנים בין מספר מכונות. עם זאת, מה אם ברצונך לבצע פעולה זו במכונה אחת? כלומר, שמור קבצים בעלי שם קובץ זהה מסונכרנים ברחבי המכונה כך שכאשר אחד הקבצים משתנה, כולם מעודכנים.
פונקציונליות זו יכולה להיות שימושית למדי, במיוחד עבור מפתחים או מנהלי מערכות שבהם לפעמים נדרש שכפול קבצים.
איך זה עובד
נניח שאתה מפתח אתרים שבמהלך הזמן הקים אוסף נחמד של פונקציות Javascript בו אתה משתמש בכל האתרים שאתה מתחזק. כשאתה מוסיף או משפר את קובץ ה- Javascript הזה (בוא נקרא לו "library.js"), רק העותק הנוכחי שאתה עורך מתעדכן. פירוש הדבר, למשל, אם תבצע תיקון או שיפור באגים תצטרך ללכת להחיל אותו באופן ידני גם על כל תיקיית קוד המקור של האתרים האחרים שלך.
הכלי שלנו מנסה לפתור את הבעיה של צורך ללכת באופן ידני להחיל את הקובץ המעודכן על כל תיקיית מקור. מה שזה עושה:
- מחפש את כל הקבצים עם שם מוגדר (library.js) בתוך תיקיית שורש שצוינה (% UserProfile% \ Documents \ Web Sites).
- עבור כל הקבצים ששמו library.js, הוא מאתר את הקובץ ששונה לאחרונה ומציין את ערך ה- hash של הקובץ.
- לכל שאר הקבצים ששמו library.js (שאינם העותק המעודכן האחרון) יש ערך ה- hash של הקובץ שלהם לעומת האחרון (נקבע בשלב הקודם).
- אם ערכי ה- hash של הקובץ שונים, העותק המתאים של library.js מוחלף בעותק שעודכן לאחרונה.
כי אנחנו משתמשים ערכי חשיש כדי להשוות את הקבצים, אנו בטוחים כי כל הקבצים המוחלפים הם אכן שונים מהעותק האחרון. לדוגמא, אם היית מפעיל את התהליך ובוצעו 5 החלפות קבצים, הפעלת התהליך מיד לאחר מכן לא תעשה שום תחליף מכיוון שערכי ה- hash של הקובץ זהים כעת.
עדכן לכלי ההעתקה החדש ביותר
כלי העדכון לכלי ההעתקה החדש ביותר הוא גרסה שונה של סקריפט אצווה באותו שם (שניהם זמינים להורדה באמצעות הקישורים בתחתית המאמר) אשר הוסב לקובץ EXE על מנת לכלול את הנדרש כלי השירות Nirsoft HashMyFiles . יש להפעיל את הכלי משורת הפקודה עם פרמטרים מסוימים שצוינו. אם רק תריץ את קובץ ה- EXE על ידי לחיצה כפולה, תקבל הודעה המציינת זאת.
כדי להשתמש בעדכון לעותק החדש ביותר, תוכל להציג את הפרמטרים על ידי הפעלת "UpdateToNewestCopy /?" המציג את תיבת הדו-שיח הבאה:
הפרמטרים הנדרשים היחידים הם SourceFolder (למשל% UserProfile% \ Documents \ Web Sites) ו- FileName (library.js). עם זאת, באפשרותך לשנות את הפונקציונליות על ידי הוספת מתגים נוספים כמתואר לעיל.
דוגמאות
הפקודה הבאה תמצא את כל הקבצים בשם "Common.vb" בתוך התיקיה "C: \ משתמשים \ jfaulkner \ מסמכים \ קוד קבצים", מבצעים את ההחלפה אך מבצעים גיבוי של העותק הנוכחי לפני החלפה (פלט זה הוא שהפיק את תמונה עליונה למאמר זה):
UpdateToNewestCopy "C: \ משתמשים \ jfaulkner \ מסמכים \ קבצי קוד" Common.vb / B
הפקודה הבאה מבצעת את אותה פעולת חיפוש כלעיל, אולם היא מדווחת רק על קבצים שיוחלפו ולא מבצעת פעולות קבצים בפועל:
UpdateToNewestCopy "C: \ users \ jfaulkner \ documents \ Code Files" Common.vb / V
נניח שיש קובץ בשם "C: \ Config \ FilesToSearch.txt" עם התוכן הבא:
library.js
Common.vb
הפקודה הבאה תחפש בתיקיית המסמכים שלי של המשתמש הנוכחי ותדווח על כל עדכון ל- "library.js" ו- "Common.vb", אך לא ממש תבצע פעולות עדכון:
UpdateToNewestCopy "% UserProfile% \ Documents" "C: \ Config \ FilesToSearch.txt" / L / V
אוטומציה של התהליך
תהליך זה הוא מועמד אידיאלי לאוטומציה. על ידי יצירת משימה מתוזמנת (שום דבר מיוחד לא נדרש) עם ההגדרות שצוינו והפעלתו יומית / שעה / כל רבע שעה (תלוי בדרישות שלך), תוכל לשמור על סנכרון קבצים בצורה אמיתית להגדיר ולהשכח זאת.
הורד
עדכון לעותק החדש ביותר - פורמט ההפעלה שונה
עדכן לקובצי העתק החדשים ביותר - מקורות אצווה (יותר מכוון שורת פקודה)