OnWorks Linux ו-Windows Online WorkStations

לוגו

אירוח מקוון בחינם עבור תחנות עבודה

<הקודם | תוכן | הבא>

זפת

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


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

זפת מצב[אפשרויות] שם נתיב...

איפה מצב הוא אחד ממצבי ההפעלה הבאים (רק רשימה חלקית מוצגת כאן; ראה את זפת דף אדם לרשימה מלאה):


טבלה 18-2: מצבי זפת


תיאור מצב

תיאור מצב

ג צור ארכיון מרשימת קבצים ו/או ספריות.


תמונה

x חלץ ארכיון.


תמונה

r הוסף שמות נתיבים שצוינו לסוף ארכיון.


תמונה

• רשום את התוכן של ארכיון.


תמונה


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



[me@linuxbox ~]$ mkdir -p playground/dir-{001..100}

[me@linuxbox ~]$ גע ב-playground/dir-{001..100}/file-{A..Z}

[me@linuxbox ~]$ mkdir -p playground/dir-{001..100}

[me@linuxbox ~]$ גע ב-playground/dir-{001..100}/file-{A..Z}


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



[me@linuxbox ~]$ tar cf playground.tar playground

[me@linuxbox ~]$ tar cf playground.tar playground


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

כדי לרשום את תוכן הארכיון, נוכל לעשות זאת:


[me@linuxbox ~]$ tar tf playground.tar

[me@linuxbox ~]$ tar tf playground.tar


לרישום מפורט יותר, נוכל להוסיף את v אפשרות (מילה במילה):


[me@linuxbox ~]$ tar tvf playground.tar

[me@linuxbox ~]$ tar tvf playground.tar


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


[me@linuxbox ~]$ mkdir foo

[me@linuxbox ~]$ CD foo

[me@linuxbox foo]$ tar xf ../playground.tar

[me@linuxbox foo]$ ls

גן שעשועים

[me@linuxbox ~]$ mkdir foo

[me@linuxbox ~]$ CD foo

[me@linuxbox foo]$ tar xf ../playground.tar

[me@linuxbox foo]$ ls

גן שעשועים


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

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



[me@linuxbox foo]$ cd

[me@linuxbox ~]$ tar cf playground2.tar ~/playground

[me@linuxbox foo]$ cd

[me@linuxbox ~]$ tar cf playground2.tar ~/playground


זכור, ~/מגרש משחקים יתרחב לתוך /home/me/מגרש משחקים כאשר נלחץ על מקש Enter, כך נקבל שם נתיב מוחלט להדגמה שלנו. לאחר מכן, נחלץ את הארכיון כמו קודם ונראה מה קורה:



[me@linuxbox ~]$ CD foo

[me@linuxbox foo]$ tar xf ../playground2.tar

[me@linuxbox foo]$ ls

מגרש משחקים ביתי [me@linuxbox foo]$ זה בבית

[me@linuxbox ~]$ CD foo

[me@linuxbox foo]$ tar xf ../playground2.tar

[me@linuxbox foo]$ ls

מגרש משחקים ביתי [me@linuxbox foo]$ זה בבית


me

[me@linuxbox foo]$ זה הבית/אני

גן שעשועים

me

[me@linuxbox foo]$ זה הבית/אני

גן שעשועים


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

הבה נשקול דוגמה היפותטית, אך מעשית, של זפת בִּפְעוּלָה. תארו לעצמכם שאנחנו רוצים להעתיק את הספרייה הביתית ותכולתה ממערכת אחת לאחרת ויש לנו כונן קשיח USB גדול שנוכל להשתמש בו לצורך ההעברה. במערכת הלינוקס המודרנית שלנו, הכונן מותקן באופן "אוטומטי" ב- /חֲצִי מַדרִיך. בואו נדמיין גם שלדיסק יש שם נפח של BigDisk כאשר אנו מצמידים אותו. כדי להפוך את ארכיון הזפת, נוכל לעשות את הפעולות הבאות:



[me@linuxbox ~]$ sudo tar cf /media/BigDisk/home.tar /home

[me@linuxbox ~]$ sudo tar cf /media/BigDisk/home.tar /home


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


[me@linuxbox2 ~]$ cd /

[me@linuxbox2 /]$ sudo tar xf /media/BigDisk/home.tar

[me@linuxbox2 ~]$ cd /

[me@linuxbox2 /]$ sudo tar xf /media/BigDisk/home.tar


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

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



tar xf שם נתיב archive.tar

tar xf שם נתיב archive.tar


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


