Tiedän vain, että ls -t ja ls -f erilaista tiedostojen ja alihakemistojen lajittelu hakemiston alla.

  • Mitkä ovat tiedoston aikaleiman, muokkausajan ja luodun ajan erot?
  • Kuinka saada ja muuttaa tällaista tietoa komennoilla?
  • Millaista tietoa ihmisten mielestä tiedosto on ”uudempi” kuin toinen?
  • Mitä erilaisten tietojen muuttaminen ei tee tiedostosta erilaista?

Näin esimerkiksi jonkun kirjoittaneen:

Oletuksena rsync-ohjelma etsii vain, ovatko tiedostot erikokoisia ja aikaleimattuja. Se ei välitä mikä tiedosto on uudempi, jos se on erilainen, se korvataan. Voit välittää ”–update” – lipun rsync: lle, mikä aiheuttaa sen, että se ohittaa kohdetiedostot, jos ne ovat uudempia kuin lähteessä oleva tiedosto, mutta vain niin kauan kuin ne ovat samantyyppisiä tiedostoja. Tämä tarkoittaa sitä, että jos esimerkiksi lähdetiedosto on tavallinen tiedosto ja kohde on symlinkki, kohdetiedosto korvataan aikaleimasta riippumatta.

Tarkoittaako sivutiedostossa tiedostotyyppi tässä vain tavallista tiedostoa ja simlink-linkkiä, ei tyyppiä, kuten pdf, jpg, htm, txt jne?

Kommentit

Vastaa

”Aikaleimoja” on 3 erilaista:

  • Pääsy – viimeinen tiedoston luettu aika
  • Muokkaa – viimeinen kerta, kun tiedostoa on muokattu (sisältöä on muokattu)
  • Muuta – viimeksi muutettu tiedoston metatietoja (esim. käyttöoikeudet)

Näyttääksesi nämä tiedot, voit käyttää stat , joka on osa ytimistä.

stat näyttää myös lisää tietoja, kuten laite, inodit, linkit jne.

Muista, että tällaiset tiedot riippuvat suuresti tiedostojärjestelmästä ja asennusvaihtoehdoista. Esimerkiksi, jos asennat osion noatime -vaihtoehdolla, pääsytietoja ei kirjoiteta.

Aikaleimojen muuttamiseen käytettävä apuohjelma olisi touch. On joitain argumentteja päättääksesi mikä aikaleima muutetaan (esim. -A pääsyajalle, -m muokkausaikalle) ja vaikuttaa uuden annetun aikaleiman jäsentämiseen. Katso lisätietoja kohdasta man touch .

touch voi olla kätevä yhdessä cp -u: n kanssa ( ”kopioi vain, kun SOURCE-tiedosto on uudempi kuin kohdetiedosto tai kun kohdetiedosto puuttuu” ) tai tyhjien merkintätiedostojen luomisesta.

Kommentit

  • Kiitos! Rsync-komennossa " -kohdassa ei ' ole väliä mikä tiedosto on uudempi ", minkälaista aikaleimaa se tarkoittaa " uudempi ". Tarkoittaako sivuhuomautuksessa sitä, että tiedostotyyppi, josta rsync välittää, tarkoittaa vain säännöllistä tiedostoa ja simlinkkiä, ei tyyppiä, kuten pdf, jpg, htm, txt jne.?
  • Viittaus yleensä tiedosto on " muokattu " aikaleima. Esimerkiksi mitä näet osoitteesta ls -l. Ja tiedostotyyppi viittaa tiedostoon symlinkiin (tai muun tyyppisiin tiedostoihin, kuten hakemistoihin tai laitteisiin). Ei mikä tiedostotyyppi on tiedosto (teksti vs. JPEG jne.).
  • @Tim Tässä yhteydessä se ' s muokattu aikaleima; rsync sanoo, että kun se ' päättää, pitäisikö sen varmuuskopioida tiedosto, se ei ' t tarkista, onko lähdetiedosto on muokattu viime aikoina kuin nykyistä varmuuskopiota (mikä on yhteistä varmuuskopiointiohjelmien kanssa) se vain tarkistaa, onko tiedostoilla eri kokoja tai eri muokkausaikoja, ja varmuuskopioi, jos on
  • Ja mistä tiedän, milloin tiedosto luotiin ensimmäisenä? Säilytetäänkö näitä tietoja lainkaan tai menetetäänkö päivityksissä? niin sanotaan, kuinka kauan tiedosto on ollut olemassa??
  • stat (2) -sivulla kuvataan tarkemmin, milloin näitä aikaleimoja muutetaan.

Vastaus

Echoxin vastaus on kelvollinen, mutta haluan lisätä tiedostoon liittyviä tietoja luomisaika.

Tiedostojärjestelmän tuki

Jotkut tiedostojärjestelmät tukevat inodissa lisämerkintää luomisajasta (tai syntymäajasta). Tiedän, että ext4 tukee tätä ominaisuutta ja myös JFS ja BTRFS .

Useimpia työkaluja ja sovellusliittymää ei kuitenkaan ole vielä päivitetty lukemaan näitä lisätietoja.Joten vaikka se voisi olla siellä, sitä ei voida käyttää.

Esimerkiksi Ubuntu 12.04 LTS: llä saan tänään luomalleni tiedostolle seuraavan:

$ 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 [...] 

Voit nähdä, että uudemmalla stat-funktiolla on syntymäkenttä, vaikka lähtö näyttää virheelliseltä. Ja debugf-tiedostojen kautta voimme saada tiedot (crtime kuten I ”m ext4-tiedostojärjestelmässä).

statx -tuki

Kernel 4.11: n jälkeen on nyt uusi statx-järjestelmän puhelu , Y2038: n tai verkon paremman tuen lisäksi tiedostojärjestelmiin, se tuo myös muutaman lisäominaisuuden, kuten btime tai syntymäajan (luontiajan) käyttöoikeuden. Ext4: n tuen tulisi olla samassa ytimen julkaisussa 4.11.

Uusiin ytimen julkaisuihin on ollut olemassa korjauksia, jotka lisäävät tukea tähän uuteen syscalliin: esim. BTRFS ja F2FS ytimessä 4.13, SMB3 4.14, GFS2 4.15, NFS 4.16 jne.

Tuleva glibc antaa toiminnon kutsun kysyäksesi tämän käyttöliittymän (katso Phoronix-uutisia glibc statx -tuesta ). Joten voimme odottaa tämän ominaisuuden tuen käyttäjäavaruudessa melko pian.

Kommentit

  • Tiedätkö, pysyykö btime ennallaan, kun Windowsin tiedostot (Luominen aika) siirretään ext4: ään ja päinvastoin, kuten mtime?
  • @paradroid anteeksi, en tiedä vastausta. Jos tarkoitat Linuxissa kopioidessasi tiedostoa NTFS: stä ext4: ään, sinun on etsittävä NTFS-ohjainta, jos se tukee luontiaikaa. Jos tarkoitat Windowsin alla, sinun on etsittävä Windowsin ext4-ohjainta.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *