Định dạng ưa thích của tên tệp bao gồm dấu thời gian


16

Như chúng ta đều biết "unix" có thể có bất cứ thứ gì trong một tệp ngoại trừ '/' và '\ 0', tuy nhiên, các hệ thống có xu hướng có sở thích nhỏ hơn nhiều, chủ yếu là do không có gì giống như không gian như đầu vào ... và một loạt các thứ có một ý nghĩa đặc biệt cho ':' và '@' trong số những người khác.

Gần đây tôi đã thấy một trường hợp khác trong đó dấu thời gian được sử dụng trong tên tệp và sau khi chơi với các định dạng khác nhau một chút để làm cho nó "tốt hơn", tôi nghĩ rằng tôi đã cố gắng tìm một "cách thực hành tốt nhất", không thấy một cái mà tôi đã tìm ra Tôi chỉ hỏi ở đây và xem mọi người nghĩ gì.

Các giải pháp "phổ biến" có thể (p = tiền tố và s = ​​hậu tố):

  1. định dạng 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
    

    ưu:

    • Đó là "chung", vì vậy "đủ tốt" có thể tốt hơn "tốt nhất".
    • Không có nhân vật kỳ lạ.
    • Dễ dàng phân biệt "blob ngày / thời gian" với mọi thứ khác.

    Nhược điểm:

    • Phiên bản chỉ ngày không dễ đọc và bao gồm cả thời gian khiến mắt tôi chảy máu và giây cũng chỉ là "lol".
    • Giả sử TZ.
  2. Định dạng 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
    

    ưu:

    • Không có khoảng trắng.
    • Đưa TZ vào tài khoản.
    • Con người "không xấu" để đọc (chỉ ngày là v. Tốt).
    • Có thể được tạo bởi $ (ngày --iso = {giờ, phút, giây})

    Nhược điểm:

    • scp / tar / vv. sẽ không thích những nhân vật ':' đó.
    • Mất một chút để những người "bình thường" thấy WTF rằng 'T' là để làm gì, và điều cuối cùng là gì :).
    • Rất nhiều ký tự '-'.
  3. định dạng 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
    

    ưu:

    • Đưa TZ vào tài khoản.
    • Có thể dễ dàng được đọc bởi "tất cả mọi người".
    • Có thể phân biệt ngày / giờ với tiền tố / hậu tố.
    • Một số ở trên có thể được tạo bằng $ (ngày --iso = {giờ, giây})

    Nhược điểm:

    • Có khoảng trắng trong các phiên bản thời gian (có nghĩa là tất cả mã sẽ ghét nó).
    • scp / tar / vv. sẽ không thích những nhân vật ':' đó.
  4. Tôi yêu dấu gạch ngang:

    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
    

    ưu:

    • về cơ bản là một syslog / v.v. biến thể.

    Nhược điểm:

    • Rất nhiều ký tự '-'.
    • Giả sử TZ.
  5. Tôi yêu dấu gạch ngang, với phần mở rộng:

    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
    

    ưu:

    • về cơ bản là một biến thể "Tôi yêu dấu gạch ngang" đẹp hơn một chút.
    • Không có nhân vật kỳ lạ.
    • Có thể phân biệt ngày / giờ với tiền tố / hậu tố.

    Nhược điểm:

    • Sử dụng '.' ở đây có phần phi truyền thống.
    • Giả sử TZ.

... Vì vậy, bất cứ ai cũng muốn đưa ra một ưu tiên và một lý do, hoặc nhiều hơn một (Ví dụ: không quan tâm đến TZ nếu đó là 95 +% để giữ máy cục bộ, nhưng quan tâm rất nhiều nếu không).

Hoặc, rõ ràng, một cái gì đó không có trong danh sách trên.



Câu hỏi thực tế bạn đang hỏi là gì?
Phường - Phục hồi Monica

Tôi nghĩ rằng câu hỏi của tôi là "cách thực hành XYZ tốt nhất" hơn là "XYZ faviourite của bạn là gì", mà tôi cho là đã được cho phép?
James Antill

Câu trả lời:


19
  1. Định dạng ISO 8601 phải được tuân thủ càng nhiều càng tốt, vì đó là điều gần nhất với tiêu chuẩn.
  2. 'T' không đủ sức vấp ngã để thực sự bảo đảm thoát khỏi nó.
  3. ':' Là những kẻ giết người tiềm năng, vì vậy những kẻ đó nên tránh.
  4. Vì các lý do được đề cập trong câu trả lời của người khác, nên sử dụng UTC (hoặc 'Z').
  5. ISO 8601 bao gồm một định dạng sử dụng UTC (thời gian 'Z'), nên được sử dụng.
  6. ISO 8601 bao gồm một định dạng không sử dụng ký tự ':', nên được sử dụng.

Vì vậy, ... định dạng thời gian ngày 'tốt nhất' mẫu:

  1. 20120317T1748Z

    • 100% theo tiêu chuẩn ISO 8601
    • chỉ các ký tự chữ và số (rất thân thiện với hệ thống)
    • không phải là nhanh nhất để đọc, nhưng chắc chắn có thể đọc được bởi giáo dân
  2. 2012 / 03-17T1748Z

    • phần ngày theo tiêu chuẩn ISO 8601
    • phần thời gian phù hợp với ISO 8601
    • chuyển đổi giữa ngày và thời gian phù hợp với ISO 8601
    • trộn định dạng 'mở rộng' của ISO 8601 (ngày với dấu gạch nối, thời gian với dấu hai chấm) với định dạng 'cơ bản' của ISO 8601 (ngày không có dấu gạch ngang, thời gian không có dấu hai chấm), có vẻ không hoàn toàn đúng
    • thêm ký tự '-' (so với 1.)
    • người đọc dễ đọc hơn một chút (so với 1.)
  3. 2012/03/17--1748Z

    • phần ngày theo tiêu chuẩn ISO 8601
    • phần thời gian phù hợp với ISO 8601
    • chuyển đổi giữa ngày và thời gian không phù hợp với ISO 8601
    • trộn định dạng 'mở rộng' của ISO 8601 với định dạng 'cơ bản' của ISO 8601
    • người đọc dễ đọc hơn một chút (so với 1. và 2.)
    • không có nhân vật mới (so với 2.)

Tôi là một phần của 1. vì nó hoàn toàn IAW tiêu chuẩn, nhưng những người khác là gần.

Lưu ý :: Thêm giây khi cần thiết, tất nhiên. ... Và có, có hoặc không có giây (hoặc thậm chí vài phút) là tất cả IAW ISO 8601. :)


2

Tôi sẽ không bao gồm múi giờ, chỉ sử dụng thời gian phổ quát. Nếu có thể có sự nhầm lẫn, bạn có thể thêm hậu tố -UTC. Nếu bạn chỉ định múi giờ, ai đó có thể phụ thuộc vào nó. Và sẽ có những trường hợp cạnh kỳ lạ khi DST thay đổi hoặc DST thay đổi sự tàn phá trong một số xử lý hoặc xử lý khác nhau trên một số hệ thống vì cấu hình DST của chúng không cập nhật. UTC luôn giống nhau ở mọi nơi.

Tôi nghĩ rằng các dấu gạch ngang làm cho tên tệp dễ đọc hơn, theo nghĩa là nó giúp dễ dàng phân biệt thời gian của dữ liệu tệp. Nếu bạn muốn bao gồm độ chính xác phụ thứ hai, thường là .nnnnn.

Cá nhân tôi không thích T. Sử dụng dấu hai chấm trong tên tệp có thể ảnh hưởng đến khả năng tương tác với các hệ thống tệp khác.


-1
  1. Tôi cũng sẽ không bao gồm các múi giờ. Tập lệnh / công cụ xử lý nhật ký của bạn sẽ biết về điều đó. Ngoài ra, liên quan đến thay đổi thời gian mùa hè / mùa đông - Tôi khuyên bạn nên giữ máy chủ của mình luôn cố định tại UTC mọi lúc. Sự khác biệt đột ngột giữa múi giờ của máy chủ cơ sở và múi giờ (không thay đổi) của cơ sở dữ liệu chạy trên nó có thể dẫn đến đau đầu ;-).

  2. Về đặt tên tệp nhật ký - Tôi biết, nhiều người không thích nó, nhưng tôi muốn giữ cho nó đơn giản:

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

ưu:

  • mẫu số chung
  • rất dễ sử dụng trong kịch bản tiếp theo

Nhược điểm:

  • không thể đọc được

Trên các máy mà đồng nghiệp (vì bất kỳ lý do gì) cần kiểm tra nhật ký thủ công, tôi đã sử dụng biến thể này, xoay vòng hàng ngày:

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

Trân trọng

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.