זוהי הפקודה lbzcat שניתן להריץ בספק האירוח החינמי של OnWorks באמצעות אחת מתחנות העבודה המקוונות החינמיות שלנו כגון Ubuntu Online, Fedora Online, אמולטור מקוון של Windows או אמולטור מקוון של MAC OS.
תָכְנִית:
שֵׁם
lbzip2 - כלי עזר מקבילי ל-bzip2
תַקצִיר
lbzip2|bzip2 [-n WTHRS] [-k|-c|-t] [-d] [-1 .. -9] [-f] [-s] [-u] [-v] [-S] [ קובץ ... ]
lbunzip2|bunzip2 [-n WTHRS] [-k|-c|-t] [-z] [-f] [-s] [-u] [-v] [-S] [ קובץ ... ]
lbzcat|bzcat [-n WTHRS] [-z] [-f] [-s] [-u] [-v] [-S] [ קובץ ... ]
lbzip2|bzip2|lbunzip2|bunzip2|lbzcat|bzcat -h
תיאור
דחיסה או שחרור דחיסה קובץ אופרנדים או קלט סטנדרטי לקבצים רגילים או פלט סטנדרטי
באמצעות אלגוריתם דחיסת טקסט למיון בלוקים של Burrows-Wheeler. lbzip2 תועלת
משתמש במספר הליכים ומפצל קלט-כבול גם בעת פירוק דחיסה . Bz2 קבצים
נוצר על ידי bzip2 הסטנדרטי.
דחיסה טובה באופן כללי משמעותית מזו המושגת על ידי דחיסה קונבנציונלית יותר
מדחסים מבוססי LZ77/LZ78, ותחרותיים עם כל משפחת PPM מלבד הטובים ביותר של
מדחסים סטטיסטיים.
הדחיסה מתבצעת תמיד, גם אם הקובץ הדחוס מעט יותר גדול מהקובץ
המקורי. ההרחבה הגרועה ביותר היא עבור קבצים באורך אפס, אשר מתרחבים לארבע עשרה
בתים. נתונים אקראיים (כולל הפלט של רוב מדחסי הקבצים) מקודדים באמצעות
התפשטות אסימפטוטית של כ-0.5%.
אפשרויות שורת הפקודה דומות מאוד בכוונה לאלו של bzip2 ו מופעלת דחיסת, אבל
הם אינם זהים.
קְרִיאָה
מצב הפעולה המוגדר כברירת מחדל הוא דחיסה. אם כלי השירות מופעל כ lbunzip2 or
bunzip2, המצב עובר למצב דקומפרסיה. קריאה לכלי השירות כ lbzcat or bzcat
בוחר דחיסה, כאשר זרם הבייטים שעבר דחיסה נכתב לפלט סטנדרטי.
אפשרויות
-n WTHRS
הגדר את מספר הליכי הדחיסה (de)compressor ל- WTHRSאם אפשרות זו אינה קיימת
נָקוּב, lbzip2 מנסה לשאול את המערכת לגבי מספר המעבדים המקוונים (אם
גם סביבת הקומפילציה וגם סביבת הביצוע תומכות בכך), או
מסתיים עם שגיאה (אם הוא לא מצליח לקבוע את מספר המעבדים המחוברים).
-k, --לִשְׁמוֹר
אל תסיר קובץ אופרנדים לאחר (דה)דחיסה מוצלחת. פתח קלט רגיל
קבצים עם יותר מקישור אחד.
-c, --stdout
כתיבת פלט לפלט סטנדרטי, גם כאשר קובץ אופרנדים קיימים. מרמז -k
ולא כולל -t.
-t, --מִבְחָן
בדיקת פירוק דחיסה; ביטול פלט במקום לכתוב אותו לקבצים או לקבצים סטנדרטיים
פלט. מרמז -k ולא כולל -cשווה ערך בערך למעבר -c ו
ניתוב מחדש של פלט סטנדרטי לדלי הסיביות.
-d, --לְשַׁחְרֵר לָחָץ
כפיית פירוק דחיסה מעל מצב הפעולה שנבחר על ידי שם הקריאה.
-z, --לִדחוֹס
כפיית דחיסה על פני מצב הפעולה שנבחר על ידי שם הקריאה.
-1 .. -9
הגדר את גודל בלוק הדחיסה ל-100K .. 900K, במרווחים של 100K. הפעולה תתעלם במהלך
דקומפרסיה. ראה גם את הסעיף גודל הבלוק להלן.
--מָהִיר כינוי עבור -1.
--הטוב ביותר כינוי עבור -9. זוהי ברירת המחדל.
-f, --כּוֹחַ
פתיחת קבצי קלט לא רגילים. פתיחת קבצי קלט עם יותר מקישור אחד, שבירה
קישורים כאשר -k לא צוין בנוסף. נסה להסיר כל קובץ פלט לפני כן.
פותח אותו. כברירת מחדל lbzip2 לא ידרוס קבצים קיימים; אם אתה רוצה זאת
כדי שיקרה, עליך לציין -f. אם -c ו -d ניתנים גם אל תדחה קבצים
לא בפורמט bzip2, פשוט העתיקו אותם ללא שינוי; בלי -f lbzip2 היה עוצר
לאחר הגעה לקובץ שאינו בפורמט bzip2.
-s, --קָטָן
הפחתת ניצול הזיכרון על חשבון ביצועים.
-u, --סִדרָתִי
בצע פיצול בלוקי קלט ברצף. פעולה זו עשויה לשפר את יחס הדחיסה ואת
יפחית את ניצול המעבד, אך יפגע ביכולת ההרחבה.
-v, --מִלוּלִי
היה יותר מפורט. הדפס מידע מפורט יותר על התקדמות (דה)דחיסה אל
שגיאה סטנדרטית: לפני עיבוד כל קובץ, הדפס הודעה המציינת את שמות
קבצי קלט ופלט; במהלך (דה)דחיסה, הדפיסו אחוז גס של
שלמות וזמן הגעה משוער (רק אם סטיית התקן מחוברת ל
מסוף); לאחר עיבוד כל קובץ, הדפס הודעה המציגה את יחס הדחיסה,
חיסכון במקום, זמן דחיסה כולל (זמן קיר) ומהירות (דה)דחיסה ממוצעת
(בייטים של נתונים רגילים המעובדים בשנייה).
-S הדפס סטטיסטיקות משתני תנאי לשגיאת תקן עבור כל שגיאה שהושלמה
פעולת (דה)קומפרסיה. שימושי ביצירת פרופילים.
-q, --שֶׁקֶט, --חזרתי-מהיר, --חוזר על עצמו-הטוב ביותר, --אקספוננציאלי
מקובל לצורך תאימות עם bzip2, אחרת מתעלמים.
-h, - עזרה
הדפס עזרה בנוגע לשימוש בשורת הפקודה בפלט סטנדרטי וסגור בהצלחה.
-L, --רישיון, -V, --גִרְסָה
הדפס מידע על רישיון וגרסה בפלט הסטנדרטי וסגור בהצלחה.
הסביבה
LBZIP2, Bzipxnumx, bzip
לפני ניתוח שורת הפקודה, lbzip2 מוסיף את תוכן המשתנים הללו, ב-
הסדר שצוין, בין שם ההפעלה לשאר שורת הפקודה.
אסימונים מופרדים באמצעות רווחים וטאבים, שלא ניתן להשתמש בהם כבידה באמצעות תווי Escape.
אופרנדים
קובץ ציין קבצים לדחיסה או פירוק דחיסה.
קובץעם . Bz2, .tbz, .tbz2 ו .tz2 סיומות שם ידלגו כאשר
דחיסה. בעת פירוק דחיסה, . Bz2 סיומות יוסרו בשמות קבצי הפלט;
.tbz, .tbz2 ו .tz2 סיומות יוחלפו על ידי .זֶפֶתשמות קבצים אחרים יהיו
סיומת עם .הַחוּצָה. אם INT or מונח האות מועבר אל lbzip2, ואז זה
מסיר את קובץ הפלט הרגיל הפתוח כעת לפני היציאה.
אם לא ניתן FILE, lbzip2 פועל כמסנן, ומעבד קלט סטנדרטי כדי
פלט סטנדרטי. במקרה זה, lbzip2 יסרב לכתוב פלט דחוס אל
מסוף (או קריאת קלט דחוס מהטרמינל), מכיוון שזה יהיה לחלוטין
בלתי מובן ולכן חסר טעם.
יְצִיאָה סטָטוּס
0 if lbzip2 מסתיים בהצלחה. זה מניח שבכל פעם שהוא מנסה, lbzip2 לעולם לא
נכשל בכתיבה לשגיאת תקן.
1 if lbzip2 נתקל בשגיאה חמורה.
4 if lbzip2 מנפיק אזהרות מבלי להיתקל בשגיאה חמורה. זה מניח ש
בכל פעם שזה מנסה, lbzip2 אף פעם לא מצליח לכתוב עד לשגיאת התקן.
SIGPIPE, SIGXFSZ
if lbzip2 מתכוון לצאת עם סטטוס 1 עקב כל שגיאה חמורה, אך כל אות כזה
עם תורשת SIG_DFL פעולה נוצרה עבור lbzip2 בעבר, אז lbzip2
מסתיים באמצעות אחד מהאותות האמורים, לאחר ניקוי כל פלט שהופסק
קובץ.
SIGABRT
אם קביעת זמן ריצה נכשלת (למשל lbzip2 מזהה באג בפני עצמו). אני מקווה
מי שמילא את הקובץ הבינארי שלך לא היה מספיק נועז כדי #define NDEBUG.
סיגינט, טווח יעד
lbzip2 לוכד את האותות הללו כדי שיוכל להסיר קובץ פלט שהופרע.
מקרים כאלה, lbzip2 יוצא על ידי העלאה מחדש של (אחד מ) האות/ים שהתקבלו.
BLOCK גודל
lbzip2 דוחס קבצים גדולים בבלוקים. הוא יכול לפעול בגדלים שונים של בלוקים, החל
מ-100 אלף ל-900 אלף בצעדים של 100 אלף, והוא מקצה רק את כמות הזיכרון הדרושה לו. ה-
גודל הבלוק משפיע הן על יחס הדחיסה המושג והן על כמות הזיכרון הנדרשת
גם לדחיסה וגם לדה-קומפרסיה. מהירות הדחיסה והדה-קומפרסיה היא כמעט
לא מושפע מגודל הבלוק, בתנאי שהקובץ המעובד גדול מספיק כדי להיות
פיצול בין כל שרשורי העובדים.
הדגלים -1 דרך -9 ציין את גודל הבלוק ל-100,000 בתים עד 900,000 בתים
(ברירת המחדל) בהתאמה. בזמן הדחיסה, גודל הבלוק המשמש לדחיסה הוא
קריאה מהקובץ הדחוס -- הדגלים -1 ל -9 אינם רלוונטיים ולכן מתעלמים מהם
במהלך דקומפרסיה.
גדלי בלוקים גדולים יותר נותנים תשואות שוליות הפוחתות במהירות; רוב הדחיסה
מגיע מהמאתיים או שלוש מאות קילו הראשונים של גודל הבלוק, עובדה שכדאי לזכור
בעת שימוש lbzip2 על מכונות קטנות. חשוב גם להעריך כי
דרישת זיכרון פירוק הדחיסה נקבעת בזמן הדחיסה על ידי בחירת גודל הבלוק.
באופן כללי, עליך לנסות ולהשתמש במגבלות הזיכרון הגדולות ביותר שמאפשרות גודל הבלוקים הגדול ביותר.
נקודה חשובה נוספת חלה על קבצים קטנים. בתכנון, רק אחד מהם lbzip2העובד של
הליכים יכולים לעבוד על בלוק בודד. משמעות הדבר היא שאם מספר הבלוקים ב-
קובץ דחוס קטן ממספר המעבדים המחוברים, ואז חלק מה-worker threads
יישאר במצב סרק למשך כל הזמן. דחיסת קבצים קטנים עם גדלי בלוקים קטנים יותר עלולה
לכן מגדילים משמעותית הן את מהירות הדחיסה והן את מהירות הדה-קומפרסיה. המהירות
ההבדל מורגש יותר ככל שמספר ליבות המעבד גדל.
ERROR מטפל
התמודדות עם תנאי שגיאה היא ההיבט הכי פחות מספק של lbzip2המדיניות היא
לנסות ולהשאיר את מערכת הקבצים במצב עקבי, ואז לסגור, גם אם זה אומר שלא
עיבוד חלק מהקבצים המוזכרים בשורת הפקודה.
``מצב עקבי'' פירושו שקובץ קיים במצב דחוס או לא דחוס
טופס, אבל לא שניהם. זה מסתכם בכלל `מחק את קובץ הפלט אם יש שגיאה
מתרחש מצב, ומשאיר את הקלט שלם'. קבצי קלט נמחקים רק כאשר אנו יכולים להיות
די בטוח שקובץ הפלט נכתב ונסגר בהצלחה.
מַשׁאָב הַקצָאָה
lbzip2 זקוק לסוגים שונים של משאבי מערכת כדי לפעול. אלה כוללים זיכרון, הליכים,
מוטקסים ומשתני תנאי. המדיניות היא פשוט לוותר אם הקצאת משאבים
מתרחשת כישלון.
צריכת משאבים גדלה באופן ליניארי עם מספר הליכי העבודה. אם lbzip2 נכשל בגלל
עקב חוסר במשאבים מסוימים, צמצום מספר הליכי העבודה עשוי לעזור. זה יהיה
אפשרי עבור lbzip2 כדי לנסות להפחית את מספר הליכי העבודה (ומכאן את המשאב
צריכה), או לעבור לקבצים הבאים בתקווה שחלקם עשויים להזדקק לפחות
משאבים, אבל הסיבוכים הכרוכים בכך נראים טרחה גדולה יותר משהם שווים.
פגום קבצים
lbzip2 מנסה לדחוס נתונים על ידי ביצוע מספר טרנספורמציות לא טריוויאליות עליהם.
כל דחיסה של קובץ מרמזת על הנחה שהקובץ הדחוס יכול להיות
דחיסה מופחתת כדי לשחזר את המקור. הושקעו מאמצים רבים בעיצוב, קידוד ובדיקות
נעשו כדי להבטיח שתוכנית זו תפעל כראוי. עם זאת, מורכבותה של
אלגוריתמים, ובפרט, נוכחותם של מקרים מיוחדים שונים בקוד אשר
מתרחשים בהסתברות נמוכה מאוד אך לא אפסית ומקשים מאוד לשלול את
אפשרות של באגים שיישארו בתוכנית. אין זה אומר שהתוכנית הזו
מטבעו בלתי אמין. אכן, אני מקווה מאוד שההפך הוא הנכון -- lbzip2 כבר
נבנה בקפידה ונבדק בהרחבה.
כבדיקה עצמית להגנה שלך, lbzip2 משתמש ב-CRC של 32 סיביות כדי לוודא שה
גרסה מפורקת של קובץ זהה למקור. זה שומר מפני
השחתת הנתונים הדחוסים, ונגד באגים שלא התגלו ב lbzip2 (בתקווה
לא סביר). הסיכוי ששחתת נתונים לא תתגלה הוא מיקרוסקופי, בערך אחד
סיכוי של ארבעה מיליארד עבור כל קובץ שעובד. עם זאת, שים לב שהבדיקה מתרחשת
לאחר דקומפרסיה, כך שזה יכול רק לומר לך שמשהו לא בסדר.
CRCs יכולים רק לזהות קבצים פגומים, הם לא יכולים לעזור לך לשחזר את המקור,
נתונים לא דחוסים. עם זאת, בגלל אופי הבלוקים של אלגוריתם הדחיסה, זה
ייתכן שניתן יהיה לשחזר חלקים מהקובץ הפגום, גם אם חלק מהבלוקים אינם
נהרס.
השתמש ב-lbzcat באינטרנט באמצעות שירותי onworks.net