Comme nous savons tous que "unix" peut avoir n'importe quoi dans un fichier à l'exception de '/' et '\ 0', les administrateurs système ont cependant tendance à avoir une préférence beaucoup plus petite, principalement en raison de rien qui n'aime pas les espaces en entrée ... et un tas de choses ayant une signification spéciale pour «:» et «@» entre autres.
Récemment, j'avais vu un autre cas où un horodatage était utilisé dans un nom de fichier, et après avoir joué un peu avec différents formats pour le rendre "meilleur", j'ai pensé que j'essaierais de trouver une "meilleure pratique", sans en voir un que j'ai figuré Je voudrais simplement demander ici et voir ce que les gens pensaient.
Solutions "courantes" possibles (p = préfixe et s = suffixe):
Format de type syslog / logrotate / DNS:
p-%Y%m%d-suffix = prefix-20110719-s p-%Y%m%d%H%M-suffix = prefix-201107191732-s p-%Y%m%d%H%M%S-suffix = prefix-20110719173216-s
avantages:
- C'est "commun", donc "assez bon" pourrait être meilleur que "meilleur".
- Pas de personnages étranges.
- Il est facile de distinguer le "blob date / heure" de tout le reste.
les inconvénients:
- La version date seulement n'est pas facile à lire, et y compris l'heure me fait saigner les yeux et les secondes, c'est juste "lol".
- Suppose TZ.
Format ISO-8601
p-%Y-%m-%d-s = p-2011-07-19-s p-%Y-%m-%dT%H:%M%z-s = p-2011-07-19T17:32-0400-s p-%Y-%m-%dT%H:%M:%S%z-s = p-2011-07-19T17:32:16-0400-s p-%Y-%m-%dT%H:%M:%S%z-s = p-2011-07-19T23:32:16+0200-s
avantages:
- Sans espaces.
- Tient compte de TZ.
- Est "pas mal" à lire par les humains (seule la date est très bonne).
- Peut être généré par $ (date --iso = {heures, minutes, secondes})
les inconvénients:
- scp / tar / etc. n'aimera pas ces caractères ':'.
- Il faut un peu pour que les gens «normaux» voient WTF à quoi «T» est destiné, et à quoi ça sert à la fin :).
- Beaucoup de caractères «-».
format rfc-3339
p-%Y-%m-%d-s = p-2011-07-19-s p-%Y-%m-%d %H:%M%:z-s = p-2011-07-19 17:32-04:00-s p-%Y-%m-%d %H:%M:%S%:z-s = p-2011-07-19 17:32:16-04:00-s p-%Y-%m-%d %H:%M:%S%:z-s = p-2011-07-19 23:32:16+02:00-s
avantages:
- Tient compte de TZ.
- Peut facilement être lu par "tous les humains".
- Peut distinguer la date / l'heure du préfixe / suffixe.
- Certains des éléments ci-dessus peuvent être générés avec $ (date --iso = {heures, secondes})
les inconvénients:
- A des espaces dans les versions temporelles (ce qui signifie que tout le code le déteste).
- scp / tar / etc. n'aimera pas ces caractères ':'.
J'adore les tirets:
p-%Y-%m-%d-s = p-2011-07-19-s p-%Y-%m-%d-%H-%M-s = p-2011-07-19-17-32-s p-%Y-%m-%d-%H-%M-%S-s = p-2011-07-19-23-32-16-s
avantages:
- essentiellement un syslog légèrement plus agréable / etc. une variante.
les inconvénients:
- Beaucoup de caractères «-».
- Suppose TZ.
J'adore les tirets, avec des extensions:
p.%Y-%m-%d.s = p.2011-07-19.s p.%Y-%m-%d.%H-%M.s = p.2011-07-19.17-32.s p.%Y-%m-%d.%H-%M-%S.s = p.2011-07-19.23-32-16.s
avantages:
- en gros une variante un peu plus agréable "j'aime les traits d'union".
- Pas de personnages étranges.
- Peut distinguer la date / l'heure du préfixe / suffixe.
les inconvénients:
- En utilisant '.' ici est quelque peu non traditionnel.
- Suppose TZ.
... donc tout le monde veut donner une préférence et une raison, ou plus d'une (par exemple, ne vous souciez pas de TZ si c'est + 95% pour rester local, mais faites attention si ce n'est pas le cas).
Ou, évidemment, quelque chose qui ne figure pas dans la liste ci-dessus.