Ответ Томаса Дики решает проблему в целом для любого (ELF) двоичного файла. Учитывая формулировку вашего вопроса, вы можете найти предопределенные макросы __ DATE __
и __ TIME __
полезными; они позволяют ссылаться на дату и время компиляции внутри программы (чтобы программа знала свои собственные дату и время компиляции).
Вот краткий пример:
#include <stdio.h>
int main(int argc, char **argv) {
printf("This program was compiled on %s at %s.\n", __DATE__, __TIME__);
return 0;
}
stat -c% z
отображает время последнего создания / обновления файла, его нельзя изменить или сохранить. Следовательно, если вы скопируете файл в другое место, он всегда будет получать новое время создания сейчас. Вы ищете stat -c% y
, чтобы отобразить время последней модификации, которое обычно сохраняется большинством инструментов, работающих с файлами и каталогами.
Вы можете скопировать с сохранением времени изменения, например,
cp --preserve=timestamps source destination
или (в более общем смысле: режим , владение ] и отметки времени )
cp -p source destination
, хотя в некоторых случаях сохранение права собственности не требуется.
Точно так же вы можете копировать в удаленные системы, используя параметр scp -p
:
scp -p source remote:destination
, но scp
не имеет отдельных параметров для режима и т. Д. Поскольку он работает с с учетом удаленных разрешений у него нет функции одновременной установки удаленного владения. Из-за этих ограничений вы можете использовать tar
для создания архива, который вы распаковываете в удаленной системе, сохраняя как можно больше информации.
Формат ELF, используемый для двоичных файлов, не включает дату, поэтому метка времени изменения файла - это все, что вы можете сохранить.
Дополнительная литература: