GNU cp
a GNU mv
nástroje se používají ke kopírování a přesouvání souborů a adresářů v operačním systému GNU/Linux. Jedna chybějící funkce v těchto dvou nástrojích je, že vám neukazují žádný ukazatel průběhu. Pokud kopírujete velký soubor nebo adresář, opravdu nevíte, jak dlouho bude proces kopírování trvat, ani jaké procento zkopírovaných dat. Neuvidíte, který soubor se právě kopíruje, ani kolik jich již bylo zkopírováno. Vše, co uvidíte, je pouze blikající kurzor a LED indikátor pevného disku. Díky Advanced Copy , oprava pro Gnu Coreutils
, nyní můžeme přidat ukazatel průběhu do cp
a mv
příkazy v Linuxu a zobrazit indikátor průběhu při kopírování a/nebo přesouvání velkých souborů a adresářů.
Advanced Copy je mod pro GNU cp
a GNU mv
programy. Přidává ukazatel průběhu a poskytuje některé informace o tom, co se děje při kopírování nebo přesouvání souborů a složek. Nejen ukazatel průběhu, ale také ukazuje rychlost přenosu dat, odhadovaný zbývající čas a název souboru, který se právě kopíruje. Na konci uvidíte krátké shrnutí, kolik souborů bylo zkopírováno a jak dlouho trvalo kopírování souborů.
Nainstalujte si opravu 'Advanced Copy' pro přidání ukazatele průběhu do příkazů cp a mv v Linuxu
Příkazy cp a mv jsou součástí GNU coreutils
. Musíte si tedy stáhnout nejnovější GNU coreutils
od zde .
$ wget http://ftp.gnu.org/gnu/coreutils/coreutils-8.32.tar.xz
Rozbalte stažený archiv pomocí příkazu:
$ tar xvJf coreutils-8.32.tar.xz
Tento příkaz rozbalí archiv coreutils ve složce s názvem coreutils-8.32
v aktuálním adresáři. Cd do něj:
$ cd coreutils-8.32/
Stáhněte si opravu Advanced Copy pomocí následujícího příkazu:
$ wget https://raw.githubusercontent.com/jarun/advcpmv/master/advcpmv-0.8-8.32.patch
Nakonec použijte opravu spuštěním následujících příkazů jeden po druhém:
$ patch -p1 -i advcpmv-0.8-8.32.patch
$ ./configure
$ make
Nyní dva nové opravené binární soubory, konkrétně cp
a mv
bude vytvořen v coreutils-8.32/src
složka. Jednoduše je zkopírujte do své $PATH, jak je uvedeno níže:
$ sudo cp src/cp /usr/local/bin/cp
$ sudo cp src/mv /usr/local/bin/mv
A je to. cp
a mv
příkazy mají nyní funkci ukazatele průběhu.
Kdykoli budete chtít ukazatel průběhu při kopírování nebo přesouvání souborů a adresářů, stačí přidat -g
příznak jako níže:
$ cp -g archlinux.iso mydownload/
Nebo použijte --progress-bar
příznak:
$ cp --progress-bar archlinux.iso mydownload/
Ukázkový výstup:
Copying at 25.7 MiB/s (about 0h 0m 1s remaining)
archlinux.iso 568.1 MiB / 646.0 MiB
[=========================================================================> ] 87.9 %

Na konci procesu kopírování uvidíte, kolik souborů bylo zkopírováno, jak dlouho trvalo kopírování souboru (souborů) a rychlost přenosu dat za sekundu. Pěkné, že?
1 files (646.0 MiB) copied in 11.8 seconds ( 54.7 MiB/s).
Chcete-li zkopírovat adresář a jeho podadresáře rekurzivně, jednoduše přidejte -R
příznak:
$ cp -gR directory1/ directory2/
Podobně pro přesun souborů pomocí mv
příkaz, spusťte:
$ mv -g archlinux.iso mydownload/
Nebo použijte --progress-bar
příznak:
$ mv --progress-bar archlinux.iso mydownload/
Přesouvání adresářů pomocí mv
příkaz, použijte:
$ mv -g directory1/ directory2/
Můžete také vytvořit aliasy, abyste si ušetřili několik stisknutí kláves. Chcete-li tak učinit, upravte ~/.bashrc
soubor:
$ nano ~/.bashrc
Na konec přidejte následující řádky:
alias cp='/usr/local/bin/cp -gR'
alias mv='/usr/local/bin/mv -g'
Stiskněte Ctrl+o
a Ctl+x
uložte a zavřete soubor.
Nyní spusťte následující příkaz, aby se změny projevily:
$ source ~/.bashrc
Od této chvíle můžete používat pouze cp
nebo mv
příkazy bez -g
(nebo --progress-bar
) příznak.
Upozorňujeme, že původní programy nejsou přepsány. Stále jim můžete kdykoli zavolat prostřednictvím /usr/bin/cp
nebo /usr/bin/mv
.
Přidání funkce ukazatele průběhu do cp
a mv
příkazy je dobrý nápad, pokud často kopírujete nebo přesouváte velké množství velkých souborů a adresářů. Nyní můžete vidět, co se přesně děje při kopírování a přesouvání souborů, místo abyste zírali na obrazovku.
Poznámka:
Původní autor poslal patch týmu, který spravuje GNU CoreUtils. Tento patch nezačlení, protože funkce mv a cp jsou kompletní.