Již několik let si loguji určité věci do .txt souborů. Každý soubor má jako název timestamp. A jelikož je těch logů hodně, tak kvůli úspoře místa ty starší komprimuji do archivů .tbz pomocí taru. Léta na to používám tento příkaz
find ./ -type f -name "*.txt" -mtime +5 -exec sh -c "for i; do tar -cjf "${i%.txt}.tbz" "$i"; done" sh {} +
Nicméně když jsem se včera do složky logů po delší době podíval, zjistil jsem, že zhruba od 20.1. 2022 se logy nekomprimují...
A skutečně, pokud dám jenom find
juwa@p-5738:~/.local/test$ find ./ -type f -name "*.txt" -mtime +5
./2022-05-28_02:08:06_test2.txt
./2022-05-28_02:08:09_test3.txt
./2022-05-28_02:08:01_test1.txt
./2022-05-29_00:08:01_test4.txt
Tak výsledek je správný.
Ale pokud dám find + tar
juwa@p-5738:~/.local/test$ find ./ -type f -name "*.txt" -mtime +5 -exec sh -c "for i; do tar -cjf "${i%.txt}.tbz" "$i"; done" sh {} +
tar: Vytvoření prázdného archivu odmítnuto.
Více informací získáte pomocí „tar --help“ nebo „tar --usage“.
tar: Vytvoření prázdného archivu odmítnuto.
Více informací získáte pomocí „tar --help“ nebo „tar --usage“.
tar: Vytvoření prázdného archivu odmítnuto.
Více informací získáte pomocí „tar --help“ nebo „tar --usage“.
tar: Vytvoření prázdného archivu odmítnuto.
Více informací získáte pomocí „tar --help“ nebo „tar --usage“.
Tak komprimace selže. Přitom stejný příkaz léta fungoval....
Po mnoha marných pokusech najít řešení jsem na příčinu přišel: Kolem příkazu na komprimaci se musí změnit dvojité uvozovky na jednoduché, tak je to prosté...
find ./ -type f -name "*.txt" -mtime +5 -exec sh -c 'for i; do tar -cjf "${i%.txt}.tbz" "$i"; done' sh {} +
Pak vše zase funguje. A nyní k vlastnímu dotazu:
Že to funguje pouze s jednoduchými uvozovkami bych ještě rozuměl, pokud by tomu tak bylo od počátku.
Čemu ale nerozumím je, proč to léta s dvojitými uvozovkami fungovalo - respektive co se stalo v půlce ledna 2022, že to náhle fungovat přestalo?
Podezření na nějakou novou verzi (aktualizaci) taru nebo něčeho jiného, bylo vyloučeno nabootováním live 18.04.5 (vydáno 6.8. 2020) ve kterém se to chová úplně stejně.