Format nama file yang disukai yang termasuk cap waktu

16

Seperti yang kita semua tahu "unix" dapat memiliki apa pun dalam file kecuali '/' dan '\ 0', namun sysadmin cenderung memiliki preferensi yang jauh lebih kecil, terutama karena tidak ada yang menyukai spasi sebagai input ... dan banyak hal yang memiliki arti khusus untuk ':' dan '@' antara lain.

Baru-baru ini saya telah melihat kasus lain di mana cap waktu digunakan dalam nama file, dan setelah bermain dengan format yang berbeda sedikit untuk membuatnya "lebih baik" Saya pikir saya akan mencoba untuk menemukan "praktik terbaik", tidak melihat yang saya pikir Saya hanya bertanya di sini dan melihat apa yang dipikirkan orang.

Kemungkinan solusi "umum" (p = awalan dan s = akhiran):

  1. syslog / logrotate / DNS like format:

    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
    

    pro:

    • Ini "biasa", jadi "cukup baik" mungkin lebih baik daripada "terbaik".
    • Tidak ada karakter aneh.
    • Mudah untuk membedakan "gumpalan tanggal / waktu" dari yang lainnya.

    kontra:

    • Versi hanya tanggal tidak mudah dibaca, dan termasuk waktu membuat mata saya berdarah dan detik juga hanya "lol".
    • Asumsikan TZ.
  2. 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
    

    pro:

    • Tidak ada ruang.
    • Mempertimbangkan TZ.
    • Apakah "tidak buruk" untuk dibaca oleh manusia (hanya tanggal v. Baik).
    • Dapat dihasilkan oleh $ (tanggal --iso = {jam, menit, detik})

    kontra:

    • scp / tar / dll. tidak akan menyukai karakter ':' itu.
    • Butuh sedikit waktu untuk orang "normal" untuk melihat WTF untuk 'T', dan untuk apa akhirnya :).
    • Banyak karakter '-'.
  3. 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
    

    pro:

    • Mempertimbangkan TZ.
    • Dapat dengan mudah dibaca oleh "semua manusia".
    • Dapat membedakan tanggal / waktu dari awalan / akhiran.
    • Beberapa hal di atas dapat dihasilkan dengan $ (tanggal --iso = {jam, detik})

    kontra:

    • Memiliki spasi di versi waktu (yang berarti semua kode akan membencinya).
    • scp / tar / dll. tidak akan menyukai karakter ':' itu.
  4. Saya suka tanda hubung:

    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
    

    pro:

    • pada dasarnya syslog sedikit lebih bagus / etc. varian.

    kontra:

    • Banyak karakter '-'.
    • Asumsikan TZ.
  5. Saya suka tanda hubung, dengan ekstensi:

    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
    

    pro:

    • pada dasarnya varian "I love hyphens" yang sedikit lebih bagus.
    • Tidak ada karakter aneh.
    • Dapat membedakan tanggal / waktu dari awalan / akhiran.

    kontra:

    • Menggunakan '.' di sini agak non-tradisional.
    • Asumsikan TZ.

... jadi siapa pun yang ingin memberikan preferensi dan alasan, atau lebih dari satu (Misalnya. tidak peduli tentang TZ jika 95% adalah tetap mesin lokal, tetapi sangat peduli jika tidak).

Atau, jelas, sesuatu yang tidak ada dalam daftar di atas.

James Antill
sumber
Silakan lihat serverfault.com/faq#dontask
John Gardeniers
Apa pertanyaan sebenarnya yang Anda tanyakan?
Bangsal - Reinstate Monica
Saya pikir pertanyaan saya lebih "apa praktik terbaik untuk melakukan XYZ" daripada "apa faviourite XYZ Anda", yang saya anggap diizinkan?
James Antill

Jawaban:

19
  1. Format ISO 8601 harus dipatuhi sebanyak mungkin, karena merupakan hal yang paling dekat dengan standar.
  2. 'T' tidak cukup sebagai batu sandungan untuk benar-benar menjamin untuk menyingkirkannya.
  3. Tanda ':' berpotensi membunuh, jadi itu harus dihindari.
  4. Untuk alasan yang disebutkan dalam jawaban orang lain, waktu UTC (atau 'Z') harus digunakan.
  5. ISO 8601 menyertakan format menggunakan UTC (waktu 'Z'), yang harus digunakan.
  6. ISO 8601 menyertakan format yang tidak menggunakan karakter ':', yang harus digunakan.

Jadi ... contoh format waktu tanggal 'terbaik':

  1. 20120317T1748Z

    • 100% sesuai dengan ISO 8601
    • hanya karakter alfanumerik (sangat ramah sysadmin)
    • bukan yang tercepat untuk dibaca, tetapi tentu bisa dibaca oleh orang awam
  2. 2012-03-17T1748Z

    • porsi tanggal sesuai dengan ISO 8601
    • porsi waktu sesuai dengan ISO 8601
    • transisi antara tanggal dan waktu sesuai dengan ISO 8601
    • mencampur format 'extended' ISO 8601 (tanggal dengan tanda hubung, waktu dengan titik dua) dengan format 'dasar' ISO 8601 (tanggal tanpa tanda hubung, waktu tanpa tanda titik dua), yang kemungkinan besar kurang tepat
    • menambahkan karakter '-' (vs 1.)
    • sedikit lebih mudah bagi orang awam untuk membaca (vs 1.)
  3. 2012-03-17--1748Z

    • porsi tanggal sesuai dengan ISO 8601
    • porsi waktu sesuai dengan ISO 8601
    • transisi antara tanggal dan waktu tidak sesuai dengan ISO 8601
    • mencampur format 'diperpanjang' ISO 8601 dengan format 'dasar' ISO 8601
    • sedikit lebih mudah bagi orang awam untuk membaca (ayat 1. dan 2.)
    • tidak ada karakter baru (vs 2.)

Saya sebagian ke 1. karena sepenuhnya IAW standar, tetapi yang lain dekat.

Catatan :: Tambahkan detik seperlunya, tentu saja. ... dan ya, dengan atau tanpa detik (atau bahkan beberapa menit) adalah semua IAW ISO 8601. :)

SAYA
sumber
2

Saya tidak akan memasukkan zona waktu, hanya menggunakan waktu universal. Jika mungkin ada kebingungan, Anda bisa menambahkan akhiran -UTC. Jika Anda menentukan zona waktu, seseorang mungkin bergantung padanya. Dan akan ada kasus tepi aneh di mana perubahan DST atau pergeseran DST mendatangkan malapetaka pada beberapa pemrosesan, atau pemrosesan berbeda pada beberapa sistem karena konfigurasi DST mereka tidak up to date. UTC selalu sama di mana-mana.

Saya pikir tanda hubung membuat nama file lebih mudah dibaca, dalam arti bahwa membuatnya lebih mudah untuk membedakan datetime dari data file. Jika Anda ingin memasukkan ketepatan sub-detik, biasanya itu adalah .nnnnn.

Saya pribadi tidak suka T. Menggunakan titik dua dalam nama file dapat memengaruhi interoperabilitas dengan sistem file lainnya.

Greg Askew
sumber
-1
  1. Saya juga tidak akan memasukkan zona waktu. Script / alat Anda yang memproses log harus tahu tentang itu. Juga mengenai perubahan waktu musim panas / musim dingin - Saya sarankan untuk menjaga server Anda selalu diperbaiki di UTC sepanjang waktu. Perbedaan mendadak antara zona waktu server dasar dan zona waktu (tidak berubah) dari database yang berjalan di atasnya dapat menyebabkan sakit kepala ;-).

  2. Mengenai penamaan file log - Saya tahu, banyak yang tidak menyukainya, tapi saya ingin membuatnya tetap sederhana:

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

pro:

  • faktor persekutuan
  • sangat mudah digunakan dalam skrip selanjutnya

kontra:

  • tidak dapat dibaca manusia

Pada mesin di mana kolega (untuk alasan apa pun) perlu memeriksa log secara manual saya pergi untuk varian ini, berputar setiap hari:

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

salam Hormat

desasteralex
sumber