Π‘ΡΠΊΠΎΠ½ΠΎΠΌΡŒΡ‚Π΅ 15% Π½Π° всСх хостинговых услугах

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ свои Π½Π°Π²Ρ‹ΠΊΠΈ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ скидку Π½Π° любой Ρ‚Π°Ρ€ΠΈΡ„Π½Ρ‹ΠΉ ΠΏΠ»Π°Π½

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠ΄: Skills ΠΠ°Ρ‡Π°Ρ‚ΡŒ
Π ΡƒΠ±Ρ€ΠΈΠΊΠΈ
Linux Администрация

Как ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ .tar.gz с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки Linux

Π€Π°ΠΉΠ» .tar.gz β€” это сТатый Π°Ρ€Ρ…ΠΈΠ², созданный ΠΏΡƒΡ‚Ρ‘ΠΌ объСдинСния Π΄Π²ΡƒΡ… ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ: tar (Tape Archive), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ нСсколько Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² Π² ΠΎΠ΄ΠΈΠ½ Π°Ρ€Ρ…ΠΈΠ², ΠΈ gzip, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сТимаСт этот Π°Ρ€Ρ…ΠΈΠ² для ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ получаСтся ΠΏΠΎΡ€Ρ‚Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ, ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΏΠ°ΠΊΠ΅Ρ‚Π°, ΡΠ²Π»ΡΡŽΡ‰ΠΈΠΉΡΡ Π΄Π΅-Ρ„Π°ΠΊΡ‚ΠΎ стандартом для распространСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, Π½Π°Π±ΠΎΡ€ΠΎΠ² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ ΠΈ систСмных Ρ€Π΅Π·Π΅Ρ€Π²Π½Ρ‹Ρ… ΠΊΠΎΠΏΠΈΠΉ практичСски Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ срСдС Linux ΠΈ Unix-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… систСм.

Бтандартная ΠΊΠΎΠΌΠ°Π½Π΄Π° для извлСчСния Π°Ρ€Ρ…ΠΈΠ²Π° .tar.gz β€” `tar -xzvf archive-name.tar.gz`. ПониманиС Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ„Π»Π°Π³ ΠΈ ΠΊΠΎΠ³Π΄Π° ΠΎΡ‚ΠΊΠ»ΠΎΠ½ΡΡ‚ΡŒΡΡ ΠΎΡ‚ этого значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΎΡ‚Π»ΠΈΡ‡Π°Π΅Ρ‚ ΠΊΠΎΠΌΠΏΠ΅Ρ‚Π΅Π½Ρ‚Π½ΠΎΠ³ΠΎ систСмного администратора ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΡ‚ΠΎ слСпо ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈΠ· ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π°.

ПониманиС Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° .tar.gz

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠ°ΠΊΡƒΡŽ-Π»ΠΈΠ±ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ, с Ρ‡Π΅ΠΌ ΠΈΠΌΠ΅Π½Π½ΠΎ Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅. Π€ΠΎΡ€ΠΌΠ°Ρ‚ `.tar.gz` (Ρ‚Π°ΠΊΠΆΠ΅ записываСмый ΠΊΠ°ΠΊ `.tgz`) прСдставляСт собой двухэтапный процСсс:

  1. `tar` собираСт Ρ„Π°ΠΉΠ»Ρ‹, сохраняСт структуру ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ², ΠΏΡ€Π°Π²Π° доступа, Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π° ΠΈ символичСскиС ссылки Π² Π΅Π΄ΠΈΠ½Ρ‹ΠΉ плоский Ρ„Π°ΠΉΠ».
  2. `gzip` сТимаСт этот плоский Ρ„Π°ΠΉΠ» с использованиСм Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° DEFLATE, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ достигая ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° 60–70% для тСкстового содСрТимого.

ИмСнно ΠΈΠ·-Π·Π° этой двухэтапной Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ ΠΎΠ±Π° Ρ„Π»Π°Π³Π°: `-z` (gzip) ΠΈ `-x` (ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅). Ни ΠΎΠ΄ΠΈΠ½ ΠΈΠ· инструмСнтов Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π½Π΅ справляСтся со всСй Π·Π°Π΄Π°Ρ‡Π΅ΠΉ. Π’ соврСмСнных систСмах Linux `tar` достаточно ΡƒΠΌΡ‘Π½, Ρ‡Ρ‚ΠΎΠ±Ρ‹ автоматичСски ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Ρ‚ΠΈΠΏ сТатия Ρ‡Π΅Ρ€Π΅Π· `–auto-compress` ΠΈΠ»ΠΈ просто считывая магичСскиС Π±Π°ΠΉΡ‚Ρ‹ Ρ„Π°ΠΉΠ»Π°, ΠΎΠ΄Π½Π°ΠΊΠΎ явноС ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ Ρ„Π»Π°Π³ΠΎΠ² всСгда являСтся Π±ΠΎΠ»Π΅Π΅ бСзопасной ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠΉ Π² скриптах ΠΈ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π°Ρ… Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ.

Основной синтаксис ΠΈ справочник ΠΏΠΎ Ρ„Π»Π°Π³Π°ΠΌ

β€œ`bash

tar -xzvf archive-name.tar.gz

β€œ`

ЀлагПолная формаЀункция
`-x``–extract`Π˜Π·Π²Π»Π΅Ρ‡ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ· Π°Ρ€Ρ…ΠΈΠ²Π°
`-z``–gzip`ΠŸΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π°Ρ€Ρ…ΠΈΠ² Ρ‡Π΅Ρ€Π΅Π· Π΄Π΅ΠΊΠΎΠΌΠΏΡ€Π΅ΡΡΠΈΡŽ gzip
`-v``–verbose`Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ имя ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ Π΅Π³ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ
`-f``–file=ARCHIVE`Π£ΠΊΠ°Π·Π°Ρ‚ΡŒ имя Ρ„Π°ΠΉΠ»Π° Π°Ρ€Ρ…ΠΈΠ²Π° (Π΄ΠΎΠ»ΠΆΠ΅Π½ нСпосрСдствСнно ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π°)
`-C``–directory=DIR`Π˜Π·Π²Π»Π΅Ρ‡ΡŒ Π² ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³
`-t``–list`ВывСсти содСрТимоС Π°Ρ€Ρ…ΠΈΠ²Π° Π±Π΅Π· извлСчСния
`-p``–preserve-permissions`Π’ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ исходныС ΠΏΡ€Π°Π²Π° доступа ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ Π² точности
`–strip-components=N`β€”Π£Π΄Π°Π»ΠΈΡ‚ΡŒ N Π²Π΅Π΄ΡƒΡ‰ΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΏΡƒΡ‚ΠΈ ΠΈΠ· ΠΈΠΌΡ‘Π½ Ρ„Π°ΠΉΠ»ΠΎΠ²

ВаТная Π΄Π΅Ρ‚Π°Π»ΡŒ: Π€Π»Π°Π³ `-f` всСгда Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ послСдним Ρ„Π»Π°Π³ΠΎΠΌ ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ Ρ„Π°ΠΉΠ»Π°. НаписаниС `tar -xvzf` ΠΈ `tar -xzvf` ΠΎΠ±Π° допустимы, Π½ΠΎ `tar -fxzv archive.tar.gz` Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ ошибкой, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ `-f` ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡƒΡ‚ΡŒ ΠΊ Π°Ρ€Ρ…ΠΈΠ²Ρƒ.

ПошаговоС руководство ΠΏΠΎ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΡŽ

1. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»

Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½Ρ‹Ρ… дистрибутивов Linux Π½Π°ΠΆΠΌΠΈΡ‚Π΅ `Ctrl + Alt + T`. На сСрвСрС Π±Π΅Π· графичСского интСрфСйса, доступном Ρ‡Π΅Ρ€Π΅Π· SSH, Π²Ρ‹ ΡƒΠΆΠ΅ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ΡΡŒ Π² сСансС Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°.

2. НайдитС ваш Π°Ρ€Ρ…ΠΈΠ²

