Terminal pogryzł człowieka: gcp
Wszyscy uwielbiamy kopiować pliki – z katalogu do katalogu, z partycji na partycję, z dysku na dysk i tak dalej. Fascynujące zajęcie. Szczególnie, gdy ilość kopiowanych danych jest spora, a enigmatyczna czerń terminala i spokój kursora pogłębia w nas poczucie, że z wnętrza naszej maszyny dobiega złośliwy chichot i de facto nic się nie dzieje. W takich przypadkach możemy bez zahamowań sięgnąć po polecenie gcp, które stanowi panaceum na bolączki trapiące użytkowników dla których polecenie cp w standardowym wydaniu jest zbyt mało rozmowne. Kopiowanie z paskiem postępu – to jest przecież XXI wiek!
Minusem polecenie gcp jest fakt, że nie jest domyślnie dołączone chyba do żadnej z dystrybucji. Niemniej, bez problemów zainstalujemy je w Ubuntu/Xubuntu/Kubuntu/Mincie i pochodnych:
sudo apt-get install gcp
… jak i w Manjaro/Archu i pochodnych:
yaourt -S gcp
Jak korzystać z gcp? Zasadniczo, podobnie jak z cp do tej pory:
Options: --version show program's version number and exit -h, --help show this help message and exit -r, --recursive copy directories recursively -f, --force force overwriting of existing files --preserve=PRESERVE preserve the specified attributes -L, --dereference always follow symbolic links in sources -P, --no-dereference never follow symbolic links in sources --no-fs-fix don't fix filesystem name incompatibily --no-progress deactivate progress bar -v, --verbose Show what is currently done sources saving: --sources-save=SOURCES_SAVE Save source arguments --sources-replace=SOURCES_REPLACE Save source arguments and replace memory if it already exists --sources-load=SOURCES_LOAD Load source arguments --sources-del=SOURCES_DEL delete saved sources --sources-list List names of saved sources --sources-full-list List names of saved sources and files in it
Czyli pliki kopiujemy bez parametrów, katalogi z parametrem -r, -v wyświetli nieco więcej informacji o poczynaniach programu, -L i -P obsłużą dowiązania i tak dalej. Nowością jest wygląd całego procesu kopiowania, podczas którego otrzymamy informację co się dzieje i jak długo to potrwa:
$ gcp -r duzo_plikow/ duzo_plikow_bak Copying 154.42 MiB 54% |##########################################...........................| 210.61 MB/s Time: 0:00:01
Innowacyjna jest również lista źródłowych plików, które możemy zapisać za pomocą parametru –sources-save=Nazwa.
$ gcp -r --sources-save=kernel /usr/src/kernel-3.12 /usr/src/kernel_bak (...)
Wydane w ten sposób polecenie nie tylko skopiuje pliki ze wskazanej lokalizacji, ale i zapisze gotowca o nazwie ‘kernel’ wskazującego na lokalizację /usr/src/kernel-3.12. W przyszłości wszelkie machinacje z tymi plikami będziemy mogli przeprowadzać podając właśnie tę nazwę. Zapisane nazwy przypomni nam parametr –sources-full-list:
$ gcp --sources-full-list Saved sources: [kernel] /usr/src/linux-3.12
… natomiast –sources-load=nazwa wykorzysta zapisaną ścieżkę jak źródło dla naszego kopiowania:
$ gcp -r --sources-load=kernel /usr/src/kernel_bak
Chyba nie muszę dodawać, jak powyższe skutecznie uwolni nasze pokłady szarych komórek przed zapamiętywaniem często pokrętnych ścieżek.