GNU/Linux >> Znalost Linux >  >> Linux

Porovnat adresáře, ale ne obsah souborů?

S

diff -r

Mohu tento úkol udělat, ale trvá to tak dlouho, protože diff zkontroluje obsah souboru.

Chci něco, co určí, že dva soubory jsou stejné, pokud jde o jejich velikost, poslední úpravy atd. Ale žádná kontrola souboru kousek po kousku (například video trvá tak dlouho).

Existuje nějaký jiný způsob?

Přijatá odpověď:

rsync ve výchozím nastavení porovnává pouze metadata souborů. to znamená časové razítko, velikost a atributy. mezi ostatními. ale ne obsah souborů.

rsync -n -a -i --delete source/ target/

vysvětlení:

  • -n ve skutečnosti nekopírujte ani neodstraňujte <– TO JE DŮLEŽITÉ!!1
  • -a porovnat všechna metadata souboru, jako je časové razítko a atributy
  • -i vytisknout jeden řádek informací na soubor
  • --delete také nahlásit soubory, které nejsou ve zdroji

poznámka:je důležité připojit názvy adresářů lomítkem. toto je věc rsync.

možnosti s jedním písmenem můžete zkrátit takto

rsync -nai --delete source/ target/

pokud chcete také vidět řádky vytištěné pro soubory, které jsou identické, zadejte -i dvakrát

rsync -naii --delete source/ target/

příklad výstupu:

*deleting   removedfile   (file in target but not in source)
.d..t...... ./            (directory with different timestamp)
>f.st...... modifiedfile  (file with different size and timestamp)
>f+++++++++ newfile       (file in source but not in target)
.f          samefile      (file that has same metadata. only with -ii)

Pamatujte, že rsync porovnává pouze metadata. to znamená, že pokud se obsah souboru změnil, ale metadata zůstala stejná, rsync ohlásí, že soubor je stejný. to je nepravděpodobný scénář. takže buď důvěřujte tomu, že když jsou metadata stejná, pak jsou stejná data, nebo musíte porovnávat data souboru bit po bitu.

bonus:informace o postupu najdete zde:Odhadnout čas nebo práci zbývající do dokončení pro rsync?


Linux
  1. Jak porovnat obsah dvou tarballů

  2. Vypsáno jádro, ale soubor jádra není v aktuálním adresáři?

  3. Proč nelze pomocí inodu manipulovat se soubory?

  1. Odstraňte pouze soubory v adresáři v adresářích linux NOT

  2. bash - odstraní všechny adresáře (a obsah), ale ne soubory v pwd

  3. Udělte oprávnění ke spuštění adresářům, ale ne souborům

  1. Snadný způsob, jak skrýt soubory a adresáře v Linuxu

  2. Přesouvat soubory čtením jejich názvů souborů do různých adresářů?

  3. Linux jak kopírovat, ale nepřepisovat?