Come tutti sappiamo "unix" può contenere qualsiasi cosa in un file tranne '/' e '\ 0', tuttavia gli amministratori di sistema tendono ad avere una preferenza molto più piccola, principalmente a causa del fatto che non piacciono gli spazi come input ... e un mucchio di cose che hanno un significato speciale per ':' e '@' tra gli altri.
Di recente ho visto un altro caso in cui un timestamp è stato utilizzato in un nome file e dopo aver giocato un po 'con formati diversi per renderlo "migliore", ho pensato che avrei cercato di trovare una "best practice", non vedendo quello che ho immaginato Vorrei solo chiedere qui e vedere cosa pensava la gente.
Possibili soluzioni "comuni" (p = prefisso e s = suffisso):
formato 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
professionisti:
- È "comune", quindi "abbastanza buono" potrebbe essere migliore di "migliore".
- Nessun personaggio strano.
- Facile distinguere il "blob data / ora" da tutto il resto.
contro:
- La sola versione della data non è facile da leggere, e includendo il tempo mi fa sanguinare gli occhi e anche i secondi sono solo "lol".
- Presuppone 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
professionisti:
- No spazi.
- Tiene conto di TZ.
- È "non male" leggere dagli umani (solo la data è v. Buona).
- Può essere generato da $ (data --iso = {ore, minuti, secondi})
contro:
- SCP / tar / etc. non mi piaceranno quei personaggi ':'.
- Ci vuole un po 'per le persone "normali" per vedere WTF per cui "T" è, e qual è la cosa alla fine :).
- Molti personaggi "-".
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
professionisti:
- Tiene conto di TZ.
- Può essere facilmente letto da "tutti gli umani".
- Può distinguere data / ora dal prefisso / suffisso.
- Alcuni dei precedenti possono essere generati con $ (date --iso = {hours, seconds})
contro:
- Ha spazi nelle versioni temporali (il che significa che tutto il codice lo odierà).
- SCP / tar / etc. non mi piaceranno quei personaggi ':'.
Adoro i trattini:
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
professionisti:
- fondamentalmente un syslog / etc leggermente più bello. variante.
contro:
- Molti personaggi "-".
- Presuppone TZ.
Adoro i trattini, con estensioni:
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
professionisti:
- sostanzialmente una variante "I love hyphens" leggermente più bella.
- Nessun personaggio strano.
- Può distinguere data / ora dal prefisso / suffisso.
contro:
- Usando '.' qui è un po 'non tradizionale.
- Presuppone TZ.
... quindi chiunque vuole dare una preferenza e un motivo, o più di uno (es. non preoccuparsi di TZ se è 95+% per rimanere locale in macchina, ma preoccuparsi molto se non lo è).
O, ovviamente, qualcosa che non è nell'elenco precedente.