ΠΠ°ΠΊ Π΄Π° ΠΎΡΠΏΠ΅ΡΠ°ΡΠ°ΡΠ΅ ΡΠ°ΠΉΠ» Π² Linux: Π ΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ Π·Π° Π½Π°ΠΏΡΠ΅Π΄Π½Π°Π»ΠΈ Π·Π° ΠΎΠΏΠΈΡΠ½ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ
ΠΠ·Π²Π»ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° .tar, .tar.gz, .tar.bz2 ΠΈ Π΄ΡΡΠ³ΠΈ ΡΠ°ΡΠ±Π°Π» ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π΅ Π²Π°ΠΆΠ½ΠΎ ΡΠΌΠ΅Π½ΠΈΠ΅ Π² ΡΠΈΡΡΠ΅ΠΌΠ½Π°ΡΠ° Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΡ Π½Π° Linux ΠΈ ΡΠ°Π±ΠΎΡΠ½ΠΈΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠΈ Π½Π° DevOps. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ tar ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΠΏΡΠΎΡΡ Π½Π° ΠΏΡΡΠ² ΠΏΠΎΠ³Π»Π΅Π΄, ΠΎΠΏΠΈΡΠ½ΠΈΡΠ΅ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈ ΡΠ»Π°Π³ΠΎΠ²Π΅ ΠΈ ΡΠ΅Ρ Π½ΠΈΠΊΠΈ Π·Π° Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡ, ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ ΠΈ ΡΠΈΠ½ ΠΊΠΎΠ½ΡΡΠΎΠ».
Π’ΠΎΠ²Π° ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΡΠ΅ Π²ΠΈ Π·Π°ΠΏΠΎΠ·Π½Π°Π΅ Ρ Π²ΡΠΈΡΠΊΠΎ – ΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎ Π΄Π΅ΠΊΠΎΠΌΠΏΡΠ΅ΡΠΈΡΠ°Π½Π΅ Π΄ΠΎ ΡΡΠ»ΠΎΠ²Π½ΠΎ ΠΈΠ·Π²Π»ΠΈΡΠ°Π½Π΅, ΡΡΠ°Π²Π½ΠΈΡΠ΅Π»Π΅Π½ Π°Π½Π°Π»ΠΈΠ· ΠΈ ΡΠ°Π±ΠΎΡΠ° Ρ ΠΏΠΎΠ²ΡΠ΅Π΄Π΅Π½ΠΈ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΈ ΠΊΠΎΠΏΠΈΡ.
ΠΠ°ΠΊΠ²ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π° .tar ΡΠ°ΠΉΠ»?
Π€Π°ΠΉΠ»ΡΡ .tar (ΡΡΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΎΡ Tape Archive– Π»Π΅Π½ΡΠΎΠ² Π°ΡΡ ΠΈΠ²) Π΅ ΠΊΠΎΠ½ΡΠΎΠ»ΠΈΠ΄ΠΈΡΠ°Π½ Π°ΡΡ ΠΈΠ², ΠΊΠΎΠΉΡΠΎ ΠΎΠ±Π΅Π΄ΠΈΠ½ΡΠ²Π° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π² Π΅Π΄ΠΈΠ½, ΠΊΠ°ΡΠΎ Π·Π°ΠΏΠ°Π·Π²Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π°ΡΠ° ΡΡΡΡΠΊΡΡΡΠ°, ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡΡΠ° ΠΈ Π²ΡΠ΅ΠΌΠ΅Π²ΠΈΡΠ΅ ΠΌΠ°ΡΠΊΠ΅ΡΠΈ. ΠΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΡΠΎΠΉ Π½Π΅ Π΅ ΠΊΠΎΠΌΠΏΡΠ΅ΡΠΈΡΠ°Π½. ΠΠΎΠΌΠΏΡΠ΅ΡΠΈΡΠ°Π½Π΅ΡΠΎ ΡΠ΅ΡΡΠΎ ΡΠ΅ Π½Π°ΡΠ»Π°Π³Π²Π° Ρ ΡΠΎΡΠΌΠ°ΡΠΈ ΠΊΠ°ΡΠΎ .gz, .bz2, .xz ΠΈΠ»ΠΈ .zstd.
ΠΡΠ½ΠΎΠ²Π½ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π·Π° ΠΈΠ·Π²Π»ΠΈΡΠ°Π½Π΅
1. ΠΠ·Π²Π»ΠΈΡΠ°Π½Π΅ Π½Π° .tar ΡΠ°ΠΉΠ» (Π±Π΅Π· ΠΊΠΎΠΌΠΏΡΠ΅ΡΠΈΡ)
2. ΠΠ·Π²Π»ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°ΠΉΠ» .tar.gz ΠΈΠ»ΠΈ .tgz
3. ΠΠ·Π²Π»ΠΈΡΠ°Π½Π΅ Π½Π° .tar.bz2 ΡΠ°ΠΉΠ»
4. ΠΠ·Π²Π»ΠΈΡΠ°Π½Π΅ Π½Π° .tar.xz ΡΠ°ΠΉΠ»
5. ΠΠ·Π²Π»ΠΈΡΠ°Π½Π΅ Π½Π° .tar.zst ΡΠ°ΠΉΠ» (Zstandard)
ΠΠ±ΡΠΈ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈ ΡΠ»Π°Π³ΠΎΠ²Π΅
| Π€Π»Π°Π³ | Π€ΡΠ½ΠΊΡΠΈΡ |
|---|---|
| -x | ΠΠ·Π²Π»Π΅ΡΠ΅Π½ΠΎ ΠΎΡ |
| -f | ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π°ΡΡ ΠΈΠ²Π΅Π½ ΡΠ°ΠΉΠ» |
| -v | ΠΠΎΡΠΎΡΠ΅Π½ ΠΈΠ·Ρ ΠΎΠ΄ (ΡΠΏΠΈΡΡΠΊ Ρ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅) |
| -C | ΠΡΠΎΠΌΡΠ½Π° Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° ΠΏΡΠ΅Π΄ΠΈ ΠΈΠ·Π²Π»ΠΈΡΠ°Π½Π΅ |
| –strip-components=N | ΠΡΠ΅ΠΌΠ°Ρ Π²Π°Π½Π΅ Π½Π° ΠΏΡΡΠ²ΠΈΡΠ΅ N Π΅Π»Π΅ΠΌΠ΅Π½ΡΠ° ΠΎΡ ΠΏΡΡΡ |
| –wildcards | Π Π°Π·ΡΠ΅ΡΠ°Π²Π°Π½Π΅ Π½Π° ΡΠΈΠ»ΡΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π·Π°ΠΌΠ΅ΡΡΠ²Π°ΡΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ |
| –no-same-owner | ΠΠ·Π±ΡΠ³Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈΡΠΈΡΠ΅ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅ ΠΏΡΠΈ ΠΈΠ·Π²Π»ΠΈΡΠ°Π½Π΅ |
| –overwrite | ΠΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»Π½ΠΎ ΠΏΡΠ΅Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ Π±Π΅Π· ΠΏΠΎΠΊΠ°Π½ΠΈ |
| –exclude=PATTERN | ΠΠ·ΠΊΠ»ΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, ΠΎΡΠ³ΠΎΠ²Π°ΡΡΡΠΈ Π½Π° ΡΠ°Π±Π»ΠΎΠ½Π° |
Π Π°Π·ΡΠΈΡΠ΅Π½ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠΈ
ΠΠ·Π²Π»ΠΈΡΠ°Π½Π΅ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ
ΠΡΠ΅ΠΌΠ°Ρ Π²Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΏΠΊΠ°ΡΠ° ΠΎΡ Π½Π°ΠΉ-Π²ΠΈΡΠΎΠΊΠΎ Π½ΠΈΠ²ΠΎ (ΠΈΠ·ΡΠ°Π²Π½ΡΠ²Π°Π½Π΅ Π½Π° ΡΡΡΡΠΊΡΡΡΠ°ΡΠ°)
ΠΠ·Π²Π»ΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅
ΠΠ·Π²Π»ΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ²ΠΏΠ°Π΄Π°Ρ ΡΠ°Π±Π»ΠΎΠ½ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Π·Π°ΠΌΠ΅ΡΡΠ²Π°ΡΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ
ΠΠ·Π²Π»ΠΈΡΠ°Π½Π΅ Ρ ΠΈΠ·ΠΊΠ»ΡΡΠ²Π°Π½Π΅ Π½Π° Π½ΡΠΊΠΎΠΈ ΠΏΡΡΠΈΡΠ°
ΠΡΠ΅ΠΌΠ΅ Π·Π° ΠΈΠ·Π²Π»ΠΈΡΠ°Π½Π΅ Π½Π° Π±Π΅Π½ΡΠΌΠ°ΡΠΊΠ°
ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΊΡΠ°ΠΉΠ½ΠΈ ΡΠ»ΡΡΠ°ΠΈ
π§± Π€Π°ΠΉΠ»ΡΡ Π΅ ΠΏΠΎΠ²ΡΠ΅Π΄Π΅Π½
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ tar Ρ –ignore-zeros, Π·Π° Π΄Π° ΠΏΡΠΎΠΏΡΡΠ½Π΅ΡΠ΅ ΠΏΠΎΠ²ΡΠ΅Π΄Π΅Π½ΠΈΡΠ΅ Π±Π»ΠΎΠΊΠΎΠ²Π΅:
π ΠΡΠ΅Π³Π»Π΅Π΄Π°ΠΉΡΠ΅ Π°ΡΡ ΠΈΠ²Π°, ΠΏΡΠ΅Π΄ΠΈ Π΄Π° Π³ΠΎ Π΅ΠΊΡΡΡΠ°Ρ ΠΈΡΠ°ΡΠ΅
ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΠ΅Π»ΠΎΡΡΡΠ° (Π·Π° gzip-ΠΊΠΎΠΌΠΏΡΠ΅ΡΠΈΡΠ°Π½ΠΈ ΡΠ°ΡΠ±Π°Π»ΠΈ)
Π‘ΡΠ²Π΅ΡΠΈ Π·Π° ΠΏΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ Π·Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΈ
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ tar Π² ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ Π·Π° Π°ΡΡ ΠΈΠ²ΠΈΡΠ°Π½Π΅/Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅:
ΠΠ»ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΡΠ°Π·ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½Π΅ ΠΈ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅:
#!/bin/bash
SRC="$1"
DEST="$2"
mkdir -p "$DEST"
tar -xzf "$SRC" -C "$DEST" --strip-components=1Π€Π°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅ Tar ΡΠ° ΠΎΡ ΡΡΡΠ΅ΡΡΠ²Π΅Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π·Π° ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½Π΅ΡΠΎ, Π°ΡΡ ΠΈΠ²ΠΈΡΠ°Π½Π΅ΡΠΎ ΠΈ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Linux. ΠΠ°ΡΠΎ ΠΎΠ²Π»Π°Π΄Π΅Π΅ΡΠ΅ ΡΠ»Π°Π³ΠΎΠ²Π΅ΡΠ΅ Π·Π° ΠΈΠ·Π²Π»ΠΈΡΠ°Π½Π΅ ΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ°ΡΠ΅ tar Π² ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠ°ΡΠ΅ Π°ΡΡ ΠΈΠ²ΠΈΡΠ΅ Ρ Ρ ΠΈΡΡΡΠ³ΠΈΡΠ΅ΡΠΊΠ° ΡΠΎΡΠ½ΠΎΡΡ – Π΄Π° ΠΈΠ·Π²Π»ΠΈΡΠ°ΡΠ΅ ΡΠ°ΠΌΠΎ ΡΠΎΠ²Π°, ΠΊΠΎΠ΅ΡΠΎ Π²ΠΈ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ, Π΄Π° Π·Π°ΠΏΠ°Π·Π²Π°ΡΠ΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΎΡΡΡΠ°, Π΄Π° ΠΈΠ·ΡΠ°Π²Π½ΡΠ²Π°ΡΠ΅ ΠΏΡΡΠΈΡΠ°ΡΠ° ΠΈΠ»ΠΈ Π΄Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°ΡΠ΅ ΡΠ΅Π»ΠΈ ΡΠ°Π±ΠΎΡΠ½ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ.
ΠΡΠ°ΡΠΊΠ° ΡΠΏΡΠ°Π²ΠΊΠ°
# Basic
tar -xf file.tarΒ Β # No compression
tar -xzf file.tar.gz # Gzip
tar -xjf file.tar.bz2 # Bzip2
tar -xJf file.tar.xz # XZ
tar --use-compress-program=unzstd -xf file.tar.zstΒ Β # Zstandard# Common options
tar -xvf archive.tarΒ Β # Verbose
tar -C /target/dir -xf file.tar.gzΒ Β # Extract to folder
tar --strip-components=1 -xf file.tar.gzΒ Β # Remove top-level dir