β€œ`bash

ls -lh /path/to/directory

β€œ`

Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Ρ„Π°ΠΉΠ» сущСствуСт, ΠΈ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€. Π€Π»Π°Π³ `-h` ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ Π² ΡƒΠ΄ΠΎΠ±ΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ (KB, MB, GB).

3. Π˜Π·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π½Π° мСстС

ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, содСрТащий Π°Ρ€Ρ…ΠΈΠ², Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅:

β€œ`bash

cd /path/to/directory

tar -xzvf archive-name.tar.gz

β€œ`

Π˜Π·Π²Π»Π΅Ρ‡Ρ‘Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ появятся Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°, ΠΎΡ‚Ρ€Π°ΠΆΠ°ΡŽΡ‰Π΅Π³ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΡŽΡŽ структуру Π°Ρ€Ρ…ΠΈΠ²Π°.

4. Π˜Π·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π² ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„Π»Π°Π³ `-C` для пСрСнаправлСния Π²Ρ‹Π²ΠΎΠ΄Π° Π² любой Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΠΏΡƒΡ‚ΡŒ. Если Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Π½Π΅ сущСствуСт, сначала создайтС Π΅Π³ΠΎ:

β€œ`bash

mkdir -p /opt/myapp

tar -xzvf archive-name.tar.gz -C /opt/myapp

β€œ`

Π€Π»Π°Π³ `-p` для `mkdir` ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ошибки, Ссли ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ΡƒΠΆΠ΅ сущСствуСт β€” Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡ΠΊΠ° ΠΏΡ€ΠΈ написании скриптов.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ β€” Ρ€Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ Π°Ρ€Ρ…ΠΈΠ²Π° Π²Π΅Π±-прилоТСния:

β€œ`bash

mkdir -p ~/deployments/webapp-v2

tar -xzvf webapp-v2.tar.gz -C ~/deployments/webapp-v2

β€œ`

5. Π˜Π·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π±Π΅Π· ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ³ΠΎ Π²Ρ‹Π²ΠΎΠ΄Π°

Π’ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… скриптах, заданиях cron ΠΈΠ»ΠΈ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π°Ρ… CI/CD ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄ создаёт лишний ΡˆΡƒΠΌ Π² ΠΆΡƒΡ€Π½Π°Π»Π°Ρ…. Π£Π±Π΅Ρ€ΠΈΡ‚Π΅ Ρ„Π»Π°Π³ `-v`:

β€œ`bash

tar -xzf archive-name.tar.gz -C /opt/myapp

β€œ`

Π­Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ„ΠΎΡ€ΠΌΠ° Π² производствСнной Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ ΠΏΠΎΠ»Π΅Π·Π΅Π½ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ.

ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ содСрТимого Π°Ρ€Ρ…ΠΈΠ²Π° Π±Π΅Π· извлСчСния

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ Π½Π΅Π·Π½Π°ΠΊΠΎΠΌΡ‹ΠΉ Π°Ρ€Ρ…ΠΈΠ² β€” особСнно Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹ΠΉ ΠΈΠ· внСшнСго источника β€” всСгда сначала провСряйтС Π΅Π³ΠΎ содСрТимоС. НСкоторыС Π°Ρ€Ρ…ΠΈΠ²Ρ‹ содСрТат Ρ„Π°ΠΉΠ»Ρ‹ с Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹ΠΌΠΈ путями ΠΈΠ»ΠΈ Π±Π΅Π· ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎ Ρ€Π°Π·Π±Ρ€ΠΎΡΠ°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΠΎ всСй Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС.

β€œ`bash

tar -tzvf archive-name.tar.gz

β€œ`

Если Π² Π²Ρ‹Π²ΠΎΠ΄Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ ΠΏΡƒΡ‚ΠΈ, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ΡΡ с `/` ΠΈΠ»ΠΈ `..`, ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΠΉΡ‚Π΅ с ΠΎΡΡ‚ΠΎΡ€ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ `–strip-components` для Π½ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡƒΡ‚Π΅ΠΉ.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΠ±Ρ‘Ρ€Ρ‚ΠΊΠΈ Π² Π²ΠΈΠ΄Π΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня:

β€œ`bash

tar -tzf archive-name.tar.gz | head -20

β€œ`

Если всС ΠΏΡƒΡ‚ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ±Ρ‰ΠΈΠΉ прСфикс (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, `myapp-1.0/`), ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ чистым. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС создайтС ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ΠΈ ΠΈΠ·Π²Π»Π΅ΠΊΠΈΡ‚Π΅ Π² Π½Π΅Π³ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ `-C`.

Π Π°Π±ΠΎΡ‚Π° с ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΏΡƒΡ‚ΠΈ

Распространённый Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ сцСнарий: Π²Ρ‹ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚Π΅ исходный Ρ‚Π°Ρ€Π±ΠΎΠ» с GitHub, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ всё ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½ΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ `project-main/`, Π½ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ содСрТимоС Π½Π°Ρ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ нСпосрСдствСнно Π² `/opt/project/` Π±Π΅Π· этого Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ уровня влоТСнности.

β€œ`bash

tar -xzvf project-main.tar.gz -C /opt/project –strip-components=1

β€œ`

`–strip-components=1` удаляСт ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ сСгмСнт ΠΏΡƒΡ‚ΠΈ ΠΈΠ· ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅ΠΌΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°, фактичСски «разворачивая» ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня. Π­Ρ‚ΠΎ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² скриптах развёртывания ΠΈ Dockerfile.

Π˜Π·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° ΠΈΠ»ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° ΠΈΠ· Π°Ρ€Ρ…ΠΈΠ²Π°

НС всСгда Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ всё содСрТимоС. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ»:

β€œ`bash

tar -xzvf archive-name.tar.gz path/to/specific-file.conf

β€œ`

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ со всСм Π΅Π³ΠΎ содСрТимым:

β€œ`bash

tar -xzvf archive-name.tar.gz path/to/specific-directory/

β€œ`

ΠŸΡƒΡ‚ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ‚ΠΎΡ‡Π½ΠΎ ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ `tar -tzf`. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π΅Π·Π°ΠΌΠ΅Π½ΠΈΠΌ ΠΏΡ€ΠΈ восстановлСнии ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΈΠ· большого Π°Ρ€Ρ…ΠΈΠ²Π° Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ Π±Π΅Π· распаковки Π³ΠΈΠ³Π°Π±Π°ΠΉΡ‚ Π΄Π°Π½Π½Ρ‹Ρ….

Π˜Π·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² .tar Π±Π΅Π· сТатия gzip

ΠžΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» `.tar` Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ слоя сТатия. ΠŸΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡƒΠ±Π΅Ρ€ΠΈΡ‚Π΅ Ρ„Π»Π°Π³ `-z`:

β€œ`bash

tar -xvf archive-name.tar

β€œ`

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅: .tar.gz ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ распространённыС Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ Π°Ρ€Ρ…ΠΈΠ²ΠΎΠ²

Π€ΠΎΡ€ΠΌΠ°Ρ‚Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΠ»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΡΠΆΠ°Ρ‚ΠΈΡΠ‘Ρ‚Π΅ΠΏΠ΅Π½ΡŒ ΡΠΆΠ°Ρ‚ΠΈΡΠ‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΠ’Ρ€Π΅Π±ΡƒΠ΅Ρ‚ΡΡ Tar
Gzip Ρ‚Π°Ρ€Π±ΠΎΠ»`.tar.gz` / `.tgz`DEFLATE (gzip)УмСрСннаяБыстраяДа
Bzip2 Ρ‚Π°Ρ€Π±ΠΎΠ»`.tar.bz2`Burrows-Wheeler (bzip2)Π’Ρ‹ΡΠΎΠΊΠ°ΡΠœΠ΅Π΄Π»Π΅Π½Π½Π°ΡΠ”Π°
XZ Ρ‚Π°Ρ€Π±ΠΎΠ»`.tar.xz`LZMA2 (xz)ΠžΡ‡Π΅Π½ΡŒ Π²Ρ‹ΡΠΎΠΊΠ°ΡΠžΡ‡Π΅Π½ΡŒ мСдлСннаяДа
Zstandard Ρ‚Π°Ρ€Π±ΠΎΠ»`.tar.zst`ZstandardΠ’Ρ‹ΡΠΎΠΊΠ°ΡΠžΡ‡Π΅Π½ΡŒ быстраяДа
ZIP Π°Ρ€Ρ…ΠΈΠ²`.zip`DEFLATEУмСрСннаяБыстраяНСт
ΠžΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ tar`.tar`НСтНСтБамая быстраяДа

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ наблюдСниС: `.tar.xz` Π² настоящСС врСмя являСтся ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠΌ для ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² дистрибутивов Linux (исходный ΠΊΠΎΠ΄ ядра, исходныС Ρ‚Π°Ρ€Π±ΠΎΠ»Ρ‹ RPM/DEB) благодаря прСвосходной стСпСни сТатия. Однако `.tar.gz` остаётся Π΄ΠΎΠΌΠΈΠ½ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌ для ΠΎΠ±Ρ‰Π΅Π³ΠΎ распространСния благодаря ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ инструмСнтария ΠΈ скорости извлСчСния. `.tar.zst` (Zstandard) Π½Π°Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ Π² соврСмСнных дистрибутивах, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Arch Linux, благодаря ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ балансу ΠΌΠ΅ΠΆΠ΄Ρƒ ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒΡŽ сТатия ΠΈ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ.

Для извлСчСния этих Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² Π·Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ `-z` ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ Ρ„Π»Π°Π³ΠΎΠΌ:

β€œ`bash

tar -xjvf archive.tar.bz2 # bzip2

tar -xJvf archive.tar.xz # xz/lzma

tar -x –zstd -vf archive.tar.zst # zstandard (GNU tar 1.31+)

β€œ`

Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€Π°Π² доступа ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ ΠΈ Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π°

ΠŸΡ€ΠΈ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠΈ Π°Ρ€Ρ…ΠΈΠ²ΠΎΠ², содСрТащих систСмныС Ρ„Π°ΠΉΠ»Ρ‹, скрипты ΠΈΠ»ΠΈ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, сохранСниС ΠΏΡ€Π°Π² доступа ΠΈΠΌΠ΅Π΅Ρ‚ Π²Π°ΠΆΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅:

β€œ`bash

tar -xzvpf archive-name.tar.gz

β€œ`

Π€Π»Π°Π³ `-p` ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ tar Π²ΠΎΡΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ исходныС ΠΏΡ€Π°Π²Π° доступа. Π‘Π΅Π· Π½Π΅Π³ΠΎ примСняСтся umask Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ Π½Π°Ρ€ΡƒΡˆΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ исполняСмых скриптов ΠΈΠ»ΠΈ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² с setuid.

Для сохранСния Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π° (Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ ΠΏΡ€Π°Π²Π° root):

β€œ`bash

sudo tar -xzvpf archive-name.tar.gz –same-owner

β€œ`

Π­Ρ‚ΠΎ критичСски Π²Π°ΠΆΠ½ΠΎ ΠΏΡ€ΠΈ восстановлСнии систСмных Ρ€Π΅Π·Π΅Ρ€Π²Π½Ρ‹Ρ… ΠΊΠΎΠΏΠΈΠΉ ΠΈΠ»ΠΈ Ρ€Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ зависят ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ/Π³Ρ€ΡƒΠΏΠΏΡ‹ для обСспСчСния Π³Ρ€Π°Π½ΠΈΡ† бСзопасности.

РаспространённыС ошибки ΠΈ способы ΠΈΡ… устранСния

`tar: Error is not recoverable: exiting now`

Архив ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Ρ‘Π½ ΠΈΠ»ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π±Ρ‹Π»Π° Π½Π΅ΠΏΠΎΠ»Π½ΠΎΠΉ. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Ρ„Π°ΠΉΠ»Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ `md5sum` ΠΈΠ»ΠΈ `sha256sum` ΠΏΠΎ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммС, Π·Π°Ρ‚Π΅ΠΌ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ.

`tar: Skipping to next header` / `tar: Archive contains obsolescent base-64 headers`

ЧастичноС ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π°Ρ€Ρ…ΠΈΠ²Π°. МоТно ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ частичноС ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ `–ignore-zeros`, Π½ΠΎ слСдуСт ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Π½Π΅ΠΏΠΎΠ»Π½Ρ‹ΠΌ.

`gzip: stdin: not in gzip format`

Π€Π°ΠΉΠ» ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ `.tar.gz`, Π½ΠΎ фактичСски Π½Π΅ сТат с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ gzip. ЗапуститС `file archive-name.tar.gz` для опрСдСлСния Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ `.tar`, Ρ„Π°ΠΉΠ» `.zip` ΠΈΠ»ΠΈ `.bz2` с Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ.

`Cannot open: No such file or directory`

Π›ΠΈΠ±ΠΎ ΠΏΡƒΡ‚ΡŒ Π½Π΅Π²Π΅Ρ€Π΅Π½, Π»ΠΈΠ±ΠΎ имя Ρ„Π°ΠΉΠ»Π° содСрТит ΠΏΡ€ΠΎΠ±Π΅Π». Π—Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ имя Ρ„Π°ΠΉΠ»Π° Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ: `tar -xzvf "my archive.tar.gz"`.

ΠžΡ‚ΠΊΠ°Π· Π² доступС ΠΏΡ€ΠΈ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠΈ

Π£ вас Π½Π΅Ρ‚ ΠΏΡ€Π°Π² Π½Π° запись Π² Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ `sudo` ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ `-C` Π½Π° ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π²Ρ‹ Π²Π»Π°Π΄Π΅Π΅Ρ‚Π΅.

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ сцСнарии использования Π½Π° VPS ΠΈΠ»ΠΈ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ сСрвСрС

Π’ срСдС VPS Π₯остинга Π°Ρ€Ρ…ΠΈΠ²Ρ‹ `.tar.gz` Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ постоянно: Ρ€Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ Ρ€Π΅Π»ΠΈΠ·ΠΎΠ² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, восстановлСниС Π΄Π°ΠΌΠΏΠΎΠ² Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π½Π°Π±ΠΎΡ€ΠΎΠ² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ сСрвСрами ΠΈ распаковка ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, скомпилированного ΠΈΠ· исходного ΠΊΠΎΠ΄Π°.

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΉ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ процСсс развёртывания Π½Π° сСрвСрС Linux:

β€œ`bash

Download release archive

wget https://example.com/releases/myapp-2.1.0.tar.gz

Verify integrity

sha256sum myapp-2.1.0.tar.gz

Inspect contents before extracting

tar -tzf myapp-2.1.0.tar.gz | head -30

Extract to deployment directory

sudo mkdir -p /var/www/myapp

sudo tar -xzvpf myapp-2.1.0.tar.gz -C /var/www/myapp –strip-components=1

Set correct ownership

sudo chown -R www-data:www-data /var/www/myapp

β€œ`

На Π’Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… сСрвСрах, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… Ρ€Π΅Π·Π΅Ρ€Π²Π½Ρ‹Π΅ ΠΊΠΎΠΏΠΈΠΈ большого ΠΌΠ°ΡΡˆΡ‚Π°Π±Π°, объСдинСниС `tar` с ΠΊΠ°Π½Π°Π»Π°ΠΌΠΈ позволяСт ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ записи ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² Π½Π° диск:

β€œ`bash

Create and stream a compressed archive directly over SSH to a remote server

tar -czvf – /var/www/html | ssh user@backup-server "cat > /backups/html-$(date +%F).tar.gz"

β€œ`

Π­Ρ‚ΠΎΡ‚ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ особСнно эффСктивСн, ΠΊΠΎΠ³Π΄Π° дисковоС пространство ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π΄Π° ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠ³ΠΎ копирования ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Π°.

Если Π²Ρ‹ управляСтС срСдой Π²Π΅Π±-хостинга Ρ‡Π΅Ρ€Π΅Π· панСль управлСния, Ρ‚Π°ΠΊΠΈΠ΅ инструмСнты, ΠΊΠ°ΠΊ VPS с cPanel, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ `.tar.gz` Ρ‡Π΅Ρ€Π΅Π· интСрфСйс Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠ³ΠΎ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π°, ΠΎΠ΄Π½Π°ΠΊΠΎ базовая ΠΊΠΎΠΌΠ°Π½Π΄Π° `tar` всСгда доступна Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅ для скриптовых Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… процСссов.

ΠŸΡ€ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… Ρ„Π°ΠΉΠ»Ρ‹ Ρ‡Π΅Ρ€Π΅Π· HTTPS, сочСтаниС ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π° развёртывания с ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ настроСнными SSL-сСртификатами Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΈΠ·Π²Π»Π΅Ρ‡Ρ‘Π½Π½Ρ‹Π΅ ΠΈ Ρ€Π°Π·Π²Ρ‘Ρ€Π½ΡƒΡ‚Ρ‹Π΅ рСсурсы прилоТСния Π±ΡƒΠ΄ΡƒΡ‚ бСзопасно ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ с ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ запроса.

Для ΠΊΠΎΠΌΠ°Π½Π΄, ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… нСсколькими срСдами, ПанСли управлСния VPS ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Π·Π°ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠ³ΠΎ копирования ΠΈ восстановлСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ΅Ρ€Π΅ ΠΎΠΏΠΈΡ€Π°ΡŽΡ‚ΡΡ Π½Π° Π°Ρ€Ρ…ΠΈΠ²Ρ‹ `.tar.gz`.

ΠšΡ€Π°Ρ‚ΠΊΠΈΠΉ справочник: Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ tar

β€œ`bash

Extract .tar.gz to current directory

tar -xzvf archive.tar.gz

Extract to specific directory

tar -xzvf archive.tar.gz -C /target/dir

Extract silently (no verbose output)

tar -xzf archive.tar.gz -C /target/dir

List contents without extracting

tar -tzvf archive.tar.gz

Extract single file

tar -xzvf archive.tar.gz path/inside/archive/file.conf

Extract and strip top-level directory

tar -xzvf archive.tar.gz -C /target/dir –strip-components=1

Extract preserving permissions and ownership (as root)

sudo tar -xzvpf archive.tar.gz –same-owner

Extract .tar.bz2

tar -xjvf archive.tar.bz2

Extract .tar.xz

tar -xJvf archive.tar.xz

β€œ`

ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π° тСхничСских Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ

БцСнарийРСкомСндуСмая ΠΊΠΎΠΌΠ°Π½Π΄Π°
Π˜Π½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ прогрСсс`tar -xzvf archive.tar.gz`
Автоматизированный скрипт ΠΈΠ»ΠΈ Π·Π°Π΄Π°Π½ΠΈΠ΅ cron`tar -xzf archive.tar.gz -C /target`
НСизвСстная структура Π°Ρ€Ρ…ΠΈΠ²Π°, сначала ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ`tar -tzf archive.tar.gzhead -20`
Π Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Π±Π΅Π· ΠΎΠ±Ρ‘Ρ€Ρ‚ΠΊΠΈ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня`tar -xzf archive.tar.gz -C /target –strip-components=1`
Π’ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΡΠΈΡΡ‚Π΅ΠΌΠ½ΡƒΡŽ Ρ€Π΅Π·Π΅Ρ€Π²Π½ΡƒΡŽ копию с Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌΠΈ ΠΏΡ€Π°Π²Π°ΠΌΠΈ доступа`sudo tar -xzvpf archive.tar.gz –same-owner`
Π’ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ» ΠΈΠ· большого Π°Ρ€Ρ…ΠΈΠ²Π°`tar -xzf archive.tar.gz path/to/file`
ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Π°Ρ€Ρ…ΠΈΠ²Π° ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ΠΌ`tar -tzf archive.tar.gz > /dev/null && echo "OK"`

Часто Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ вопросы

Π’ Ρ‡Ρ‘ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ .tar.gz ΠΈ .tgz?

Π­Ρ‚ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹. `.tgz` β€” это просто сокращённый псСвдоним с ΠΎΠ΄Π½ΠΈΠΌ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ для `.tar.gz`, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Π² случаях, ΠΊΠΎΠ³Π΄Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ систСмы ΠΈΠ»ΠΈ инструмСнты ΠΈΠΌΠ΅ΡŽΡ‚ ограничСния Π½Π° Π΄Π»ΠΈΠ½Ρƒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ. Оба ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡŽΡ‚ΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ `tar -xzvf`.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ `tar -xzvf` ΠΈΠ½ΠΎΠ³Π΄Π° ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ Ρ„Π°ΠΉΠ»Ρ‹ Π² Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ вмСсто ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°?

Π­Ρ‚ΠΎ происходит, ΠΊΠΎΠ³Π΄Π° Π°Ρ€Ρ…ΠΈΠ² Π±Ρ‹Π» создан Π±Π΅Π· ΠΎΠ±Ρ‘Ρ€Ρ‚ΠΊΠΈ Π² Π²ΠΈΠ΄Π΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня. ВсСгда запускайтС `tar -tzf archive.tar.gz | head -20` ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ΠΌ. Если ΠΏΡƒΡ‚ΠΈ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ±Ρ‰Π΅Π³ΠΎ прСфикса, создайтС ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ `-C` для извлСчСния Π² Π½Π΅Π³ΠΎ, прСдотвращая разброс Ρ„Π°ΠΉΠ»ΠΎΠ².

МоТно Π»ΠΈ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ Ρ„Π°ΠΉΠ» .tar.gz Π±Π΅Π· ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ tar?

Π”Π°. МоТно сначала Ρ€Π°ΡΠΏΠ°ΠΊΠΎΠ²Π°Ρ‚ΡŒ слой gzip с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ `gunzip archive.tar.gz`, Ρ‡Ρ‚ΠΎ создаст `archive.tar`, Π·Π°Ρ‚Π΅ΠΌ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ `tar -xvf archive.tar`. НСкоторыС систСмы Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ `zcat archive.tar.gz | tar -xvf -` для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ дСкомпрСссии нСпосрСдствСнно Π² tar. Однако `tar -xzvf` Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ всСгда являСтся Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ эффСктивным ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠΌ.

ЗамСдляСт Π»ΠΈ Ρ„Π»Π°Π³ `-v` ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π°Ρ€Ρ…ΠΈΠ²ΠΎΠ²?

ΠΠ΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π΄Π°. Π’ Π°Ρ€Ρ…ΠΈΠ²Π°Ρ…, содСрТащих сотни тысяч Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ², Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы Π½Π° Π²Ρ‹Π²ΠΎΠ΄ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π° Π² stdout ΠΌΠΎΠ³ΡƒΡ‚ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΎΡ‰ΡƒΡ‚ΠΈΠΌΠΎΠ΅ врСмя. Π’ контСкстах, Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈΠ»ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ…, всСгда опускайтС `-v`.

Как ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ Ρ„Π°ΠΉΠ» .tar.gz ΠΎΡ‚ ΠΈΠΌΠ΅Π½ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π±Π΅Π· смСны ΡƒΡ‡Ρ‘Ρ‚Π½ΠΎΠΉ записи?

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ `sudo -u targetuser tar -xzvf archive.tar.gz -C /target/dir`. Π­Ρ‚ΠΎ запускаСт процСсс извлСчСния ΠΏΠΎΠ΄ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ Ρ†Π΅Π»Π΅Π²ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, обСспСчивая ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ Π²Π»Π°Π΄Π΅Π½ΠΈΠ΅ ΠΈΠ·Π²Π»Π΅Ρ‡Ρ‘Π½Π½Ρ‹ΠΌΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Π±Π΅Π· нСобходимости ΠΏΠΎΠ»Π½ΠΎΠΉ смСны ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Ρ‡Π΅Ρ€Π΅Π· `su`.