it-swarm-eu.dev

„Standardní“ formát pro použití časového razítka jako součásti názvu souboru

Hledal jsem standardní formát pro použití data/času jako části názvu souboru a nemohl jsem přijít s ničím.

Moje otázka je dvě části:

Používá časová razítka prosadit jedinečný v názvech souborů špatný postup?

Mohl bych získat čas od data vytvoření a serializovat názvy souborů (file0001.bak, file0002.bak, atd.), Ale pouhým zahrnutím časového razítka umožňuje provádět operace se soubory, jako je mv 2011-01* somewhere/. Existuje nevýhoda používání tohoto typu pojmenovacího systému?

Formát, který používám, je YYYY-mm-dd_HH-MM-SS.

Existuje lepší formát, který bych měl používat?

S tímto formátem bych se měl zabývat kompatibilitou systému souborů, str_to_date_parsing, atd.?

Dík!

upravit:

Možná jsem chtěl vynechat bit jedinečnosti vynutit, protože je to jediný uživatel vytvářející zálohu pomocí cronjob (neměly by tam být žádné problémy se souběžností).

93
kriegar

Měli byste zvážit formát ISO 8601 (2013-04-01T13: 01: 02). Ano, existují normy pro tyto věci. Dvojtečky a spojovníky mohou být vynechány.

Řetězec formátu, který obvykle používám, je %Y%m%dT%H%M%S A přináší 20130401T130102. V závislosti na požadavcích vynechávám hodnoty zleva. V bash skriptu dostanu datum s řádkem jako:

LOGDATE=$(date +%Y%m%dT%H%M%S)
65
BillThor

Hledal jsem standardní formát pro použití data/času jako části názvu souboru a nemohl jsem přijít s ničím.

Moje otázka je dvě části:

Používá časové razítko k vynucení jedinečných názvů souborů špatný postup?

Ne, to je v pořádku.

Mohl bych získat čas od data vytvoření a serializovat názvy souborů (file0001.bak, file0002.bak atd.)

Postupné číslování je více práce. Časovou značku považujte za rostoucí, ale nesekvenční číslování.

ale pouhé zahrnutí časového razítka umožňuje provádět operace se soubory, jako je mv 2011-01 * někde /. Existuje nevýhoda používání tohoto typu pojmenovacího systému?

Ne, je to pořád pořád.

Používám formát YYYY-mm-dd_HH-MM-SS.

To je dobré, protože se třídí chronologicky. Ztratil bych podtržítko jen proto, že je snazší napsat pomlčku.

Existuje lepší formát, který bych měl používat?

Spíš ne.

5
kevin cline

Záleží na vaší aplikaci. Někdy lze použít časové razítko, jako je ta, které jste popsali. Někdy, když se jedná o kolizi jmen, můžete použít generátor GUID .

3
grokus

Použití formátu ISO 8601 také umožňuje třídit soubory podle data (za předpokladu, že všechny mají stejnou předponu).

http://www.iso.org/iso/support/faqs/faqs_widely_used_standards/widely_used_standards_other/date_and_time_format.htm
http://en.wikipedia.org/wiki/ISO_8601

2
Tangurena

Formát, který používáte, je v pořádku, ale pokud chcete jedinečnost a čas nemá žádný jiný význam, můžete mít problém se souběžností v aplikaci, pokud aplikace používá více uživatelů současně a všichni způsobí, že se soubory vytvoří ve stejném čase složku. Pokud chcete jedinečnost, můžete zvážit vytvoření GUID a odstranění všech neplatných znaků, jako jsou složené závorky a pomlčky) a použít je jako název souboru.

2
M.Sameer