26.08.2022, Vladimír Klaus, navštíveno 1138x

Systém
Windows

Aplikace či prográmek TAR pochází z Unixu, ale v poslední době je dostupný i ve Windows. Nechám stranou k čemu původně sloužil (zálohování na pásky), pouze zmíním to, k čemu ho potřebuji já. Bohužel i v dnešní době Windows stále nemají řádkovou aplikaci na zipování. Ano, můžete si nainstalovat 7Zip nebo jinou aplikaci, ale stále to vyžaduje jisté úsilí. Pokud navíc nepotřebujete při zipování žádné velké složitosti, pak může dobře posloužit právě TAR.

Jak ve Windows zipovat pomocí TAR, obr. 1

Co dělat, když ho u sebe nenajdete? Stačí najít jiný počítač – nevadí ani trochu jiná verze Windows – a zkopírovat k sobě tyto dva soubory:

  • tar.exe
  • archiveint.dll

Ukázka použití:

rem -a = automaticky nastaví kompresi dle přípony archivu
rem -c = create = budu vytvářet archiv
rem -f = file = musí následovat cílový soubor
rem -C = musí následovat složka, do které se tar přepne, když bude vytvářet archiv
rem ... a nakonec je soubor nebo soubory, které se budou archivovat
tar.exe -a -c -f d:\archiv.zip -C c:\dokumenty\ *.doc

Hned první parametr "-a" je záhadný tím, že ho nenajdete v nápovědě (viz níže) a velmi obtížně se hledá i na internetu. Ono vůbec hledat písmeno "a" je trochu problém 😎. V každém případě se jedná o velmi zásadní parametr, který zapne kompresi dle přípony archivního souboru, protože jinak dochází pouze k zabalení souborů, ale bez komprese.

Zdánlivě nepodstatný parametr "-C" je důležitý, pokud nechcete, aby byly v archivu uložené i zbytečné cesty. Ve výše uvedeném příkladu chci archivovat všechny .doc z c:\dokumenty. Kdybych tam tento parametr nedal, musel bych specifikovat .doc pomocí celé cesty.

tar -a -c -f d:\archiv.zip c:\dokumenty\*.doc

Výsledek by byl stejný, ale až na to, že v d:\archiv.zip by byla vytvořena složka "dokumenty" a teprve v ní by byly všechny *.doc.

Pokud potřebujete nápovědu, stačí zadat:

tar.exe --help

a získáte přibližně toto, což je poměrně bída, takže doporučuji využít níže uvedených odkazů:

First option must be a mode specifier:

 -c Create
 -r Add/Replace
 -t List
 -u Update
 -x Extract

Common Options:
  -b #  Use # 512-byte records per I/O block
  -f    <filename>  Location of archive (default \\.\tape0)
  -v    Verbose
  -w    Interactive

Create: tar -c [options] [<file> | <dir> | @<archive> | -C <dir> ]
  <file>, <dir>  add these items to archive
  -z, -j, -J, --lzma  Compress archive with gzip/bzip2/xz/lzma
  --format {ustar|pax|cpio|shar}  Select archive format
  --exclude <pattern>  Skip files that match pattern
  -C <dir>  Change to <dir> before processing remaining files
  @<archive>  Add entries from <archive> to output

List: tar -t [options] [<patterns>]
  <patterns>  If specified, list only entries that match

Extract: tar -x [options] [<patterns>]
  <patterns>  If specified, extract only entries that match
  -k    Keep (don't overwrite) existing files
  -m    Don't restore modification times
  -O    Write entries to stdout, don't restore to disk
  -p    Restore permissions (including ACLs, owner, file flags)

Ještě drobnost k dávkovému souboru

Pokud potřebujete zobrazit nebo spíše pracovat se složkou, kde je umístěn dávkový soubor, který spouštíte, tak se ji dozvíte takto:

rem Pouze cesta
echo %~dp0

rem A takto se do složky mohu přepnout
set CmdDir=%~dp0
pushd "%CmdDir%"

rem Cesta a název souboru s dávkou
echo %~f0

Když se použije %CD%, tak je to sice "current directory", ale jde o složku, ze které se spouští CMD, což bývá c:\Users\uzivatel, případně pak samozřejmě jiná složka, pokud v dávce použijete přepnutí do jiné složky nebo přepnutí na jiný disk nebo dokonce C:\Windows\system32 když se pouští pod Admin právy!

Zdroje: