Otázka: Nedávno jsem musel zkopírovat obrovské množství souborů zabírajících úložný prostor 7 TB na jiné místo v mém boxu CentOS. Použil jsem příkaz „cp“, ale z nějakého důvodu (může to být problém se sítí) příkaz skončil po zkopírování několika souborů a adresářů. Nyní, když obnovím operaci kopírování, příkaz začne znovu kopírovat soubory, které již byly zkopírovány (což opět zabere sakra spoustu času a procesoru). Moje otázka tedy zní, mohu říci „cp ‘ k ignorování souborů a adresářů, které již byly zkopírovány (abych mohl ušetřit čas a procesor). Nějaké návrhy?
Odpověď: Můžete použít buď „cp příkaz ‘ nebo ‘rsync ‘ ke kopírování souborů.
Solution1:Nejprve uvidíme příkaz CP:
cp -u --force <src> <dst>
Zde –u možnost zkopíruje soubor pouze tehdy, je-li SOURCE soubor novější než cílový soubor nebo když cílový soubor chybí.
Poznámka :V případě, že výše uvedený příkaz vyzve níže:
cp : overwrite '<filename>'
Poté „cp ‘ příkaz by byl alias s interaktivním režimem! Chcete-li najít alias „cp“, zadejte níže uvedený příkaz:
# type cp
cp is aliased to `cp -i'
Protože je interaktivní, vyzval k zadání uživatelského vstupu, i když jste zadali –force volba. Chcete-li se vyhnout výše uvedenému a provést neinteraktivní kopírování, použijte absolutní cestu příkazu cp, jak je uvedeno níže:
/usr/bin/cp -u --force <src> <dst>
Řešení 2:Použití příkazu rsync:
# rsync -av --ignore-existing<src> <dst>
Poznámka :rsync vytvoří seznam souborů dopředu. Pokud má váš zdroj velké č. souborů a poté rsync Vytvoření tak velkého seznamu souborů trvá hodiny a hodiny a hodiny! a možná si myslíte, že se proces zablokoval, místo toho přidejte -p a uvidíte ukazatel průběhu a opravdu si nemusíte myslet, že rsync visí!