Udostępnij przez


GnuTarEntry i PaxTarEntry domyślnie wykluczają atime i ctime

Począwszy od wersji .NET 10, GnuTarEntry oraz PaxTarEntry już nie ustawiają automatycznie pól czasu dostępu (atime) i czasu zmiany (ctime) podczas tworzenia nowych wpisów. Te pola są problematyczne w wpisach tar, ponieważ nie wszystkie czytniki tar je obsługują. Pola będą nadal zachowywane podczas odczytu, a ty możesz je bezpośrednio ustawić. Nie zostaną one jednak ustawione na istniejących wpisach, które początkowo ich nie miały, ani w przypadku konwertowania z innych typów wpisów.

Zachowanie metody TarEntry.ModificationTime jest niezmienione. Jest inicjowany na UtcNow dla wpisów tar utworzonych za pomocą konstruktora, a używa czasu modyfikacji pliku dla wpisów utworzonych na podstawie plików.

Wprowadzono inne drobne poprawki w System.Formats.Tar, aby przyznać priorytet zachowaniu wpisów przy przejściu z odczytu do zapisu bez zmiany.

Wersja wprowadzona

.NET 10

Poprzednie zachowanie

Wcześniej GnuTarEntry i PaxTarEntry, dodawały wartości atime oraz ctime podczas tworzenia nowych wpisów.

Nowe zachowanie

Począwszy od platformy .NET 10, GnuTarEntry i PaxTarEntry ustawiają atime i ctime tylko wtedy, gdy:

  • Wpis jest odczytywany z archiwum tar, który zawiera już te pola.
  • Użytkownik jawnie ustawił je przy użyciu odpowiednich właściwości.

Zachowanie TarEntry.ModificationTime pozostaje niezmienione. Jest inicjowany na DateTime.UtcNow dla wpisów tar utworzonych za pomocą konstruktora, a używa czasu modyfikacji pliku dla wpisów utworzonych na podstawie plików.

Typ zmiany przełamującej

Jest to zmiana zachowania.

Przyczyna zmiany

Ta zmiana została wprowadzona w celu zapewnienia lepszej zgodności z innymi czytnikami tar oraz poprawy możliwości konwersji plików tar w dwie strony bez ich modyfikacji.

Nie jest wymagana żadna akcja dla większości użytkowników — większość archiwów nie używa tych sygnatur czasowych.

Jeśli chcesz ustawić te pola, możesz użyć następujących interfejsów API:

Należy jednak pamiętać, że ustawienie tych pól powoduje utworzenie pliku tar, który nie jest czytelny dla wielu klientów tar.

Interfejsy API, których dotyczy problem