שם הנתיב הפעיל כפי שמאוחסן בארכיון. בעת ציון שמות נתיבים, תווים כלליים אינם נתמכים בדרך כלל; עם זאת, גרסת GNU של זפת (שהיא הגרסה שנמצאת לרוב בהפצות לינוקס) תומכת בהן עם --תווים כלליים לחיפוש אוֹפְּצִיָה. הנה דוגמה באמצעות הקודמת שלנו מגרש משחקים.טאר קובץ:


[me@linuxbox ~]$ CD foo

[me@linuxbox foo]$ tar xf ../playground2.tar --wildcards 'home/me/pla yground/dir-*/file-A'

[me@linuxbox ~]$ CD foo

[me@linuxbox foo]$ tar xf ../playground2.tar --wildcards 'home/me/pla yground/dir-*/file-A'


פקודה זו תחלץ רק קבצים התואמים לשם הנתיב שצוין כולל התו הכללי דיר-*.

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


[me@linuxbox ~]$ מצא מגרש משחקים -שם 'קובץ-A' -exec tar rf playground.tar '{}' '+'

[me@linuxbox ~]$ מצא מגרש משחקים -שם 'קובץ-A' -exec tar rf playground.tar '{}' '+'


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

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

tar יכולה גם לעשות שימוש הן בקלט והן בפלט סטנדרטיים. הנה דוגמה מקיפה:



[me@linuxbox foo]$ cd

[me@linuxbox ~]$ מצא מגרש משחקים -שם 'קובץ-A' | tar cf - --files- from=- | gzip > playground.tgz

[me@linuxbox foo]$ cd

[me@linuxbox ~]$ מצא מגרש משחקים -שם 'קובץ-A' | tar cf - --files- from=- | gzip > playground.tgz


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


מאשר שורת הפקודה. לבסוף, הארכיון שהופק על ידי זפת מוכנס לתוך מופעלת דחיסת כדי ליצור את הארכיון הדחוס playground.tgz. ה . Tgz סיומת היא הסיומת הקונבנציונלית הניתנת לקובצי tar דחוסים של gzip. ההרחבה .tar.gz משמש גם לפעמים.

בזמן שהשתמשנו ב- מופעלת דחיסת תוכנית חיצונית לייצר את הארכיון הדחוס שלנו, גרסאות מודרניות של GNU זפת תומך הן בדחיסת gzip והן ב-bzip2 ישירות עם השימוש ב- z ו j אפשרויות, בהתאמה. בעזרת הדוגמה הקודמת שלנו כבסיס, נוכל לפשט אותה כך:



[me@linuxbox ~]$ מצא מגרש משחקים -שם 'קובץ-A' | tar czf playground.tgz -T -

[me@linuxbox ~]$ מצא מגרש משחקים -שם 'קובץ-A' | tar czf playground.tgz -T -


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



[me@linuxbox ~]$ מצא מגרש משחקים -שם 'קובץ-A' | tar cjf playground.tbz -T -

[me@linuxbox ~]$ מצא מגרש משחקים -שם 'קובץ-A' | tar cjf playground.tbz -T -


פשוט על ידי שינוי אפשרות הדחיסה מ z ל j (ושינוי הסיומת של קובץ הפלט ל .tbz כדי לציין קובץ דחוס של bzip2) הפעלנו את דחיסת bzip2.

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



[me@linuxbox ~]$ דברים מרחוק של mkdir

[me@linuxbox ~]$ דברים של שלט תקליטורים

[me@linuxbox מרחוק-דברים]$ ssh remote-sys 'tar cf - מסמכים' | tar xf -

הסיסמה של me@remote-sys: [me@linuxbox remote-stuff]$ ls דוחות

[me@linuxbox ~]$ דברים מרחוק של mkdir

[me@linuxbox ~]$ דברים של שלט תקליטורים

[me@linuxbox מרחוק-דברים]$ ssh remote-sys 'tar cf - מסמכים' | tar xf -

הסיסמה של me@remote-sys: [me@linuxbox remote-stuff]$ ls דוחות


כאן הצלחנו להעתיק ספרייה בשם דוחות מהמערכת המרוחקת re- mote-sys לספרייה בתוך הספרייה ששמה דברים מרחוק על המערכת המקומית. איך עשינו את זה? ראשית, השקנו את זפת תוכנית במערכת המרוחקת באמצעות ssh. אתה תזכור את זה ssh מאפשרת לנו להפעיל תוכנית מרחוק במחשב ברשת ו"לראות" את התוצאות במערכת המקומית-התוצר הפלט הסטנדרטי


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


מחשוב ענן מערכת ההפעלה המוביל ב-OnWorks: