אותו 1 GB, ובכל זאת תיקיית תמונות מועתקת לאט יותר מסרטון אחד — למה?

· עודכן בתאריך: · · Windows, Windows 11, העתקת קבצים, ביצועים, SSD, NAS, ZIP, robocopy

היסטוריית עדכונים (גרסה ראשונה, פורסמה בתאריך 5 Sep 2026)
פרסום ראשון

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

ב-diagram, solid line מציינת relation שתמיד מתקיים ו-dashed line מציינת relation מותנה (התנאים מופיעים בהסבר של כל relation ב-detail page). הרשימה המלאה של ה-relations (סה”כ 11, כולל evidence ו-certainty) וההגדרות של ה-concepts המרכזיים נמצאות ב-detail page של ה-knowledge map (ביפנית). Data: JSON-LD / Turtle

הבעיה / השאלה

סרטון בגודל 1 GB הועתק במהירות, אך העתקת תיקיית תמונות שגודלה הכולל 1 GB נמשכה זמן רב. מדוע קצב ההעברה המוצג יורד בעת העתקת קבצים קטנים רבים, גם כאשר משתמשים ב-SSD או ב-LAN מהיר?

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

סביבת העבודה

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

הדוגמאות משתמשות בסייר הקבצים, ב-Compress-Archive של Windows PowerShell 5.1 ואילך ובכלי robocopy הכלול ב-Windows. כדי להריץ את דוגמאות הפקודות נדרשת הרשאת קריאה במקור, וכן הרשאות ליצור קבצים ולכתוב אותם בתיקיית הניסוי וביעד. ההליכים אינם משתמשים בהרשאות מנהל מערכת כדי לעקוף בקרת גישה.[S7: Compress-Archive] [S9: robocopy]

אפשר לחלץ ארכיון ZIP בתוך ה-NAS עצמו רק אם המוצר מספק יכולת כזאת ולמשתמש יש הרשאה להשתמש בה. התיעוד על SMB המיועד לשרתים מובא כדי להסביר את המנגנון; אין פירוש הדבר שבכל התקני ה-NAS קיימים אותם מאפיינים או אותן הגדרות.

ההסבר מבוסס על תיעוד רשמי שנבדק ב-17 בספטמבר 2026. הדוגמאות המספריות להלן הן חישובים המבוססים על הנחות מפורשות, והפעולות הן הליכי בדיקה שהקוראים יכולים לבצע בסביבה שלהם. אלה אינן תוצאות מדידה ממחשב Windows, מ-SSD או מ-NAS מסוימים. הורדת קובצי ענן שזמינים באופן מקוון בלבד ותכנון גיבוי מלא אינם נכללים בהיקף המאמר.

התשובה / הפתרון

מספר הבתים הכולל אינו הגורם היחיד שקובע את זמן ההעתקה. כאשר חוזרים עבור כל קובץ על פעולות היצירה, הניהול והסיום, גדל הזמן שמוקדש לעבודה שאינה העברת התוכן עצמו. בשיתוף SMB משפיע גם הזמן שבו ממתינים למערכת המרוחקת שתעבד בקשות ותחזיר תשובות. איגוד קבצים בארכיון ZIP או העתקה מקבילית באמצעות robocopy עשויים לעזור, אך אף אחת מהשיטות אינה מבטיחה העתקה מהירה יותר.[S1: Slow SMB files transfer speed]

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

הגדרה

העתקת קובץ כוללת יותר מכתיבת התוכן שלו במקום אחר. יש ליצור את קובץ היעד ולהגדיר את המאפיינים, חותמות הזמן ושאר המידע הנדרש. במאמר זה, העיבוד וההמתנה הדרושים לטיפול בכל קובץ נקראים „זמן נוסף לכל קובץ”, כדי להבדיל ביניהם לבין הזמן שמוקדש להעברת תוכן הקובץ.[S2: CreateFileW function]

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

בעת מעבר דירה, ארגז גדול אחד ועשרת אלפים חבילות שכל אחת מהן ממוענת בנפרד יכולים להיות בעלי אותו משקל כולל, אך לדרוש היקפי עבודה שונים מאוד. באופן דומה, „להעביר 1 GB” ו„לטפל ב-10,000 קבצים” הן שתי משימות שונות.

מספרי קבצים שונים באותו גודל כוללגם כאשר שני מערכי הנתונים מסתכמים ב-1 GB, קובץ אחד וקבצים רבים דורשים מספר שונה של פעולות ניהול קבצים.נתונים בגודל כולל של 1 GBקובץ גדול אחד10,000 קבצים קטניםמעט פעולות לכל קובץחזרה על הפעולות לכל קובץ

איור 1: מספר בתים זהה אינו מעיד על מספר קבצים זהה.

בנתוני ההמחשה שבהמשך, 1 GB פירושו 1,000,000,000 בתים ו-100 KB פירושם 100,000 בתים. בהשוואות יש לרשום את מספר הבתים בפועל, במקום להסתמך על ערכים מעוגלים המוצגים ב-Windows או בכלים אחרים.

תפקיד

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

ZIP מאגד את הקבצים שמועברים, ואילו העתקה מקבילית מאפשרת לזמני ההמתנה של עיבוד כמה קבצים לחפוף: בזמן שהעברה אחת ממתינה לתשובה, העברה אחרת יכולה להתקדם. המקביליות אינה מוסיפה השהיה. אף אחת מהשיטות אינה מאיצה את קישור הרשת או את הדיסק עצמם, וכל אחת מתאימה לתנאים אחרים.[S1: Slow SMB files transfer speed] [S4: Performance Tuning for SMB File Servers]

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

איור 2: מטרת בחירת השיטה היא להעמיד את אותה קבוצת קבצים לשימוש באופן תקין.

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

מבנה

תוכן, מידע ניהולי ונתיב ההעתקה

העתקה כוללת פתיחת המקור, יצירת קובץ היעד, קריאה וכתיבה של התוכן, הגדרת המידע הנדרש וסגירת הקובץ. פתיחת קובץ ב-Windows כרוכה גם בהרשאות הגישה המבוקשות ובמצב שיתוף שקובע אם תהליכים אחרים רשאים לפתוח אותו בו-זמנית.[S2: CreateFileW function]

מידע המשמש לניהול קובץ, כגון השם, הגודל וחותמות הזמן שלו, נקרא מטא-נתונים. NTFS מתעד מידע ניהולי עבור כל קובץ במבנים כגון טבלת הקבצים הראשית, MFT. לכן העתקה אינה מסתכמת בכתיבת נתוני הפיקסלים של תמונה.[S3: Master File Table]

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

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

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

עבודת ניהול הקבצים נותרת גם כאשר משתמשים ב-SSD. אין להעריך את זמן ההעתקה של 10,000 קבצים רק לפי קצב ההעברה הרציפה של קובץ גדול, ואין לסווג כל העתקה של קבצים קטנים כ-I/O אקראי. יש לבחון בנפרד את מיקום התוכן ואת העבודה הנדרשת לכל קובץ.[S3: Master File Table] [S1: Slow SMB files transfer speed]

אופן הפעולה

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

רוחב הפס וההמתנה לתגובה הם מאפיינים שונים של NAS

בשיתוף SMB, המחשב עשוי לבקש פעולת קובץ, להמתין בזמן שמערכת הקבצים המרוחקת מעבדת אותה, ולאחר מכן להמתין לחזרת התשובה. כשמעתיקים קבצים קטנים רבים בזה אחר זה, יצירת הקבצים עשויה להימשך זמן רב יותר משליחת תוכנם, ולכן חלק מרוחב הפס של הרשת נותר בלתי מנוצל.[S1: Slow SMB files transfer speed]

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

איור 4: היכולת להעביר כמות גדולה בבת אחת והיכולת להגיב במהירות לכל פעולה הן יכולות שונות.

רוחב הפס דומה למספר הנתיבים בכביש, ואילו ההשהיה דומה לזמן שחולף עד לקבלת תשובה. גם סריקת אנטי-וירוס עשויה להשפיע על זמן העיבוד של כל קובץ.[S1: Slow SMB files transfer speed]

אין פירוש הדבר שכל קובץ גורם בהכרח למספר קבוע של חילופי הודעות ברשת. SMB יכול לאגד כמה בקשות פעולה, ומטמון ומקביליות משנים אף הם את אופן ההמתנה. אין להניח ש-LAN ביתי ותיקייה משותפת באתר מרוחק מספקים תנאים שקולים.[S5: Sending Compounded Requests] [S8: File Caching]

יש להעריך בנפרד את הדחיסה ואת האיגוד של ZIP

ארכיון ZIP יכול לדחוס נתונים ולאגד קבצים מרובים במכל אחד. מאחר שנתוני JPEG כבר דחוסים, הוספת קובצי JPEG לארכיון ZIP עשויה שלא להקטין את נפחם במידה משמעותית. עם זאת, האיגוד עדיין יכול לצמצם את מספר הקבצים המועברים מ-10,000 לקובץ אחד.[S6: Zip and unzip files]

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

איור 5: גם כאשר הדחיסה מועטה, ZIP יכול לצמצם את מספר הקבצים המועברים.

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

הזמן הנדרש באמצעות ZIP = יצירת ZIP + העברת ZIP + חילוץ

יצירת ארכיון ZIP קוראת כל קובץ קטן, והחילוץ יוצר מחדש כל קובץ קטן ביעד החילוץ. העבודה אינה נעלמת; השיטה משנה את המקום שבו היא מתבצעת ואת האופן שבו הקבצים מועברים. כאשר העיבוד שלפני ההעברה ואחריה משמעותי, ייתכן שהעתקה ללא איגוד תהיה מהירה יותר.[S1: Slow SMB files transfer speed]

יש להבחין איזה התקן מבצע את החילוץ

אם שולחים ארכיון ZIP למחשב של הנמען ומחלצים אותו לכונן המקומי של אותו מחשב, אין צורך ליצור כל קובץ קטן בנפרד דרך הרשת. גם Microsoft מתארת חילוץ של ארכיון במערכת היעד, במקום חילוץ מרחוק.[S1: Slow SMB files transfer speed]

חילוץ ביעד לעומת חילוץ מהמחשב אל שיתוףיש להבחין בין חילוץ פנימי שמבצע התקן היעד לבין מצב שבו המחשב כותב כל קובץ שחולץ אל יעד משותף.שליחת ZIP אל היעדהיעד מחלץ אותו באופן פנימיחילוץ באמצעות יישום במחשבשליחת כל קובץ קטן אל השיתוף

איור 6: העובדה שקובץ ZIP מאוחסן ב-NAS אינה אומרת שגם החילוץ מתבצע בתוך ה-NAS.

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

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

דוגמאות

סעיף זה מציג חישוב להמחשה ואת נתוני ההשוואה שייווצרו בהליך. אף אחד מהם אינו מייצג מהירות שנמדדה במחשב מסוים.

חישוב מפושט עבור 1 GB ו-10,000 קבצים

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

זמן העתקה ≒ מספר הבתים הכולל ÷ קצב העברת התוכן
             + מספר הקבצים × הזמן הנוסף לכל קובץ

לצורך המחשה, נניח שקצב העברת התוכן הוא 100 MB לשנייה ושהזמן הנוסף הוא 2 אלפיות השנייה לכל קובץ. מכיוון שכאן 1 GB שווה ל-1,000 MB, העברת התוכן נמשכת 10 שניות. התוספת עבור קובץ אחד היא 0.002 שנייה, ועבור 10,000 קבצים היא 20 שניות; לכן הזמן הכולל להמחשה במקרה האחרון הוא כ-30 שניות.

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

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

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

קובץ גדול, קבצים קטנים וארכיון ZIP ללא דחיסה

הבסיס לנתוני ההשוואה

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

מקרה הרכב תוכן כולל
A קובץ אחד בגודל 1 GB בשם one.bin. 1,000,000,000 בתים.
B 10,000 קבצים בגודל 100 KB, בשמות part-00000.bin עד part-09999.bin. 1,000,000,000 בתים.
C ארכיון small.zip ללא דחיסה שמכיל את התיקייה small של B. התוכן לאחר החילוץ זהה ל-B; ארכיון ZIP מוסיף מידע ניהולי משלו.
שלוש צורות של נתוני השוואהיוצרים קובץ גדול אחד וקבצים קטנים רבים בעלי אותו תוכן כולל, ולאחר מכן יוצרים מהקבצים הקטנים ארכיון ZIP ללא דחיסה.הכנת אותו סך של 1 GBקובץ אחד בגודל 1 GB10,000 קבצים בגודל 100 KBהכנסת אותו תוכן ל-ZIP ללא דחיסה

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

ל-A ול-B אותו תוכן כולל, אך גודל קובץ ה-ZIP ב-C אינו בדיוק 1,000,000,000 בתים. אי אפשר לפתוח את קובצי ה-.bin שנוצרו מבתים פסאודו-אקראיים כתמונות או כסרטונים אמיתיים, לבדוק באמצעותם איכות תמונה או לשחזר את התנהגותם של יישומים שמעבדים קובצי מדיה אמיתיים.

שלבי העבודה

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

