Jak skopiować pliki za pomocą polecenia „install” w systemie Linux

install to wszechstronne polecenie kopiowania plików w systemie Linux i macOS. Jest idealny dla zaawansowanych użytkowników poszukujących wydajności. Przeczytaj ten artykuł, aby dowiedzieć się, jak pracować mądrzej – nie ciężej.

Czekaj – to nie jest instalacja oprogramowania?

Polecenie instalacji może mieć najbardziej mylącą nazwę ze wszystkich poleceń systemu Linux. W rzeczywistości nie instaluje żadnego oprogramowania. Jeśli próbujesz zainstalować pakiet oprogramowania z wiersza poleceń w Ubuntu lub innej dystrybucji opartej na Debianie, użyj polecenia apt-get. W innych dystrybucjach Linuksa użyj zamiast tego narzędzia do zarządzania pakietami dystrybucji Linuksa – na przykład dnf w Fedorze lub zypper w openSUSE.

Więc co robi instalacja?

W skrócie instalacja łączy elementy z cp (Kopiuj), chown (zmiana właściciela), chmod (Zmień tryb), mkdir (zrobić katalog) i strip (symbole pasków) polecenia. Pozwala na użycie funkcji z tych wszystkich w jednej akcji.

Polecenie instalacji może:

Skopiuj pliki, takie jak polecenie cp.
Wybierz, czy chcesz nadpisać istniejące pliki.
Utwórz katalog docelowy, jeśli nie istnieje, na przykład mkdir.
Ustaw flagi uprawnień użytkownika do plików, tak jak polecenie chmod.
Ustaw właściciela plików, tak jak polecenie chown.
Usuń zbędny bagaż z plików wykonywalnych, podobnie jak polecenie strip.

Pomimo całej tej funkcjonalności, polecenie instalacji też nie ma dużo opcji Do konfrontacji.

zainstaluj stronę podręcznika

Kiedy byś tego użył

Polecenie instalacji prawdopodobnie nie będzie używane codziennie. Jest to przydatne, ale tylko w określonych sytuacjach. Jednym ze scenariuszy, w którym instalacja działa samodzielnie, jest tworzenie oprogramowania. Powiedzmy, że programujesz nowe narzędzie. Będziesz musiał przeprowadzić testy poza środowiskiem programistycznym. Aby to zrobić, musisz skopiować nowe pliki programu do katalogu testowego. Może być konieczne utworzenie katalogu testowego i należy ustawić odpowiednie uprawnienia i prawa własności do plików.

Ponieważ programowanie jest działaniem iteracyjnym, możesz wykonać tę sekwencję działań wiele, wiele razy. Polecenie instalacji wykonuje wszystkie ciężkie czynności za Ciebie. Wreszcie, gdy nowe narzędzie jest gotowe do wdrożenia, możesz użyć polecenia install, aby skopiować je z odpowiednimi uprawnieniami do ostatecznej lokalizacji roboczej.

Przykład

Programista pracuje właśnie nad takim nowym narzędziem o nazwie ana. Składa się z wykonywalnego pliku binarnego i bazy danych. Po przetestowaniu należy go skopiować do / usr / local / bin, aby był dostępny dla wszystkich użytkowników systemu Linux. Będziesz musiał zastąpić nazwy plików i ścieżki katalogów w naszym przykładzie dla plików i ścieżek, których używasz na swoim komputerze podczas korzystania z instalacji.

Dopóki nie będzie gotowy do wydania, będzie testowany w katalogu o nazwie ~ / test / ana. Członkowie grupy maniaków będą mieli uprawnienia do odczytu i wykonywania. Inni użytkownicy również będą mieć uprawnienia do odczytu i wykonywania. Polecenie instalacji używa tej samej numerycznej reprezentacji uprawnień, co chmod. Nasz programista zdecydował, że uprawnienia muszą być ustawione na:

Właściciel: Czytaj, pisz i wykonuj.
Grupa: Przeczytaj i wykonaj.
Inne: tylko wykonaj.

Jak używać polecenia instalacji

Katalog roboczy naszego fikcyjnego programisty to ~ / work. Napisał program, skompilował go i stworzył plik binarny o nazwie ana. Stworzył już plik bazy danych, z którym ana współpracuje, Words.db. Więc oba pliki są gotowe do testów. Przyjrzyjmy się im:

ls -l ana Words.db

Narzędzie ana, które właśnie napisał, tworzy anagramy z frazy podanej w linii poleceń. Testowanie weryfikacyjne jest dość proste.

test narzędzia w katalogu roboczym

Nasz programista wywołał anę frazą „biskwit” i wszystko wydaje się być w porządku. Chce teraz skopiować te dwa pliki do katalogu ~ / test / ana, aby sprawdzić, czy nowe narzędzie działa poprawnie poza środowiskiem programistycznym. Wydaje następujące polecenie:

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

Zainstaluj polecenie do / test / ana

Opcje użyte w linii poleceń to:

D: Utwórz katalogi, w tym katalogi nadrzędne, jeśli jest to wymagane.
v: Pełne, wymień każdy katalog w stanie, w jakim został utworzony, i każdą kopię pliku w trakcie jego wykonywania.
t: katalog docelowy.

Widzimy, że install tworzy katalog ~ / test, a następnie tworzy katalog ~ / test / ana. Pliki są wyświetlane jeden po drugim, gdy są kopiowane do katalogu docelowego.

Umieszczenie plików w katalogu ~ / test / ana potwierdza, że ​​zostały one poprawnie skopiowane.

ls -l

ls w katalogu / test / ana

Następnym krokiem jest przetestowanie narzędzia ana poprzez wywołanie go w katalogu ~ / test / ana.

test narzędzia ana w katalogu / test / ana

Narzędzie działa zgodnie z oczekiwaniami, co jest świetne. Jednak uprawnienia nie są poprawne. Wymagane jest, aby członkowie grupy maniaków mieli uprawnienia do odczytu i wykonywania, a inni użytkownicy mieli tylko wykonywanie.

Możemy rozwiązać oba te problemy po prostu za pomocą następującego polecenia. Zwróć uwagę na użycie sudo do uruchomienia polecenia z uprawnieniami roota. Wymagają tego opcje -o i -g oraz opcje. Gdy wydamy polecenie, zostaniemy poproszeni o podanie hasła.

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

polecenie instalacji z opcjami tworzenia kopii zapasowych i ustawieniami uprawnień

Opcja -b (kopia zapasowa) tworzy kopie zapasowe plików przed ich nadpisaniem.
Opcja -S (sufiks) definiuje przyrostek dla plików kopii zapasowych. Jeśli nie podasz sufiksu, zostanie użyty znak ~ (tylda). Prosimy o zainstalowanie przyrostka .bak.
Ustawiamy właściciela pliku na dave za pomocą opcji -o (właściciel).
Opcja -g (grupa) wymaga nazwy grupy. To staje się grupą właścicieli plików. Grupa, której będziemy używać, nazywa się maniakiem.
Opcja -m (tryb) ustawia tryby plików dla plików, używając standardowej numerycznej składni chmod.

Nie musimy już używać opcji -D (utwórz katalogi), ponieważ wiemy, że katalog testowy już istnieje. Pominęliśmy również opcję -v (gadatliwa). Wyświetlenie plików w naszym katalogu ~ / test / ana pokazuje nam szczegóły pliku:

ls -l

ls w katalogu / test / ana

Potwierdza to, że wszystkie nasze wymagania zostały spełnione.

Pliki zostały skopiowane do katalogu testing.
Uprawnienia zostały ustawione poprawnie.
dave jest właścicielem plików.
Grupa maniaków to grupa właścicieli dwóch plików.
Utworzono kopie zapasowe każdego pliku o nazwach ana.bak i Words.db.bak.

Wszystko to osiągnięto za pomocą jednego polecenia. Schludny.

