Ș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

  • Vezi și askubuntu.com/questions/62492/…
  • 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

    • Mulțumesc! Pentru comanda rsync, în ” nu ‘ nu îi pasă care fișier este mai recent „, în ceea ce privește ce tip de marcaj de timp înseamnă prin ” mai nou „. De asemenea, într-o notă laterală, tipul de fișier care îi pasă de rsync înseamnă doar fișier obișnuit și simlink, nu tipul, cum ar fi pdf, jpg, htm, txt etc.?
    • În general, referire la ora un fișier este ” modificat ” marcaj de timp. De exemplu, ceea ce vedeți din 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.).
    • @Tim În acest context, ‘ s marca temporală modificată; rsync spune că atunci când ‘ decide dacă ar trebui să facă o copie de rezervă a unui fișier, nu ‘ verifică dacă fișierul sursă a fost modificat mai recent decât backupul existent (ceea ce este comun cu programele de backup); verifică doar dacă fișierele au dimensiuni diferite sau timpi de modificare diferiți și face backup în caz afirmativ
    • Și cum știu când a fost creat fișierul mai întâi? Această informație este păstrată undeva sau se pierde în actualizări? ca să spunem, de cât timp există fișierul ..?
    • Pagina manuală stat (2) descrie mai detaliat când acele timestamp-uri sunt modificate.

    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.

    Lasă un răspuns

    Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *