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?