Zaman damgası içeren tercih edilen dosya adları biçimi


16

Hepimizin bildiği gibi "unix" bir dosyada '/' ve '\ 0' dışında herhangi bir şey olabilir, ancak sysadmin'ler, çoğunlukla girdi olarak boşlukları sevmeyen hiçbir şeyden dolayı çok daha küçük bir tercihe sahip olma eğilimindedirler ... diğerleri arasında ':' ve '@' için özel bir anlam.

Son zamanlarda bir dosya adında bir zaman damgasının kullanıldığı başka bir durum daha gördüm ve biraz daha farklı biçimlerle oynadıktan sonra "daha iyi" yapmak için düşündüm ki "en iyi uygulamayı" bulmaya çalışacağımı düşündüm Sadece burada sorarım ve insanların ne düşündüğünü görürdüm.

Olası "ortak" çözümler (p = önek ve s = sonek):

  1. syslog / logrotate / DNS benzeri biçim:

    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
    

    Artıları:

    • Bu "ortak", bu yüzden "yeterince iyi" "en iyi" den daha iyi olabilir.
    • Tuhaf karakterler yok.
    • "Tarih / saat blob" diğer her şeyi ayırt etmek kolaydır.

    Eksileri:

    • Sadece tarih sürümü okumak kolay değil, ve zaman dahil gözlerimi kanıyor ve saniye de sadece "lol".
    • TZ olduğunu varsayar.
  2. ISO-8601- biçimi

    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
    

    Artıları:

    • Boşluksuz.
    • TZ'yi dikkate alır.
    • İnsanlar tarafından okunması "fena değil" (sadece tarih v. İyi).
    • $ İle oluşturulabilir (tarih --iso = {saat, dakika, saniye})

    Eksileri:

    • scp / katran / vb. şu ':' karakterlerini sevmeyecek.
    • "Normal" insanlar için WTF 'T' ve sonunda ne olduğunu görmek için biraz zaman alır :).
    • Bir sürü '-' karakter.
  3. rfc-3339 biçimi

    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
    

    Artıları:

    • TZ'yi dikkate alır.
    • "Tüm insanlar" tarafından kolayca okunabilir.
    • Tarih / saati önek / sonekten ayırabilir.
    • Yukarıdakilerden bazıları $ ile oluşturulabilir (tarih --iso = {saat, saniye})

    Eksileri:

    • Zaman sürümlerinde boşluklar vardır (bu, tüm kodların nefret edeceği anlamına gelir).
    • scp / katran / vb. şu ':' karakterlerini sevmeyecek.
  4. Tireleri seviyorum:

    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
    

    Artıları:

    • temelde biraz daha güzel syslog / vb. varyant.

    Eksileri:

    • Bir sürü '-' karakter.
    • TZ olduğunu varsayar.
  5. Uzantıları olan kısa çizgileri seviyorum:

    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
    

    Artıları:

    • temelde biraz daha hoş "Tireleri seviyorum" varyantı.
    • Tuhaf karakterler yok.
    • Tarih / saati önek / sonekten ayırabilir.

    Eksileri:

    • '.' burada biraz geleneksel değil.
    • TZ olduğunu varsayar.

... bu yüzden herkes bir tercih ve bir sebep ya da birden fazla şey vermek istiyor (Örn. makineyi yerel olarak kalmak% 95 + ise TZ'yi umursamıyorum, ama değilse çok önemsiyorum).

Veya açıkçası, yukarıdaki listede olmayan bir şey.



Sorduğunuz asıl soru nedir?
Ward - Monica'yı Yeniden Başlat

Sorumun izin verildiğini düşündüğüm "faviourite XYZ nedir" yerine "XYZ yapmak için en iyi uygulama nedir" olduğunu düşündüm.
James Antill

Yanıtlar:


19
  1. ISO 8601 formatına mümkün olduğunca uyulmalıdır, çünkü bir standarda en yakın şeydir.
  2. 'T' gerçekten ondan kurtulmayı garanti etmek için bir engel olmak için yeterli değil.
  3. ':' Lar potansiyel olarak katildir, bu yüzden bunlardan kaçınılmalıdır.
  4. Başkalarının cevaplarında belirtilen nedenlerden dolayı UTC (veya 'Z' zamanı) kullanılmalıdır.
  5. ISO 8601, kullanılması gereken UTC ('Z' zamanı) kullanan bir format içerir.
  6. ISO 8601, kullanılması gereken ':' karakterini kullanmayan bir biçim içerir.

Yani ... örnek 'en iyi' tarih-saat formatları:

  1. 20120317T1748Z

    • ISO 8601 uyarınca% 100
    • yalnızca alfasayısal karakterler (çok sysadmin uyumlu)
    • Okuması en hızlı değil, kesinlikle meslekten kimse tarafından okunabilir
  2. 2012-03-17T1748Z

    • tarih kısmı ISO 8601'e uygundur
    • zaman bölümü ISO 8601'e uygundur
    • tarih ve saat arasındaki geçiş ISO 8601'e uygundur
    • ISO 8601 'genişletilmiş' biçimini (kısa çizgilerle tarih, iki nokta üst üste olan zaman) ISO 8601 'temel' biçimiyle (kısa çizgi olmadan tarih, iki nokta üst üste olmayan zaman) karıştırır;
    • '-' karakteri ekler (vs 1.)
    • ev sahibinin okuması biraz daha kolay (vs 1.)
  3. 2012-03-17--1748Z

    • tarih kısmı ISO 8601'e uygundur
    • zaman bölümü ISO 8601'e uygundur
    • tarih ve saat arasındaki geçiş ISO 8601'e uygun değil
    • ISO 8601 'genişletilmiş' biçimini ISO 8601 'temel' biçimiyle karıştırır
    • yerleşimcinin okuması biraz daha kolay (vs 1. ve 2.)
    • yeni karakter yok (vs 2.)

Ben tamamen kısmi IAW olduğu için 1. kısmi, ama diğerleri yakın.

Not :: Tabii ki gerektiği kadar saniye ekleyin. ... ve evet, saniye (hatta dakika) olsun veya olmasın hepsi IAW ISO 8601. :)


2

Bir saat dilimi eklemem, yalnızca evrensel saati kullanmam. Karışıklık olabilirse, -UTC soneki ekleyebilirsiniz. Bir saat dilimi belirtirseniz, birisi ona bağlı olabilir. DST değişikliklerinin veya DST kaymalarının bazı işlemlerde tahribat yarattığı veya bazı sistemlerde işlemenin farklı olduğu garip uç durumlar olacaktır, çünkü DST yapılandırmaları güncel değildir. UTC her yerde aynıdır.

Tirelerin dosya verilerinin tarihini daha kolay farketmesi açısından dosya adını daha okunabilir hale getirdiğini düşünüyorum. İkinci saniyeden daha düşük bir hassasiyet eklemek istiyorsanız, bu genellikle .nnnnn olur.

Şahsen T.'yi sevmiyorum. Dosya adında iki nokta üst üste kullanılması diğer dosya sistemleriyle birlikte çalışabilirliği etkileyebilir.


-1
  1. Ben de zaman dilimleri içermezdim. Günlükleri işleyen komut dosyalarınız / araçlarınız bunu bilmelidir. Ayrıca yaz / kış saati değişiklikleri konusunda - sunucunuzu her zaman UTC'de her zaman sabit tutmanızı tavsiye ederim. Temel sunucu saat dilimi ve üzerinde çalışan bir veritabanının (değişmemiş) saat dilimi arasındaki ani bir fark baş ağrısına neden olabilir ;-).

  2. Günlük dosyası adlandırma ile ilgili olarak - biliyorum, birçok kişi bunu sevmiyor, ancak basit tutmayı seviyorum:

p-%s-type.log = p-1311116459-type.log

Artıları:

  • ortak payda
  • daha fazla komut dosyasında kullanımı çok kolay

Eksileri:

  • insan tarafından okunamaz

İş arkadaşlarının (hangi nedenle olursa olsun) günlükleri manuel olarak kontrol etmesi gereken makinelerde bu varyant için günlük olarak döndüm:

p-%Y-%m-%d-type.log = p-2011-07-20-type.log

Saygılarımla

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.