Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: Jedna menší záhada  (Přečteno 584 krát)

juwa2

  • Závislák
  • ***
  • Příspěvků: 4758
Jedna menší záhada
« kdy: 05 Června 2022, 09:00:21 »
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
Kód: [Vybrat]
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
Kód: [Vybrat]
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
Kód: [Vybrat]
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é...
Kód: [Vybrat]
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ě.

« Poslední změna: 05 Června 2022, 09:42:56 od juwa2 »

GdH

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 3170
    • GdH-Notes
Re:Jedna menší záhada
« Odpověď #1 kdy: 10 Června 2022, 13:14:38 »
Jelikož s dvojitými uvozovkami ti dělá substituce pro subshell jeho rodič, tak to, že ti to léta fungovalo byla shoda okolností, že se ty substituce kryly, případně nekryly, ale nevšiml sis toho, protože to nehodilo chybu. Nahraď 'sh -c' echem a měl bys ten rozdíl vidět.

 


Provoz zaštiťuje spolek OpenAlt.