אל תשנו במהלך הניסוי תכונות הגנה, חתימת SMB, הגדרות סנכרון או אמצעי בקרה דומים. אם הרשאות הכתיבה או הפעולות ב־NAS מנוהלות, אל תעקפו את ההגדרות; פנו לאחראי המערכת.[S10: SMB signing overview]

יצירת קובצי ניסוי בעלי נפח כולל זהה

השתמשו ב־Windows PowerShell 5.1 ואילך, וודאו שהתיקייה הזמנית נמצאת בכונן מקומי. A ו־B משתמשים יחד בכ־2GB, ועם קובץ ה־ZIP נדרשים כ־3GB. ודאו שבמקור יש לפחות 5GB של שטח פנוי, ושביעד יש די מקום לכל ניסיונות ההעתקה והחילוץ. הריצו את דוגמאות PowerShell הבאות ברצף, באותו חלון PowerShell.

יצירת שתי ערכות נתונים מאותם רצפי בתיםבכל מחזור נוצרים 100000 בתים פסאודו־אקראיים, המצורפים לקובץ הגדול ונשמרים גם בקובץ קטן נפרד.יצירת 100000 בתיםהוספה אל one.binשמירה בקובץ part נפרדחזרה 10000 פעמים

איור 9: כתיבת אותם נתונים שנוצרו בשתי הערכות משווה את מספר הבתים הכולל בתוכנן.

  1. ודאו שתעבדו בתיקיית ניסוי חדשה ולא תשתמשו בנתונים קיימים.

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

  2. הריצו את הקוד הבא כדי ליצור קובץ גדול וקבוצה של קבצים קטנים.

    $ErrorActionPreference = 'Stop'
    $lab = Join-Path ([System.IO.Path]::GetTempPath()) ('copylab-' + [guid]::NewGuid().ToString('N'))
    $drive = New-Object System.IO.DriveInfo ([System.IO.Path]::GetPathRoot($lab))
    if ($drive.AvailableFreeSpace -lt 5GB) {
        throw 'ודאו שבכונן הניסוי יש לפחות 5GB של שטח פנוי.'
    }
    $largeDir = Join-Path $lab 'large'
    $smallDir = Join-Path $lab 'small'
    [System.IO.Directory]::CreateDirectory($largeDir) | Out-Null
    [System.IO.Directory]::CreateDirectory($smallDir) | Out-Null
    Write-Host "נוצר במיקום: $lab"
        
    $fileCount = 10000
    $buffer = New-Object byte[] 100000
    $random = New-Object System.Random 20260905
    $large = [System.IO.File]::Open(
        (Join-Path $largeDir 'one.bin'),
        [System.IO.FileMode]::CreateNew,
        [System.IO.FileAccess]::Write,
        [System.IO.FileShare]::None
    )
    try {
        for ($i = 0; $i -lt $fileCount; $i++) {
            $random.NextBytes($buffer)
            $name = 'part-{0:D5}.bin' -f $i
            [System.IO.File]::WriteAllBytes((Join-Path $smallDir $name), $buffer)
            $large.Write($buffer, 0, $buffer.Length)
        }
    }
    finally {
        $large.Dispose()
    }
    Write-Host "ההכנה הושלמה. כל ערכת נתונים מכילה $([long]$fileCount * $buffer.Length) בתים."
    
  3. ודאו שההכנה הושלמה, ולאחר מכן בדקו את מספר הקבצים ואת גודלם הכולל בתיקיות large ו־small.

    הקובץ one.bin שבתיקייה large צריך להיות בגודל 1,000,000,000 בתים. התיקייה small צריכה להכיל 10000 קבצים, שכל אחד מהם בגודל 100,000 בתים. בדקו את מספר הבתים של התוכן, למשל במאפייני התיקייה. הודעת השלמה לבדה אינה מאמתת שהעתקה שתבוצע לאחר מכן תהיה תקינה.

A ו־B נוצרים באותה תיקיית ניסוי. אותם רצפי בתים נכתבים פעם אחת כקובץ יחיד ופעם נוספת כקבצים נפרדים, ושתי ערכות הנתונים מכילות 1,000,000,000 בתים. הנתונים הפסאודו־אקראיים מונעים את יכולת הדחיסה הקיצונית של קובץ שכולו אפסים, אך אינם מבטיחים מאפייני ביצועים זהים לאלה של תמונות אמיתיות.

יצירת ZIP ללא דחיסה ורישום זמן היצירה

ודאו ששלב יצירת הנתונים הקודם הסתיים בהצלחה, וש־$lab ו־$smallDir עדיין מוגדרים באותו חלון PowerShell. הליך זה חל רק על הקבצים הרגילים שנוצרו. ל־Compress-Archive יש מגבלות, ובהן השמטת קבצים מוסתרים, ולכן אין להשתמש בדוגמה זו כגיבוי מלא של תיקייה חשובה.

  1. הריצו את הקוד הבא באותו חלון PowerShell.

    $zip = Join-Path $lab 'small.zip'
    $watch = [System.Diagnostics.Stopwatch]::StartNew()
    Compress-Archive -LiteralPath $smallDir -DestinationPath $zip -CompressionLevel NoCompression
    $watch.Stop()
    Write-Host "יצירת ZIP: $($watch.Elapsed.TotalSeconds) שניות"
    Write-Host "גודל ZIP: $((Get-Item -LiteralPath $zip).Length) בתים"
    

    NoCompression מורה לשמור את הקבצים בתוך ה־ZIP בלי לדחוס את תוכנם. הארכיון עדיין כולל מידע ניהולי.[S7: Compress-Archive]

  2. רשמו את מספר השניות שנדרש ליצירת ה־ZIP ואת גודל קובץ ה־ZIP בבתים.

    ודאו שהקובץ small.zip נוצר. לאחר החילוץ, הקבצים נמצאים בתוך תיקייה בשם small, ולכן בבדיקת מספר הפריטים בהמשך יש להשוות את תוכן התיקייה הזאת. אל תכללו ניסיונות שבהם יצירת הארכיון נכשלה; לפני ניסיון נוסף, בדקו את נתוני הניסוי המקוריים ואת השטח הפנוי.

כעת קיימת C, המכילה את אותם קבצים כמו B, וכן רישום של זמן יצירת ה־ZIP. יצירת A ו־B היא חלק מהכנת הניסוי, אך יצירת ה־ZIP היא עלות של השיטה המבוססת על ZIP ולכן נכללת בהשוואה.

העתקה באותו נתיב ומדידת הזמן עד שהקבצים ניתנים לשימוש

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

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

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

  1. רשמו את ההתקנים, הנתיב, שיטת ההעתקה וההתקן שמבצע את החילוץ.

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

  2. באמצעות סייר הקבצים, העתיקו בנפרד את A, את B ואת C אל יעדים חדשים וריקים.

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

  3. אם יש להשתמש ב־C כקבצים נפרדים, מדדו גם את זמן החילוץ.

    בהשוואה הדורשת קבצים מחולצים, חברו את זמני יצירת ה־ZIP, העברתו וחילוצו. כללו את זמן יצירת ה־ZIP שנמדד קודם כעלות יצירה קבועה בכל השוואה; שימוש חוזר באותו ארכיון ZIP צריך להירשם כתנאי נפרד. גם אם יעד השמירה זהה, רשמו אם החילוץ בוצע באמצעות המחשב או באופן פנימי ב־NAS.

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

    יעד חדש אינו מנקה את המטמון בצד המקור. רשמו מקרים שבהם רק הקריאה השנייה נעשית מהירה יותר, והביאו בחשבון שקריאות לאימות התוכן עשויות להשפיע על הניסיון הבא. הליך זה נועד לבחון מגמות הדומות להעתקה רגילה; הוא אינו מדידה קפדנית של ביצועי אמצעי האחסון ללא מטמון.[S8: File Caching]

יישמרו הזמנים ותנאי המדידה של A, B ו־C. בטבלת הרישום שבסעיף „בדיקה“, השתמשו ב־A כמקרה ביקורת והשוו בין B ל־C כשתי דרכים להצבת אותה קבוצת קבצים; לצורך הערכת המהירות, השתמשו רק בניסיונות שהסתיימו בהצלחה.

השוואת המקביליות של robocopy כאשר ZIP אינו מתאים

השתמשו באותו חלון PowerShell שבו יצרתם את נתוני הניסוי. ודאו ש־$smallDir מצביע על הנתונים האלה, שניתן לכתוב קובצי יומן אל $lab ושתיקיית האב של היעד ניתנת לכתיבה. השאירו את נתוני המקור במקומם וצרו יעד חדש לכל הרצה. אל תוסיפו אפשרויות שמוחקות נתונים, כגון /MIR, ‏/PURGE או /MOVE.

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

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

  1. ודאו מהי הסיבה לכך ש־ZIP אינו מתאים, למשל צורך להשתמש מיד בקבצים נפרדים או לשלוח שוב ושוב שינויים.

    האפשרות /MT של robocopy מעבדת כמה קבצים במקביל. בזמן שפעולה אחת ממתינה לתגובה, העברה אחרת יכולה להתקדם, אך הדבר אינו משנה את מהירות חיבור הרשת או ההתקן עצמם.[S9: robocopy] [S4: Performance Tuning for SMB File Servers]

  2. שנו את $targetRoot ליעד שבו יש לכם הרשאת כתיבה, והריצו את הקוד הבא.

    $targetRoot = '\\NAS\share\CopyLab' # יש לשנות ליעד ההעתקה שלכם
    $runId = [guid]::NewGuid().ToString('N')
    $target = Join-Path $targetRoot ('small-mt8-' + $runId)
    $log = Join-Path $lab ('robocopy-' + $runId + '.log')
    robocopy $smallDir $target /E /MT:8 /R:1 /W:1 /XJ "/LOG:$log"
    $code = $LASTEXITCODE
    if ($code -ge 8) {
        throw "ההעתקה דיווחה על כשל. קוד יציאה=$code; יומן=$log"
    }
    Write-Host "קוד יציאה=$code. בדקו ביומן את מספר הפריטים שהועתקו, שדולגו, שאינם תואמים ושנכשלו, ואמתו את תוכן היעד: $log"
    

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

  3. השוו בין /MT:1 לבין /MT:8 באותה דרך, תוך שמירה על כל התנאים מלבד רמת המקביליות.

    כל הרצה חוזרת יוצרת יעד ויומן בעלי GUID חדש. החלק small-mt8 בשם התיקייה שבדוגמה מזהה את תנאי הניסוי; בעת בדיקת /MT:1, שנו גם את החלק הזה ל־small-mt1 כדי שהרישומים יישארו ניתנים להבחנה. אל תשנו בו־זמנית את השימוש ב־ZIP ואת רמת המקביליות; העריכו שינוי אחד בכל פעם.

    /MT:8 הוא נקודת פתיחה להשוואה, ולא ערך מיטבי. מקביליות מופרזת עלולה להגדיל את העומס על המערכת המרוחקת ואף להאט את ההעתקה. אל תתייחסו לשגיאות כהוכחה לשיפור במהירות; בדקו את היומן ואת תוכן היעד.[S1: Slow SMB files transfer speed]

עבור אותה קבוצת קבצים B, יישמרו הזמן, היומן ותוצאת אימות התוכן של כל רמת מקביליות. קוד יציאה 8 ומעלה מציין שנכלל כשל וגורם לקוד הדוגמה לעצור, אך גם קוד יציאה בין 0 ל־7 עדיין מחייב את הבדיקה המתוארת בהמשך.

בדיקה

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

השוואת מספר הפריטים, התוכן ותוצאת הפקודה

התוצאות הצפויות ולאן לחזור במקרה של כשל
יעד הבדיקה התוצאה הצפויה אם אין התאמה
יעד ההעתקה של A קובץ one.bin אחד בגודל 1,000,000,000 בתים. יש לפסול את הניסיון ולבדוק את נתוני המקור שנוצרו, את יעד ההעתקה ואת יומן הרישום.
יעד ההעתקה של B 10,000 קבצים, מ־part-00000.bin עד part-09999.bin, בגודל כולל של 1,000,000,000 בתים. יש לבדוק אם קבצים דולגו, אם אירעו כשלים או אם התערבבו ביעד נתונים מניסיון אחר.
C לאחר החילוץ בתיקייה small נמצאים אותם שמות קבצים יחסיים, אותו מספר פריטים ואותו מספר בתים כולל כמו ב־B. יש לבדוק את היררכיית יעד החילוץ ולקבוע אם קבצים חסרו בשלב יצירת ה־ZIP, ההעברה או החילוץ.

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

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

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

אפשרויות robocopy וקודי יציאה
אפשרות או תוצאה משמעותה בדוגמה זו
/E העתקת כל תיקיות המשנה, לרבות תיקיות ריקות.
/MT:8 העתקה במקביל באמצעות שמונה תהליכונים. זהו התנאי שיש להשוות ל־/MT:1.
/R:1 /W:1 ניסיון חוזר אחד לאחר כשל והמתנה של שנייה אחת לפניו.
/XJ אי־הכללת נקודות צומת. ההשוואה עוסקת בקבצים הרגילים שנוצרו לצורך הניסוי.
/LOG כתיבת יומן רישום נפרד לכל הפעלה.
קוד יציאה 1 עשוי להתקבל גם לאחר העתקה מוצלחת; ערך שאינו אפס אינו מעיד כשלעצמו על כשל.
קוד יציאה 8 ומעלה אירע לפחות כשל העתקה אחד. יש להפסיק את השוואת המהירות ולבדוק את יומן הרישום.
קוד יציאה 0–7 אינו מבטיח כשלעצמו שההעתקה שלמה. יש לבדוק את מספר הקבצים שהועתקו, דולגו, נמצאו בלתי תואמים או נכשלו, וכן לבדוק את הקבצים עצמם.

התיעוד של Microsoft עבור robocopy מתאר את האפשרויות ואת קודי היציאה. ברירת המחדל מעתיקה נתונים, תכונות וחותמות זמן; דוגמה זו אינה גיבוי מלא השומר את כל הפריטים, כגון רשימות בקרת גישה (ACL).[S9: robocopy]

תיעוד המדידות בפועל

טבלה למילוי התוצאות

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

מקרה זמן יצירה זמן העברה זמן חילוץ הזמן הכולל עד שניתן להשתמש בקבצים
A: קובץ גדול אחד לא נכלל, משום שזהו שלב הכנה להשוואה למדוד ולתעד לא נדרש זמן ההעברה, המשמש כביקורת
B: 10,000 קבצים קטנים לא נכלל, משום שזהו שלב הכנה להשוואה למדוד ולתעד לא נדרש זמן ההעברה
C: ZIP ללא דחיסה של B לתעד את יצירת ה־ZIP למדוד ולתעד לתעד כאשר נדרש יצירה + העברה + חילוץ

יש להעריך את B ואת C בתנאי שבסוף ניתן להשתמש באותה קבוצת קבצים באותו יעד סופי. אם רק מאחסנים את קובץ ה־ZIP אין צורך לחלץ אותו, אך זהו תנאי שונה משימוש בקבצים הנפרדים. אם טווחי התוצאות של כמה ניסיונות חופפים, אי אפשר לקבוע שהושג שיפור במהירות החורג מן השונות שנצפתה.

הבחנה בין איטיות לכשל

יש לבדוק בנפרד אם רק אוספים גדולים של קבצים קטנים מועתקים לאט, אם גם קבצים גדולים מועתקים לאט, ומה קורה כאשר מעתיקים את אותו קובץ ליעד מקומי. אם קצב ההעברה יורד במהלך ההעתקה, ייתכן שגם המטמון משפיע; אי אפשר לזהות את הסיבה על סמך הקצב המוצג בלבד.[S8: File Caching] [S1: Slow SMB files transfer speed]

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

איור 13: העתקה איטית של קבצים קטנים אינה זהה לכשל בהעתקה או לתקלה בהתקן.

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

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

מגבלות

מה אפשר ומה אי אפשר להסיק מהשוואה זו

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

גם כאשר משתמשים ביעד חדש וריק, מטמון הקריאה של מערכת ההפעלה ומצב ההתקנים אינם נעשים זהים לחלוטין. הזמן עד שחלון ההעתקה נסגר גם אינו מודד אם כל פעולות הכתיבה הגיעו למצב שישרוד הפסקת חשמל. אין לבדוק זאת באמצעות ניתוק מיידי של התקן חיצוני; יש להשתמש בהליך הרגיל להסרה בטוחה.[S8: File Caching]

גיבוי ואמצעי הגנה הם דרישות נפרדות

קובצי ה־.bin וקובץ ה־ZIP ללא דחיסה שנוצרו מיועדים להשוואה בלבד. ל־Compress-Archive יש מגבלות, כגון השמטת קבצים מוסתרים, והפעלה רגילה של robocopy אינה שומרת את כל התכונות וההרשאות. אין לתכנן גיבוי מלא של נתונים חשובים על סמך השוואת מהירות זו בלבד.[S7: Compress-Archive] [S9: robocopy]

מאמר זה אינו ממליץ להשבית את תוכנת האנטי־וירוס או את חתימת SMB כדי להגביר את המהירות. חתימת SMB מגינה על התקשורת מפני שינוי בלתי מורשה. אין לעקוף הגדרות במחשב מנוהל; יש להתייעץ עם האחראי.[S10: SMB signing overview]

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

מקורות

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

[S1] Microsoft Learn, Slow SMB files transfer speed. תומך בדיון על העומס הנובע מיצירת קבצים, תקשורת ובדיקות בעת עבודה עם מספר רב של קבצים קטנים, על העתקה במקביל ועל חילוץ ארכיון במערכת היעד.

[S2] Microsoft Learn, CreateFileW function. מתאר פתיחה ויצירה של קבצים, הרשאות גישה מבוקשות ומצבי שיתוף.

[S3] Microsoft Learn, Master File Table. מתאר כיצד NTFS מנהלת מידע ניהולי עבור כל קובץ.

[S4] Microsoft Learn, Performance Tuning for SMB File Servers. תומך בדיון על המקביליות ועל הפקת יומני הרישום של robocopy בעת העתקת קבצים קטנים.

[S5] Microsoft Open Specifications, Sending Compounded Requests. מתאר כיצד SMB2 יכול לשלוח יחד כמה פעולות קשורות.

[S6] Microsoft Support, Zip and unzip files. תומך בדיון על איגוד קבצים בארכיוני ZIP ומציין שפורמטים שכבר נדחסו, כגון JPEG, עשויים להצטמצם רק במעט בדחיסה נוספת.

[S7] Microsoft Learn, Compress-Archive. מתאר את האפשרות NoCompression ומגבלות כגון השמטת קבצים מוסתרים.

[S8] Microsoft Learn, File Caching. מתאר את מטמון הקבצים של המערכת ואת מנגנון הכתיבה המושהית.

[S9] Microsoft Learn, robocopy. מתאר מקביליות, ניסיונות חוזרים, יומני רישום, אפשרויות העתקה וקודי יציאה.

[S10] Microsoft Learn, SMB signing overview. מתאר את מטרת ההגנה ואת התפקיד התפעולי של חתימת SMB.

מאמרים עדכניים עם אותן תגיות, להעמקה בנושאים קרובים.

אלה דפי נושא הקרובים לנושא הזה. מהמאמר אפשר להמשיך לשירותים קשורים ולמאמרים אחרים.

המאמר קשור ישירות לשירותים הבאים.

שאלות נפוצות

שאלות נפוצות בהתייעצויות בנושא המאמר.

למה תיקיית תמונות מועתקת לאט יותר גם כשהגודל זהה?
העתקה אינה רק העברת תוכן. לכל קובץ נוצרים קובץ היעד, מנוהל המידע שלו, הוא נסגר, וכן הלאה. כשיש הרבה קבצים קטנים, חלק העיבוד וההמתנה הזה גדל. מה שחשוב אינו פורמט התמונה עצמו אלא מספר הקבצים וגודל כל אחד.
גם ב-SSD או ב-LAN מהיר קבצים קטנים מועתקים לאט?
כן. גם ב-SSD עבודת ניהול הקבצים נשארת, ובהעתקה ל-NAS וכדומה מתווסף הזמן שמחכים לרשת ולעיבוד בצד השני. מהירות העברה רציפה של קבצים גדולים ומהירות הטיפול בהרבה קבצים קטנים הן שני דברים שונים.
אם JPEG כמעט לא קטן ב-ZIP, יש טעם לאגד אותם?
גם כשהנפח כמעט לא יורד, איגוד הקבצים להעברה לאחד עדיין משפיע. יצירת ה-ZIP והחילוץ גם לוקחים זמן. לשימושים שדורשים חילוץ, משווים את הזמן הכולל של יצירה, העברה וחילוץ.
מהיר יותר לשלוח ZIP ל-NAS ואז לחלץ אותו לתיקייה המשותפת מה-PC?
בשיטה הזו ה-PC כותב את הקבצים הקטנים שחולצו אל ה-NAS, כך שיצירת קבצים דרך הרשת קורה שוב. מבחינים בין זה לבין חילוץ בתוך ה-NAS עם יכולת שה-NAS עצמו תומך בה, ומודדים כולל החילוץ.
העתקה במקביל של robocopy נהיית מהירה יותר ככל שמוסיפים threads?
לא. מקביליות מאפשרת להמתנות לכל קובץ לחפוף, אבל גם מגדילה את העומס על האחסון או על ה-NAS. משווים באותם תנאים החל ממספר threads קטן, ובודקים בלוג גם כשלי העתקה וקבצים שהוחמצו.

פרופיל הכותב

עמוד היכרות עם כותב המאמר.

Go Komura

נציג KomuraSoft LLC

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

קישורים ציבוריים

חזרה לבלוג