equivalente do tar a zip -o (--latest-time)?

equivalente do tar a zip -o (--latest-time)?

O utilitário Zip nos permite

Defina a hora da "última modificação" do arquivo zip para a hora da "última modificação" mais recente (mais antiga) encontrada entre as entradas no arquivo zip

com

zip -o [...]

ou

zip --latest-time [...]

Qual é a maneira mais fácil de fazer o mesmo com o TAR?

Responder1

new_file="$(find dir/ -type f -exec stat --printf='%n\0%Y\n' {} + | sort -k2,2 -nt '\0' | tail -n1 | cut -d '' -f1)"; tar -zcf foo.tar.gz dir/; touch -r "$new_file" foo.tar.gz

Exemplo do que acontece

tar -zcf foo.tar.gz dir/; touch -r fileX foo.tar.gz

Você deveria mudarfoo.tar.gz,diretório/no comando acima

Isto

  • encontra todos os arquivos emdiretório/(o mesmo para ser alcatroado)
  • obtém o carimbo de data/hora da última modificação em segundos desde a época
  • classifica numericamente e pega o de baixo (mais recente)
  • touch usa esse arquivo como referência ao ajustar o carimbo de data/hora foo.tar.gz.

Responder2

Provavelmente não existe uma linha (pelo menos no POSIX). Eu uso um script (touch-dirs) para definir os carimbos de data e hora do diretório para corresponder ao carimbo de data e hora mais recente dos arquivos no diretório e, em seguida, usar esse carimbo de data e hora para o arquivo resultante.

Essa última etapa pode ser realizada usando a -ropção (referência) detouch. Na verdade eu também não uso isso, mas sim um utilitário (cpd).

informação relacionada