ΠΠ°ΠΊ ΡΠ°Π·ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠ» Π² Linux: ΠΡΠΎΠ΄Π²ΠΈΠ½ΡΡΠΎΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ Π΄Π»Ρ ΠΎΠΏΡΡΠ½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ
ΠΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² .tar, .tar.gz, .tar.bz2 ΠΈ Π΄ΡΡΠ³ΠΈΡ tar-ΡΠ°ΠΉΠ»ΠΎΠ² ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ½Π΄Π°ΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠΌ Π½Π°Π²ΡΠΊΠΎΠΌ Π² ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠΌ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ 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