Nasz programista dokonuje ostatecznych zmian w narzędziu i dokonuje ponownej kompilacji. Pliki, które uległy zmianie, należy skopiować do katalogu ~ / test / ana z katalogu ~ / work. Możemy to zrobić za pomocą opcji -C (porównaj). Jeśli plik źródłowy i docelowy są takie same, plik źródłowy nie jest kopiowany.

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

polecenie instalacji z opcją -C porównania

Wyświetlenie plików w katalogu docelowym pokazuje nam, że rozmiar pliku ana uległ zmianie. Jest większy niż ana.bakfile. Znacznik czasu na ana również się zmienił. Te zmiany są spowodowane tym, że nowa wersja pliku została tutaj skopiowana.

ls -l

ls in / test / ana z narzędziem test fo ana

Rozmiar pliku i sygnatura czasowa pliku Words.db nie uległy zmianie. W pliku Words.db nie wprowadzono żadnych zmian, więc nie został on skopiowany. W projekcie z wieloma plikami opcja -C (porównanie) może zaoszczędzić dużo czasu i rezygnacji z dysku twardego, kopiując tylko te pliki, które zostały zmienione.

Programista ponownie przetestował, czy narzędzie ana nadal działa.

Nadszedł czas, aby użyć instalacji, aby skopiować pliki do katalogu / usr / local / bin. Dzięki temu nowe narzędzie będzie dostępne dla wszystkich użytkowników tego komputera z systemem Linux. Wiemy, że istnieje / usr / local / bin, więc nie musimy tworzyć tego katalogu. Możemy użyć zmodyfikowanej wersji naszego ostatniego polecenia.

Zmieniliśmy katalog docelowy na / usr / local / bin. Usunęliśmy opcję -C (porównaj), ponieważ nie ma jeszcze kopii tych plików w katalogu docelowym, więc nie ma z czym porównywać. Podobnie nie ma nic do tworzenia kopii zapasowych, więc możemy usunąć opcję -b (kopia zapasowa) i opcję -S (sufiks).

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

zainstaluj kopiowanie plików do / usr / local / bin

Możemy wyświetlić listę, że pliki dotarły do ​​/ usr / local / bin:

ls -l

ls z / usr / local / bin

Na koniec zmieńmy katalog na nasz katalog domowy i zobaczmy, czy możemy z niego wywołać nasze nowe narzędzie.

test użyteczności

Zauważ, że nie musieliśmy poprzedzać polecenia ana ciągiem ./, co oznacza, że ​​jest uruchamiane z / usr / local / bin. Misja zakończona.

Wspomnieliśmy, że instalacja może usunąć zbędne tabele symboli i inny bagaż z pliku binarnego, aby zmniejszyć jego rozmiar. Zróbmy to teraz. Zwróć uwagę, że poniższe polecenie nie zawiera słowa Words.db. Dzieje się tak, ponieważ Words.db jest plikiem bazy danych, a nie binarnym plikiem wykonywalnym. Aby skopiować i zmniejszyć plik binarny ana, możemy użyć następującego polecenia. Dodaliśmy opcję -s (shrink) z małymi literami „s”. Ponownie dodaliśmy opcję -b (kopia zapasowa) i opcję -S (sufiks) z wielką literą „S”.

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

opcja instalacji z opcją -s strip

Umieszczenie plików w / usr / local / bin pozwala nam porównać rozmiar pliku ana z jego wersją kopii zapasowej. Plik ana został zmniejszony do prawie 60% swojego poprzedniego rozmiaru.

ls -l /usr/local/bin

ls w katalogu roboczym

W podsumowaniu

Polecenie instalacji jest przeznaczone do całkiem niszowego zastosowania. Dla wielu ludzi nie będzie używany dzień w dzień lub prawdopodobnie z miesiąca na miesiąc. Mimo to polecenie instalacji jest dobrym narzędziem, które warto znać i mieć w swoim arsenale sztuczek. W tych sytuacjach, kiedy tego potrzebujesz, nagradza twoją krzywą uczenia się zwiększeniem wydajności, prostoty i po prostu mniejszą liczbą naciśnięć klawiszy.