फ़ाइल नामों का पसंदीदा प्रारूप जिसमें टाइमस्टैम्प शामिल है


16

जैसा कि हम सभी जानते हैं कि "यूनिक्स" में '/' और '\ 0' को छोड़कर किसी भी फाइल में कुछ भी हो सकता है, हालांकि sysadmins के लिए बहुत छोटी प्राथमिकता है, मुख्य रूप से इनपुट के रूप में रिक्त स्थान को पसंद नहीं करने के कारण ... और चीजों का एक गुच्छा दूसरों के बीच ':' और '@' के लिए एक विशेष अर्थ।

हाल ही में मैंने अभी तक एक और मामला देखा है जहाँ एक फ़ाइलनाम में टाइमस्टैम्प का उपयोग किया गया था, और इसे "बेहतर" बनाने के लिए अलग-अलग प्रारूपों के साथ खेलने के बाद मुझे लगा कि मैं एक "सर्वश्रेष्ठ अभ्यास" खोजने की कोशिश करूँगा, न कि मुझे देखकर। मैं यहाँ पूछना चाहता हूँ और यह देखना चाहता हूँ कि लोग क्या सोचते हैं।

संभव "सामान्य" समाधान (पी = उपसर्ग और एस = प्रत्यय):

  1. 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
    

    पेशेवरों:

    • यह "सामान्य" है, इसलिए "सबसे अच्छा" "सर्वश्रेष्ठ" से बेहतर हो सकता है।
    • कोई अजीब चरित्र नहीं।
    • हर चीज से "तारीख / समय बूँद" में अंतर करना आसान है।

    विपक्ष:

    • दिनांक केवल संस्करण को पढ़ना आसान नहीं है, और समय सहित मेरी आँखें रक्तस्राव और सेकंड बनाती हैं और साथ ही सिर्फ "योग्य" है।
    • TZ मान लेता है।
  2. 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
    

    पेशेवरों:

    • जगह नहीं।
    • टीबी को ध्यान में रखता है।
    • मनुष्यों द्वारा पढ़ने के लिए "बुरा नहीं है" (केवल तारीख वी अच्छा है)।
    • $ द्वारा उत्पन्न किया जा सकता है (दिनांक --iso = {घंटे, मिनट, सेकंड})

    विपक्ष:

    • SCP / राल / आदि। उन ':' वर्णों को पसंद नहीं करेंगे।
    • डब्ल्यूटीएफ को देखने के लिए "सामान्य" लोगों के लिए थोड़ा सा लगता है कि 'टी' के लिए है, और अंत में क्या बात है :)।
    • बहुत सारे '-' अक्षर।
  3. 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
    

    पेशेवरों:

    • टीबी को ध्यान में रखता है।
    • आसानी से "सभी मनुष्यों" द्वारा पढ़ा जा सकता है।
    • उपसर्ग / प्रत्यय से तिथि / समय को अलग कर सकते हैं।
    • उपरोक्त में से कुछ $ (दिनांक --iso = {घंटे, सेकंड}) के साथ उत्पन्न हो सकते हैं

    विपक्ष:

    • समय संस्करणों में स्थान है (जिसका अर्थ है कि सभी कोड इसे नफरत करेंगे)।
    • SCP / राल / आदि। उन ':' वर्णों को पसंद नहीं करेंगे।
  4. मुझे हाइफ़न पसंद है:

    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
    

    पेशेवरों:

    • मूल रूप से थोड़े अच्छे अच्छे श्लोग / आदि। संस्करण।

    विपक्ष:

    • बहुत सारे '-' अक्षर।
    • TZ मान लेता है।
  5. मुझे हाइफ़न पसंद हैं, एक्सटेंशन के साथ:

    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
    

    पेशेवरों:

    • मूल रूप से थोड़ा सा अच्छा "I love hyphens" वैरिएंट है।
    • कोई अजीब चरित्र नहीं।
    • उपसर्ग / प्रत्यय से तिथि / समय को अलग कर सकते हैं।

    विपक्ष:

    • का उपयोग करते हुए। ' यहाँ कुछ गैर-पारंपरिक है।
    • TZ मान लेता है।

... इसलिए कोई भी वरीयता और एक कारण देना चाहता है, या एक से अधिक (जैसे कि टीबी के बारे में परवाह नहीं है अगर यह मशीन स्थानीय रहने के लिए 95 +% है, लेकिन बहुत अधिक देखभाल करें यदि यह नहीं है)।

या, जाहिर है, उपरोक्त सूची में कुछ नहीं।



वास्तविक सवाल क्या आप पूछ रहे हैं?
वार्ड -

मुझे लगा कि मेरा प्रश्न अधिक "XYZ करने के लिए सबसे अच्छा अभ्यास क्या है" के बजाय "आपका faviourite XYZ" क्या है, जिसे मैंने मान लिया था?
जेम्स एंटिल

इसे भी देखें: programmers.stackexchange.com/questions/61683/…
Zero3

जवाबों:


19
  1. आईएसओ 8601 प्रारूप का यथासंभव पालन किया जाना चाहिए, क्योंकि यह एक मानक के लिए निकटतम चीज है।
  2. 'टी' वास्तव में वारंट से छुटकारा पाने के लिए एक ठोकर का हिस्सा नहीं है।
  3. संभावित हत्यारे हैं, इसलिए उन लोगों से बचा जाना चाहिए।
  4. दूसरों के उत्तर में वर्णित कारणों के लिए, यूटीसी (या 'जेड' समय) का उपयोग किया जाना चाहिए।
  5. आईएसओ 8601 में यूटीसी ('जेड' समय) का उपयोग करने वाला एक प्रारूप शामिल है, जिसका उपयोग किया जाना चाहिए।
  6. आईएसओ 8601 में एक प्रारूप शामिल है जो ':' वर्ण का उपयोग नहीं करता है, जिसका उपयोग किया जाना चाहिए।

तो ... नमूना 'सर्वश्रेष्ठ' दिनांक-समय प्रारूप:

  1. 20120317T1748Z

    • आईएसओ 8601 के अनुसार 100%
    • अल्फ़ान्यूमेरिक वर्ण केवल (बहुत sysadmin के अनुकूल)
    • पढ़ने के लिए तेज नहीं है, लेकिन निश्चित रूप से लेपर्सन द्वारा पठनीय है
  2. 2012-03-17T1748Z

    • दिनांक भाग आईएसओ 8601 के अनुसार है
    • समय भाग आईएसओ 8601 के अनुसार है
    • तिथि और समय के बीच संक्रमण आईएसओ 8601 के अनुसार है
    • आईएसओ 8601 'विस्तारित' प्रारूप (हाइफ़न के साथ दिनांक, कॉलोन के साथ समय) को मिलाता है, आईएसओ 8601 'बुनियादी' प्रारूप (हाइफ़न के बिना दिनांक, कॉलन के बिना समय) के साथ, जो संभवतः बहुत सही नहीं है
    • कहते हैं - 'चरित्र (बनाम 1.)
    • पढ़ने वाले के लिए थोड़ा आसान (बनाम 1.)
  3. 2012-03-17--1748Z

    • दिनांक भाग आईएसओ 8601 के अनुसार है
    • समय भाग आईएसओ 8601 के अनुसार है
    • दिनांक और समय के बीच संक्रमण आईएसओ 8601 के अनुसार नहीं है
    • आईएसओ 8601 'विस्तारित' प्रारूप को आईएसओ 8601 'मूल' प्रारूप के साथ मिलाता है
    • पढ़ने वाले के लिए थोड़ा आसान (बनाम 1. और 2.)
    • कोई नया वर्ण नहीं (बनाम 2.)

मैं 1 से आंशिक हूं। चूंकि यह पूरी तरह से IAW मानक है, लेकिन अन्य करीब हैं।

नोट :: आवश्यक रूप से सेकंड जोड़ें। ... और हाँ, सेकंड के साथ या बिना (या मिनट भी) सभी IAW ISO 8601 है। :)


2

मैं एक समय क्षेत्र शामिल नहीं करूंगा, केवल सार्वभौमिक समय का उपयोग करूंगा। यदि भ्रम हो सकता है, तो आप एक -UTC प्रत्यय जोड़ सकते हैं। यदि आप एक समय क्षेत्र निर्दिष्ट करते हैं, तो कोई इस पर निर्भर हो सकता है। और अजीब धार के मामले होंगे जहां डीएसटी परिवर्तन या डीएसटी बदलाव कुछ प्रसंस्करण पर कहर बरपाते हैं, या प्रसंस्करण कुछ प्रणालियों पर अलग है क्योंकि उनका डीएसटी कॉन्फ़िगरेशन अप टू डेट नहीं है। यूटीसी हमेशा हर जगह एक जैसा होता है।

मुझे लगता है कि हाइफ़न फ़ाइल का नाम अधिक पठनीय बनाते हैं, इस अर्थ में कि यह फ़ाइल डेटा के डेटाटाइम को समझने में आसान बनाता है। यदि आप उप-दूसरी परिशुद्धता को शामिल करना चाहते हैं, तो यह आमतौर पर .nnnnn है।

मुझे व्यक्तिगत रूप से टी पसंद नहीं है। एक फ़ाइल नाम में एक कोलन का उपयोग करना अन्य फाइल सिस्टम के साथ अंतर को प्रभावित कर सकता है।


-1
  1. मैं भी टाइमज़ोन को शामिल नहीं करूंगा। आपकी स्क्रिप्ट / उपकरण जो लॉग को संसाधित करते हैं, उनके बारे में पता होना चाहिए। गर्मी / सर्दियों के समय में परिवर्तन के संबंध में - मैं आपके सर्वर को हमेशा यूटीसी पर हर समय नियत रखने की सलाह दूंगा। बेस सर्वर टाइमज़ोन और उस पर चलने वाले डेटाबेस के (अपरिवर्तित) टाइमज़ोन के बीच अचानक अंतर सिरदर्द पैदा कर सकता है; ;-)

  2. लॉग फ़ाइल नामकरण के बारे में - मुझे पता है, कई इसे पसंद नहीं करते हैं, लेकिन मैं इसे सरल रखना पसंद करता हूं:

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

पेशेवरों:

  • आम विभाजक
  • आगे स्क्रिप्टिंग में उपयोग करने के लिए बहुत आसान है

विपक्ष:

  • मानव पठनीय नहीं

उन मशीनों पर जहां सहकर्मियों को (जो भी कारण से) लॉग की जांच करने की आवश्यकता होती है, मैं मैन्युअल रूप से इस संस्करण के लिए गया था, रोजाना घुमाता हूं:

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

सादर

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.