o equivalente de tar de zip -o (--latest-time)?

1

O utilitário Zip nos permite

Set the "last modified" time of the zip archive to the latest (oldest) "last modified" time found among the entries in the zip archive

com

zip -o [...]

ou

zip --latest-time [...]

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

    
por Ricardo 04.10.2016 / 02:40

2 respostas

2
new_file="$(find dir/ -type f -exec stat --printf='%n
new_file="$(find dir/ -type f -exec stat --printf='%n%pre%%Y\n' {} + | sort -k2,2 -nt '%pre%' | tail -n1 | cut -d '' -f1)"; tar -zcf foo.tar.gz dir/; touch -r "$new_file" foo.tar.gz
%Y\n' {} + | sort -k2,2 -nt '%pre%' | 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ê deve alterar foo.tar.gz , dir / no comando acima

  • localiza todos os arquivos em dir / (o mesmo a ser picado)
  • obtém o último registro de data e hora de modificação em segundos desde a época
  • classifica numericamente e agarra a parte inferior (mais recente)
  • toque usa esse arquivo como referência ao ajustar o registro de data e hora foo.tar.gz.
por 04.10.2016 / 03:17
1

Provavelmente não existe um liner (no POSIX, de qualquer forma). Eu uso um script ( touch-dirs ) para definir registros de data e hora do diretório para registro de data e hora recente dos arquivos no diretório e, em seguida, use esse registro de data e hora para o archive resultante.

Esse último passo pode ser feito usando a opção -r (referência) de touch . Na verdade, eu não uso isso, mas sim um utilitário ( cpd ).

    
por 04.10.2016 / 02:47

Tags