Како копирати датотеке помоћу команде „инсталл“ на Линуку

Команда install је веома корисна алатка за копирање фајлова на Линукс и macOS оперативним системима. Намењена је напредним корисницима који траже ефикасан начин управљања датотекама. У овом чланку ћете открити како да радите паметније, а не напорније.

Чекајте, зар није за инсталирање софтвера?

Име команде install може бити обмањујуће, јер она заправо не служи за инсталирање софтвера. Ако желите да инсталирате софтверски пакет преко командне линије на Ubuntu или некој другој дистрибуцији заснованој на Debian-у, користите команду apt-get. У другим дистрибуцијама користите одговарајући менаџер пакета, као што је dnf на Fedora или zypper на openSUSE.

Дакле, шта ради команда install?

Укратко, команда install обједињује функције неколико других команди: cp (копирање), chown (промена власника), chmod (промена режима приступа), mkdir (креирање директоријума) и strip (уклањање симбола). Она вам омогућава да све ове операције обавите једном акцијом.

Команда install може:

  • Копирати датотеке слично команди cp.
  • Одабрати да ли да препише постојеће датотеке.
  • Креирати циљни директоријум ако не постоји, као команда mkdir.
  • Подесити дозволе приступа датотекама, као команда chmod.
  • Променити власника датотека, као команда chown.
  • Уклонити непотребне симболе из извршних датотека, као команда strip.

И поред свих ових могућности, команда install нема много опција са којима треба да се бавите.

Када је треба користити?

Вероватно нећете користити команду install сваки дан. Она је корисна, али само у одређеним ситуацијама. Један од примера где се команда install посебно истиче је развој софтвера. Рецимо да програмирате нови алат. Требаће вам тестирање ван вашег развојног окружења. Да бисте то урадили, морате да копирате нове програмске датотеке у тестни директоријум. Можда ћете морати да креирате тај директоријум, а такође је потребно да подесите исправне дозволе и власништво над фајловима.

Пошто је развој итеративан процес, вероватно ћете морати да поновите ову серију акција много пута. Команда install обавља све те послове уместо вас. На крају, када ваш нови алат буде спреман за употребу, можете користити install да га копирате са одговарајућим дозволама на његову крајњу радну локацију.

Пример

Замислимо програмера који ради на новом алату по имену ana. Он се састоји од извршног бинарног фајла и базе података. Након тестирања, потребно је да се копира у /usr/local/bin како би био доступан свим корисницима Linux система. Када користите install, замените имена датотека и путање директоријума у нашем примеру са онима које користите на свом рачунару.

Док не буде спреман за објављивање, програм се тестира у директоријуму ~/test/ana. Чланови групе geek ће имати дозволе за читање и извршавање, а остали корисници ће имати само дозволе за читање и извршавање. Команда install користи исту нумеричку репрезентацију за дозволе као и chmod. Наш програмер је одлучио да дозволе морају бити подешене на:

  • Власник: Читање, писање и извршавање.
  • Група: Читање и извршавање.
  • Остали: Само извршавање.

Како користити команду install

Радни директоријум нашег програмера је ~/work. Он је написао програм, компајлирао га и добио бинарни фајл по имену ana. Такође је креирао датотеку базе података коју ana користи, Words.db. Дакле, обе датотеке су спремне за тестирање. Погледајмо их:

ls -l ana Words.db

Алат ana који је програмер управо написао, креира анаграме од фразе која се унесе у командној линији. Тестирање је прилично једноставно.

Програмер је позвао ana са фразом „кекс“ и све изгледа добро. Сада жели да копира ове две датотеке у директоријум ~/test/ana да провери да ли нови алат ради исправно ван развојног окружења. Он користи следећу команду:

install -D -v ana Words.db -t ~/test/ana

Опције коришћене у овој команди су:

  • -D: Креира директоријуме, укључујући родитељске, ако је потребно.
  • -v: Приказује шта се ради, наводи сваки креирани директоријум и сваку копирану датотеку.
  • -t: Циљни директоријум.

Можемо видети да install прво креира директоријум ~/test, а затим директоријум ~/test/ana. Датотеке се наводе једна по једна док се копирају у циљни директоријум.

Провера датотека у ~/test/ana потврђује да су исправно копиране.

ls -l

Следећи корак је да се тестира алат ana тако што ћемо га покренути у директоријуму ~/test/ana.

Алат ради како се очекивало, што је одлично. Међутим, дозволе нису исправне. Потребно је да чланови групе geek имају дозволе за читање и извршавање, а да други корисници имају само дозволу за извршавање.

Оба ова проблема можемо једноставно решити следећом командом. Обратите пажњу на употребу sudo за покретање команде са root дозволама, јер опције -o и -g то захтевају. Биће нам затражена лозинка када покренемо команду.

sudo install -b -S .bak -o dave -g geek -m 751 ana Words.db -t ~/test/ana

Објашњење опција:

  • -b (backup): Прави резервне копије датотека пре него што их препише.
  • -S (suffix): Дефинише суфикс за датотеке резервне копије. Ако не наведете суфикс, користи се ~ (тилда). Тражимо од install да користи суфикс .bak.
  • -o (owner): Поставља власника датотеке на dave.
  • -g (group): Захтева име групе. Ово постаје власничка група датотека. Група коју ћемо користити се зове geek.
  • -m (mode): Поставља дозволе приступа датотекама, користећи стандардну нумеричку синтаксу chmod.

Више не морамо да користимо опцију -D (креирај директоријуме) јер знамо да тестни директоријум већ постоји. Такође смо изоставили опцију -v (вербосе). Провера датотека у нашем ~/test/ana директоријуму показује нам детаље:

ls -l

Ово потврђује да су сви наши захтеви испуњени.

  • Датотеке су копиране у директоријум за тестирање.
  • Дозволе су исправно постављене.
  • dave је власник датотека.
  • Група geek је власничка група обе датотеке.
  • Направљене су резервне копије сваке датотеке, назване ana.bak и Words.db.bak.

Све ово је постигнуто употребом једне команде. Одлично!

Наш програмер прави неке завршне измене у алату и поново га компајлира. Датотеке које су промењене треба да се копирају у директоријум ~/test/ana из директоријума ~/work. То можемо учинити користећи опцију -C (compare). Ако су изворна и циљна датотека исте, изворна датотека се не копира.

sudo install -C -b -S .bak -o dave -g geek -m 751 ana Words.db -t ~/test/ana

Провера датотека у циљном директоријуму нам показује да се величина датотеке ana променила. Она је већа од ana.bak датотеке. Временска ознака на ana се такође променила. Ове промене су зато што је нова верзија датотеке копирана овде.

ls -l

Величина датотеке и временска ознака датотеке Words.db се нису промениле. Нису направљене никакве измене у Words.db датотеци, тако да није копирана. На пројекту са много датотека, опција -C (compare) може уштедети много времена и простора на чврстом диску тако што ће копирати само оне датотеке које су се промениле.

Програмер је поново тестирао и утврдио да алат ana наставља да ради.

Време је да се користи install за копирање датотека у директоријум /usr/local/bin. Ово ће учинити нови алат доступним свим корисницима овог Linux рачунара. Знамо да /usr/local/bin постоји, тако да не морамо да креирамо тај директоријум. Можемо користити модификовану верзију наше последње команде.

Променили смо циљни директоријум у /usr/local/bin. Уклонили смо опцију -C (compare) јер још увек нема копија ових датотека у циљном директоријуму, па нема шта да се пореди. Исто тако, нема ништа за прављење резервне копије, тако да можемо уклонити опцију -b (backup) и -S (suffix).

sudo install -o dave -g geek -m 751 ana Words.db -t /usr/local/bin

Можемо проверити да су датотеке стигле у /usr/local/bin:

ls -l

И као последњи тест, хајде да променимо директоријум у наш кућни директоријум и видимо да ли можемо да покренемо наш нови алат одатле.

Приметите да нисмо морали да покрећемо команду ana са ./, што значи да се извршава из /usr/local/bin. Мисија је остварена.

Поменули смо да install може уклонити непотребне симболе и друге податке из бинарне датотеке, како би је смањио. Урадимо то сада. Имајте на уму да наредна команда не укључује Words.db. То је зато што је Words.db база података, а не извршна бинарна датотека. Да бисмо копирали и смањили бинарну датотеку ana, можемо користити следећу команду. Додали смо опцију -s (strip) са малим словом „s“. Поново смо додали опцију -b (backup) и опцију -S (suffix), са великим словима „S“.

sudo install -s -b -S .bak -o dave -g geek -m 751 ana -t /usr/local/bin

Провера датотека у /usr/local/bin омогућава нам да упоредимо величину ana датотеке са њеном верзијом резервне копије. Ana датотека је смањена на скоро 60% своје претходне величине.

ls -l /usr/local/bin

Укратко

Команда install се не користи тако често. Многи је неће користити свакодневно, или можда месецима. Упркос томе, install је користан алат који је добро знати и имати при руци. Када вам затреба, наградиће вас за ваше време учења повећањем ефикасности, једноставности и смањеним бројем потребних притисака на тастере.