vím jen to, že ls -t a ls -f umožňuje různé třídění souborů a podadresářů v adresáři.

  • Jaké jsou rozdíly mezi časovým razítkem, časem modifikace a časem vytvoření souboru?
  • Jak získat a změnit tyto druhy informací pomocí příkazů?
  • Pokud jde o druh informací, o kterých lidé říkají, že soubor je „novější“ než ten druhý?
  • Co Změny druhů informací nezmění soubor?

Například jsem viděl, že někdo napsal:

Ve výchozím nastavení program rsync sleduje pouze to, zda se soubory liší velikostí a časovým razítkem. Nezáleží na tom, který soubor je novější, pokud je jiný, přepíše se. Příznak „–update“ můžete předat rsync, což způsobí, že přeskočí soubory v cíli, pokud jsou novější než soubor ve zdroji, ale pouze pokud jsou stejného typu souboru. To znamená, že pokud je například zdrojový soubor běžný soubor a cíl je symbolický odkaz, bude cílový soubor přepsán bez ohledu na časové razítko.

Vedlejší poznámka, znamená zde typ souboru pouze běžný soubor a simlink, nikoli typ jako pdf, jpg, htm, txt atd.?

Komentáře

Odpověď

Existují 3 druhy „časových razítek“:

  • Přístup – poslední doba čtení souboru
  • Upravit – poslední změna souboru (obsah byl změněn)
  • Změna – poslední změna metadat souboru (např. oprávnění)

K zobrazení těchto informací můžete použít stat , která je součástí z coreutils.

stat vám ukáže i několik dalších informace, jako je zařízení, inody, odkazy atd.

Pamatujte, že tento druh informací do značné míry závisí na souborovém systému a možnostech připojení. Pokud například připojíte oddíl pomocí možnosti noatime, nebudou zapsány žádné informace o přístupu.

Nástroj pro změnu časových razítek by byl touch. Existuje několik argumentů, které rozhodují o tom, které časové razítko se má změnit (např. -A pro čas přístupu, -m pro čas modifikace) a ovlivnit analýzu nového daného časového razítka. Další podrobnosti najdete v man touch .

touch se může hodit v kombinaci s cp -u ( „zkopírovat pouze v případě, že je soubor SOURCE novější než cílový soubor nebo pokud cílový soubor chybí“ ) nebo pro vytvoření prázdných souborů značek.

Komentáře

  • Děkujeme! U příkazu rsync v " nezáleží ' na tom, který soubor je novější ", pokud jde o druh časového razítka, znamená to o " novější ". Vedle toho znamená, že typ souboru, o který se rsync stará, znamená pouze běžný soubor a simlink, nikoli typ jako pdf, jpg, htm, txt atd.?
  • Obecně odkaz na čas soubor je " upravený " časové razítko. Například to, co vidíte z ls -l. A typ souboru odkazuje na soubor vs. symbolický odkaz (nebo jiné typy souborů, jako jsou adresáře nebo zařízení). Ne jaký je typ dat v souboru (text vs. jpeg atd.).
  • @Tim V tomto kontextu to ' je upravená časová značka; rsync říká, že když ' s rozhoduje, zda má zálohovat soubor, ' nekontroluje, zda je zdrojový soubor byl nedávno upraven než stávající záloha (což je u zálohovacích programů běžné); pouze zkontroluje, zda mají soubory různé velikosti nebo různé časy úprav, a pokud ano, zálohuje je.
  • A jak zjistím, kdy byl soubor vytvořen jako první? Jsou tyto informace vůbec někde udržovány nebo jsou ztraceny v aktualizacích? řekněme, jak dlouho soubor existuje ..?
  • Manuální stránka stat (2) podrobněji popisuje, kdy tyto časové značky jsou změněny.

Odpověď

Odpověď echoxu je platná, ale chci přidat informace týkající se souboru čas vytvoření.

Podpora systému souborů

Některé systémy souborů podporují další položku v inodu týkající se času vytvoření (nebo doby narození). Vím, že ext4 podporuje tuto funkci a také JFS a BTRFS .

Většina nástrojů a rozhraní API však dosud nebyla aktualizována, aby si přečetla tyto další informace.Takže i když to tam může být, není to přístupné.

Například na Ubuntu 12.04 LTS dostanu za soubor, který jsem dnes vytvořil, následující:

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

Vidíte, že novější funkce stat má rodné pole, i když výstup se zdá být nesprávný. A prostřednictvím debugfs můžeme získat informace (crtime, protože jsem v systému souborů ext4).

podpora statx

Od jádra 4.11 nové systémové volání statx nyní existuje , navíc k lepší podpoře Y2038 nebo sítě souborové systémy, přináší také několik dalších funkcí, jako je přístup btime nebo čas narození (čas vytvoření). Podpora pro ext4 by měla být ve stejném vydání jádra 4.11.

Existovaly opravy pro přidání podpory pro tento nový syscall v pozdějších vydáních jádra: např. BTRFS a F2FS v jádře 4.13, SMB3 v 4.14, GFS2 v 4.15, NFS v 4.16 atd.

Připravovaný glibc poskytne volání funkce pro dotaz na toto rozhraní (viz Phoronix novinky o podpoře glibc statx ). Můžeme tedy očekávat podporu této funkce v uživatelském prostoru velmi brzy.

Komentáře

  • Víte, jestli btime zůstane beze změny, když soubory ze systému Windows (vytvoření time) jsou přesunuty na ext4 a naopak, jako mtime?
  • @paradroid promiň, neznám odpověď. Pokud máte na mysli Linux pod kopírováním souboru z NTFS na ext4, budete muset hledat ovladač NTFS, pokud podporuje čas vytvoření. Pokud máte na mysli Windows, budete muset hledat ovladač ext4 pro Windows.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *