Știu doar că ls -t
și ls -f
oferă o sortare diferită a fișierelor și subdirectoarelor dintr-un director.
- Care sunt diferențele dintre marcajul de timp, timpul de modificare și timpul creat al unui fișier?
- Cum să obțineți și să modificați aceste tipuri de informații prin comenzi?
- În ceea ce privește ce fel de informații spun oamenii că un fișier este „mai nou” decât celălalt?
- Ce modificările tipurilor de informații nu vor face fișierul diferit?
De exemplu, am văzut că cineva a scris:
În mod implicit, programul rsync pare doar să vadă dacă fișierele sunt diferite ca mărime și timestamp. Nu-i pasă care fișier este mai nou, dacă este diferit, acesta va fi suprascris. Puteți trece semnalul „–update” către rsync, ceea ce îl va face să sări peste fișierele de la destinație, dacă acestea sunt mai noi decât fișierul de pe sursă, dar numai atât timp cât sunt același tip de fișier. Ceea ce înseamnă acest lucru este că, dacă, de exemplu, fișierul sursă este un fișier obișnuit și destinația este un link simbolic, fișierul destinație va fi suprascris, indiferent de marca de timp.
Într-o notă laterală, tipul de fișier aici înseamnă doar fișier obișnuit și simlink, nu tipul, cum ar fi pdf, jpg, htm, txt etc.?
Comentarii
Răspuns
Există 3 tipuri de „timestamps”:
- Acces – ultimul când s-a citit fișierul
- Modificați – ultima dată când fișierul a fost modificat (conținutul a fost modificat)
- Modificați – ultima dată când s-au schimbat meta date ale fișierului (de ex. permisiuni)
Pentru a afișa aceste informații, puteți utiliza stat
care face parte din din coreutils.
stat
vă va arăta și câteva altele informații precum dispozitivul, inoduri, linkuri etc.
Amintiți-vă că acest tip de informații depinde foarte mult de sistemul de fișiere și de opțiunile de montare. De exemplu, dacă montați o partiție cu opțiunea noatime
, nu se vor scrie informații de acces.
Un utilitar pentru schimbarea marcajelor de timp ar fi touch
. Există câteva argumente pentru a decide ce marcaj de timp să se schimbe (de exemplu -a pentru timpul de acces, -m pentru timpul de modificare) și pentru a influența analiza unei noi date. Consultați man touch
pentru mai multe detalii.
touch
poate deveni la îndemână în combinație cu cp -u
( „copiați numai când fișierul SOURCE este mai nou decât fișierul de destinație sau când lipsește fișierul de destinație” ) sau pentru crearea fișierelor de marker goale.
Comentarii
Răspuns
Răspunsul echox este valid, dar vreau să adaug informații despre fișier timpul de creare.
Suport sistem de fișiere
Unele sisteme de fișiere acceptă o intrare suplimentară în inod în ceea ce privește timpul de creare (sau ora nașterii). Știu că ext4 acceptă această caracteristică și, de asemenea, JFS și BTRFS .
Cu toate acestea, majoritatea instrumentelor și API-ului nu au fost încă actualizate pentru a citi aceste informații suplimentare.Deci, chiar dacă ar putea fi acolo, „nu este accesibil.
De exemplu, pe Ubuntu 12.04 LTS primesc următoarele pentru un fișier pe care l-am creat astăzi:
$ 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 [...]
Puteți vedea că funcția statistică mai nouă are un câmp de naștere, deși ieșirea pare incorectă. Și prin debugfs putem obține informațiile (crtime ca și „m pe sistemul de fișiere ext4).
suport statx
Există acum de la Kernel 4.11 un nou apel statx , pe lângă un suport mai bun pentru Y2038 sau rețea sisteme de fișiere, aduce, de asemenea, câteva caracteristici suplimentare, cum ar fi accesul btime
sau timpul de naștere (timpul de creare). Suportul pentru ext4 ar trebui să fie în aceeași versiune a kernelului 4.11.
Au existat patch-uri pentru a adăuga suport la acest nou syscall în versiunile ulterioare ale nucleului: de ex. BTRFS și F2FS în Kernel 4.13, SMB3 în 4.14, GFS2 în 4.15, NFS în 4.16 etc.
Glibc care vine va oferi un apel funcțional pentru interogarea acestei interfețe (consultați Știri despre Phoronix despre suportul glibc statx ). Deci, ne putem aștepta la asistență pentru această caracteristică în spațiul utilizatorului destul de curând.
Comentarii
- Știți dacă btime rămâne intact atunci când fișierele din Windows (Creație time) sunt mutate pe ext4 și invers, ca mtime?
- @paradroid îmi pare rău, nu știu răspunsul. Dacă vrei să spui sub Linux când copiezi un fișier din NTFS în ext4, ar trebui să te uiți în driverul NTFS dacă acceptă timpul de creare. Dacă vrei să spui sub Windows, ar trebui să cauți în driverul ext4 pentru Windows.
ls -l
. Și tipul de fișier se referă la fișier versus link simbolic (sau alte tipuri de fișiere, cum ar fi directoare sau dispozitive). Nu care este tipul de date din fișier (text vs. jpeg etc.).