Zmiana atrybutów „Data utworzenia” i „Ostatnia modyfikacja” pliku na inny plik


40

Używam cap scalania, aby utworzyć plik pcap scalania z 15 plików. W przypadku scalonego pliku zmieniłem nazwę na pierwszy z 15 plików. Ale chciałbym również zmienić atrybuty scalonego pliku, takie jak „Data utworzenia” i „Ostatnia modyfikacja”, na atrybuty pierwszego. Czy jest coś takiego?

FILES_dcn=($(find  $dir_dcn -maxdepth 1 -type f -name "*.pcap"  -print0 | xargs -0 ls -lt | tail -15 | awk '{print $9}'))
TAG1_dcn=$(basename "${FILES_dcn[14]}" | sed 's/.pcap//')
mergecap -w  "${dir_dcn}"/merge_dcn.pcap "${FILES_dcn[@]}"
mv  "${dir_dcn}"/merge_dcn.pcap  "${dir_dcn}"/"${TAG1_dcn}".pcap

Próbuję uzyskać dostęp do scalonych plików na serwerze samby (Ubuntu). Aby funkcja ekstraktora mogła uzyskać dostęp do automatycznego wypakowywania plików do folderu D. Ale ponieważ data utworzenia zostanie zmieniona dla scalonego pliku, wyodrębnianie nie powiedzie się. Czy można to naprawić?

Odpowiedzi:


77

Możesz użyć touchpolecenia wraz z -rprzełącznikiem, aby zastosować atrybuty innego pliku do pliku.

UWAGA: W Uniksie nie ma czegoś takiego jak data utworzenia, są tylko dostęp, modyfikacja i zmiana. Zobacz pytania i odpowiedzi U&L zatytułowane: dowiedz się więcej o wieku danego pliku .

$ touch -r goldenfile newfile

Przykład

Na przykład tutaj jest taki, goldenfilektóry został utworzony z dowolnym dowolnym znacznikiem czasu.

$ touch -d 20120101 goldenfile
$ ls -l goldenfile 
-rw-rw-r--. 1 saml saml 0 Jan  1  2012 goldenfile

Teraz tworzę nowy plik:

$ touch newfile
$ ls -l newfile 
-rw-rw-r--. 1 saml saml 0 Mar  7 09:06 newfile

Teraz zastosuj goldenfileatrybuty do newfile.

$ touch -r goldenfile newfile 
$ ls -l goldenfile newfile
-rw-rw-r--. 1 saml saml 0 Jan  1  2012 newfile
-rw-rw-r--. 1 saml saml 0 Jan  1  2012 goldenfile

Teraz newfilema te same atrybuty.

Zmień przez Sambę

Właśnie potwierdziłem, że mogę to zrobić za pomocą mojego laptopa Fedora 19, który zawiera wersję 1.16.3-2 podłączoną do Thecus N12000 NAS (używa zmodyfikowanej wersji CentOS 5.x).

Byłem w stanie dotknąć pliku, jak wspomniałem powyżej, i działał tak, jak to opisałem. Twój problem jest prawdopodobnie problemem z używanymi opcjami montażu, które mogą pomijać śledzenie niektórych atrybutów czasu lub być może związane z jednym z następujących błędów:


@JishnuUNair - czy możesz sprawdzić, w jaki sposób montowany jest udział Samba (z jakimi opcjami)? Zazwyczaj można je pobrać z mountpolecenia, a następnie poszukać udziału, do którego uzyskujesz dostęp. Tylko zgadnij, ale prawdopodobnie jest montowany, użyj gvfs jako systemu plików FUSE.
slm

1
Wiele systemów plików obsługuje teraz czas tworzenia plików. W przypadku ext4 możesz go przeglądać / zmieniać debugfs(chociaż wymaga to uprawnień roota i nie ma tu zastosowania). Zobacz to pytanie - unix.stackexchange.com/questions/50177/birth-is-empty-on-ext4
Graeme

@Graeme - tak, właśnie odwoływałem się do podobnej metody przy użyciu stap : unix.stackexchange.com/questions/91197/... w pokoju rozmów .
slm

1
Chociaż Linux nie obsługuje czasu tworzenia, udział Samby może. W zależności od konfiguracji (i obsługi xattr w systemie plików), Samba ma możliwość przechowywania niektórych znaczników czasu w xattrach w Linuksie. Oznacza to, że może być w stanie wykonać czynności, których podstawowy system plików nie może - na przykład zgłosić prawidłowego (modyfikowalnego) czasu utworzenia. Niestety nie znalazłem żadnych dobrych linków do tego, jak to działa.
Peter

1
W rzeczywistości większość systemów plików Linux (np. Ext4) obsługuje teraz datę utworzenia, a Linux 4.11 będzie miał statx()wywołanie, aby je pobrać. Wreszcie.
Jez

36

Najłatwiejszy sposób - modyfikacja dostępu będzie taka sama:

touch -a -m -t 201512180130.09 fileName.ext

Gdzie:

-a = accessed
-m = modified
-t  = timestamp - use [[CC]YY]MMDDhhmm[.ss] time format

Jeśli chcesz użyć, NOWpo prostu upuść tznacznik czasu i

Aby sprawdzić, czy wszystkie są takie same: stat fileName.ext

Zobacz: dotknij człowieka


5
Jakoś na wprowadzeniu Ubuntu 14.04 -aprzedtem -mnie zmienia czasu dostępu ... położyłem go później, więc:touch -m -a -t....
Jadeye

5
-d time_stringmoże łatwiej niż -t: -d "2004-02-29 16:21:42"
yurenchen
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.