%20%D0%B2%20tar%3F.png)
Утилита Zip позволяет нам
Установите время «последнего изменения» zip-архива на самое позднее (самое старое) время «последнего изменения», найденное среди записей в zip-архиве.
с
zip -o [...]
или
zip --latest-time [...]
Как проще всего сделать то же самое с TAR?
решение1
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
Пример того, что происходит
tar -zcf foo.tar.gz dir/; touch -r fileX foo.tar.gz
Тебе следует измениться.foo.tar.gz,дир/в приведенной выше команде
Это
- находит все файлы вдир/(то же самое, что просмолить)
- получает метку времени последнего изменения в секундах с начала эпохи
- сортирует по номерам и выбирает самый нижний (самый последний)
- touch использует этот файл в качестве ссылки при настройке временной метки foo.tar.gz.
решение2
Вероятно, однострочника не существует (по крайней мере, в POSIX). Я использую скрипт (сенсорные-директории) для установки временных меток каталога в соответствии с последней временной меткой файлов в каталоге, а затем использования этой временной метки для результирующего архива.
Последний шаг можно выполнить, используя -r
опцию (ссылки)touch
. На самом деле я им тоже не пользуюсь, но вместо этого есть утилита (cpd
).