Po prostu wiem, że ls -t
i umożliwiają różne sortowanie plików i podkatalogów w katalogu.
- Jakie są różnice między datownikiem, czasem modyfikacji i czasem utworzenia pliku?
- Jak uzyskać i zmienić tego typu informacje za pomocą poleceń?
- Jeśli chodzi o rodzaj informacji, ludzie mówią, że plik jest „nowszy” niż inny?
- Co rodzaje informacji „zmiana nie spowoduje, że plik będzie inny?
Na przykład, ktoś napisał:
Domyślnie program rsync sprawdza tylko, czy pliki różnią się rozmiarem i datownikiem. Nie ma znaczenia, który plik jest nowszy, jeśli jest inny, zostanie nadpisany. Możesz przekazać flagę „–update” do rsync, co spowoduje pomijanie plików w miejscu docelowym, jeśli są nowsze niż plik w źródle, ale tylko pod warunkiem, że są tego samego typu. Oznacza to, że jeśli na przykład plik źródłowy jest zwykłym plikiem, a miejscem docelowym jest dowiązanie symboliczne, plik docelowy zostanie nadpisany niezależnie od sygnatury czasowej.
Na marginesie, czy typ pliku oznacza tutaj tylko zwykły plik i simlink, a nie typ, taki jak pdf, jpg, htm, txt itp.?
Komentarze
- Zobacz także askubuntu.com/questions/62492/…
Odpowiedź
Istnieją 3 rodzaje „sygnatur czasowych”:
- Dostęp – ostatni czas odczytu pliku
- Modyfikuj – ostatnia modyfikacja pliku (zmiana zawartości)
- Zmiana – ostatnia zmiana metadanych pliku (np. uprawnienia)
Aby wyświetlić te informacje, możesz użyć stat
, który jest częścią z coreutils.
stat
pokaże Ci również więcej informacje takie jak urządzenie, i-węzły, łącza itp.
Pamiętaj, że tego rodzaju informacje w dużym stopniu zależą od systemu plików i opcji montowania. Na przykład, jeśli zamontujesz partycję z opcją noatime
, żadne informacje o dostępie nie zostaną zapisane.
Narzędziem do zmiany sygnatur czasowych będzie touch
. Istnieje kilka argumentów, aby zdecydować, który znacznik czasu zmienić (np. -A dla czasu dostępu, -m dla czasu modyfikacji) i wpłynąć na parsowanie nowego danego znacznika czasu. Zobacz man touch
, aby uzyskać więcej informacji.
touch
może się przydać w połączeniu z cp -u
( „kopiuj tylko wtedy, gdy plik SOURCE jest nowszy niż plik docelowy lub gdy brakuje pliku docelowego” ) lub do tworzenia pustych plików znaczników.
Komentarze
Odpowiedź
Odpowiedź echox jest prawidłowa, ale chcę dodać informacje dotyczące pliku czas utworzenia.
Obsługa systemu plików
Niektóre systemy plików obsługują dodatkowy wpis w i-węźle dotyczący czasu utworzenia (lub czasu urodzenia). Wiem, że ext4 obsługuje tę funkcję , a także JFS i BTRFS .
Jednak większość narzędzi i API nie została jeszcze zaktualizowana, aby odczytać te dodatkowe informacje.Więc chociaż może tam być, nie jest dostępny.
Na przykład w systemie Ubuntu 12.04 LTS otrzymuję następujące informacje dla pliku, który utworzyłem dzisiaj:
$ echo Just another test > /tmp/mytest $ sleep 3 $ touch /tmp/mytest $ sleep 2 $ cat /tmp/mytest > /dev/null $ stat /tmp/mytest [...] Access: 2012-06-05 13:33:44.279774711 +0200 Modify: 2012-06-05 13:33:34.611893317 +0200 Change: 2012-06-05 13:33:34.611893317 +0200 Birth: - $ sudo debugfs -R "stat /tmp/mytest" /dev/sda1 [...] ctime: 0x4fcdee8e:91e30114 -- Tue Jun 5 13:33:34 2012 atime: 0x4fcdee98:42b417dc -- Tue Jun 5 13:33:44 2012 mtime: 0x4fcdee8e:91e30114 -- Tue Jun 5 13:33:34 2012 crtime: 0x4fcdee46:01258f1c -- Tue Jun 5 13:32:22 2012 [...]
Możesz zobaczyć, że nowsza funkcja stat ma pole urodzenia, chociaż dane wyjściowe wydają się nieprawidłowe. I poprzez debugfs możemy uzyskać informacje (crtime as I „m w systemie plików ext4).
Obsługa statx
Teraz od czasu jądra 4.11 nowe wywołanie systemowe statx , oprócz lepszej obsługi Y2038 lub sieci systemy plików, zapewnia również kilka dodatkowych funkcji, takich jak dostęp do btime
lub czasu urodzenia (czasu utworzenia). Wsparcie dla ext4 powinno być w tym samym wydaniu jądra 4.11.
Były łaty dodające obsługę tego nowego wywołania systemowego w późniejszych wydaniach jądra: np. BTRFS i F2FS w jądrze 4.13, SMB3 w 4.14, GFS2 w 4.15, NFS w 4.16, itd.
Nadchodzące glibc zapewni wywołanie funkcji do odpytywania tego interfejsu (patrz wiadomości Phoronix na temat obsługi glibc statx ). Dlatego wkrótce możemy spodziewać się obsługi tej funkcji w przestrzeni użytkownika.
Komentarze
- Czy wiesz, czy btime pozostaje nienaruszone, gdy pliki z systemu Windows (tworzenie time) są przenoszone na ext4 i odwrotnie, jak mtime?
- @paradroid przepraszam, nie znam odpowiedzi. Jeśli masz na myśli pod Linuksem podczas kopiowania pliku z NTFS do ext4, należałoby zajrzeć do sterownika NTFS, jeśli obsługuje on czas tworzenia. Jeśli masz na myśli system Windows, należałoby poszukać sterownika ext4 dla Windows.
ls -l
. A typ pliku odnosi się do pliku w porównaniu z dowiązaniem symbolicznym (lub innymi typami plików, takimi jak katalogi lub urządzenia). Nie jaki jest typ danych w pliku (tekst a jpeg itp.).