Como todos sabemos, "unix" puede tener cualquier cosa en un archivo excepto '/' y '\ 0', sin embargo, los administradores de sistemas tienden a tener una preferencia mucho menor, principalmente debido a que no le gustan los espacios como entrada ... y un montón de cosas que tienen un significado especial para ':' y '@' entre otros.
Recientemente había visto otro caso en el que se usaba una marca de tiempo en un nombre de archivo, y después de jugar un poco con diferentes formatos para hacerlo "mejor", pensé que trataría de encontrar una "mejor práctica", sin ver uno que pensé Solo preguntaría aquí y vería qué pensaba la gente.
Posibles soluciones "comunes" (p = prefijo ys = sufijo):
syslog / logrotate / DNS como formato:
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
pros:
- Es "común", por lo que "lo suficientemente bueno" podría ser mejor que "mejor".
- No hay personajes extraños.
- Fácil de distinguir el "blob de fecha / hora" de todo lo demás.
contras:
- La versión de fecha única no es fácil de leer, e incluir el tiempo hace que mis ojos sangren y los segundos también son solo "jajaja".
- Asume TZ.
Formato 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
pros:
- No hay espacios.
- Toma en cuenta TZ.
- Es "no está mal" que los humanos lo lean (la fecha solo es muy buena).
- Puede ser generado por $ (fecha --iso = {horas, minutos, segundos})
contras:
- scp / tar / etc. no le gustarán esos caracteres ':'.
- Las personas "normales" tardan un poco en ver WTF para lo que es 'T', y para qué sirve la cosa al final :).
- Un montón de caracteres '-'.
formato 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
pros:
- Toma en cuenta TZ.
- Puede ser leído fácilmente por "todos los humanos".
- Puede distinguir fecha / hora del prefijo / sufijo.
- Algunos de los anteriores se pueden generar con $ (fecha --iso = {horas, segundos})
contras:
- Tiene espacios en las versiones de tiempo (lo que significa que todo el código lo odiará).
- scp / tar / etc. no le gustarán esos caracteres ':'.
Me encantan los guiones:
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
pros:
- básicamente un syslog / etc un poco mejor variante.
contras:
- Un montón de caracteres '-'.
- Asume TZ.
Me encantan los guiones, con extensiones:
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
pros:
- Básicamente, una variante un poco más agradable "Amo guiones".
- No hay personajes extraños.
- Puede distinguir fecha / hora del prefijo / sufijo.
contras:
- Utilizando '.' Aquí es algo no tradicional.
- Asume TZ.
... así que cualquiera quiere dar una preferencia y una razón, o más de una (por ejemplo, no me importa TZ si es 95 +% para mantener la máquina local, pero me importa mucho si no lo es).
O, obviamente, algo que no está en la lista anterior.