So kopieren Sie Dateien mit dem Befehl „install“ unter Linux

Der Befehl install ist ein vielseitiges Werkzeug zum Kopieren von Dateien unter Linux und macOS. Er ist besonders nützlich für erfahrene Benutzer, die Wert auf Effizienz legen. Dieser Artikel erläutert, wie Sie diesen Befehl optimal nutzen können, um Ihre Arbeitsabläufe zu optimieren.

Nicht zum Installieren von Software gedacht?

Der Name des Befehls install kann leicht in die Irre führen. Er dient nicht der Installation von Softwarepaketen. Um Software unter Ubuntu oder anderen Debian-basierten Systemen zu installieren, verwenden Sie den Befehl apt-get. Bei anderen Linux-Distributionen greifen Sie auf den jeweiligen Paketmanager zurück, wie z.B. dnf unter Fedora oder zypper unter openSUSE.

Was bewirkt der Befehl install?

Im Wesentlichen kombiniert install Funktionen der Befehle cp (Kopieren), chown (Besitzer ändern), chmod (Zugriffsrechte ändern), mkdir (Verzeichnis erstellen) und strip (Symbole entfernen). All diese Operationen lassen sich mit einem einzigen Befehl ausführen.

Der Befehl install ist in der Lage:

  • Dateien zu kopieren, ähnlich wie cp.
  • Zu entscheiden, ob existierende Dateien überschrieben werden sollen.
  • Zielverzeichnisse zu erstellen, falls diese noch nicht existieren (ähnlich wie mkdir).
  • Die Zugriffsrechte von Dateien festzulegen (wie chmod).
  • Den Besitzer der Dateien zu bestimmen (wie chown).
  • Nicht benötigte Informationen aus ausführbaren Dateien zu entfernen (ähnlich wie strip).

Trotz seines Funktionsumfangs bietet der Befehl install eine überschaubare Anzahl von Optionen.

Wann ist der Einsatz sinnvoll?

Der Befehl install ist kein alltägliches Werkzeug, sondern kommt in spezifischen Situationen zum Einsatz. Ein typisches Anwendungsgebiet ist die Softwareentwicklung. Angenommen, Sie entwickeln ein neues Programm und möchten es außerhalb der Entwicklungsumgebung testen. Hierfür müssen Sie die Programmdateien in ein Testverzeichnis kopieren, das möglicherweise noch erstellt werden muss, und die korrekten Zugriffsrechte sowie den Besitzer festlegen.

Da Entwicklung ein iterativer Prozess ist, müssen Sie diese Schritte möglicherweise wiederholt durchführen. Der Befehl install automatisiert diese Aufgaben. Ist Ihr Programm bereit für die Veröffentlichung, können Sie es mit install an seinen endgültigen Speicherort kopieren und die korrekten Berechtigungen zuweisen.

Ein praktisches Beispiel

Ein Entwickler arbeitet an einem neuen Dienstprogramm namens ana, bestehend aus einer ausführbaren Datei und einer Datenbank. Nach dem Testen soll es nach /usr/local/bin kopiert werden, um es allen Benutzern des Systems zugänglich zu machen. Ersetzen Sie in den folgenden Beispielen die Dateinamen und Verzeichnispfade durch Ihre eigenen.

Vor der Veröffentlichung wird das Programm im Verzeichnis ~/test/ana getestet. Mitglieder der Gruppe „Geek“ haben Lese- und Ausführungsrechte, ebenso wie andere Benutzer. Die gewünschten Berechtigungen sind:

  • Besitzer: Lesen, Schreiben und Ausführen
  • Gruppe: Lesen und Ausführen
  • Andere: Nur Ausführen

Anwendung des Befehls install

Das Arbeitsverzeichnis des Entwicklers ist ~/work. Dort befinden sich die Binärdatei ana und die Datenbankdatei Words.db. Betrachten wir die Dateien:

ls -l ana Words.db

Das Dienstprogramm ana erstellt Anagramme. Ein kurzer Test zeigt, dass es funktioniert:

Um das Programm außerhalb der Entwicklungsumgebung zu testen, kopiert der Entwickler die Dateien nach ~/test/ana mit folgendem Befehl:

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

Die verwendeten Optionen sind:

  • -D: Erstellt Verzeichnisse, falls notwendig.
  • -v: Zeigt jeden Schritt der Verzeichnis- und Dateikopie an.
  • -t: Gibt das Zielverzeichnis an.

Der Befehl erstellt zuerst ~/test und dann ~/test/ana. Anschließend werden die Dateien kopiert.

Eine Auflistung der Dateien in ~/test/ana bestätigt die erfolgreiche Kopie:

ls -l

Der nächste Schritt ist das Testen des Programms direkt aus dem Testverzeichnis:

Das Programm funktioniert, aber die Berechtigungen sind nicht korrekt. Der Gruppe „Geek“ sollen Lese- und Ausführungsrechte zugewiesen werden, andere Benutzer sollen nur Ausführungsrechte haben.

Dies lässt sich mit folgendem Befehl und Root-Rechten lösen (sudo):

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

Die neuen Optionen sind:

  • -b: Erstellt Backups der Dateien vor dem Überschreiben.
  • -S: Definiert das Suffix für die Backups. Hier wird „.bak“ verwendet.
  • -o: Setzt den Besitzer der Dateien auf „dave“.
  • -g: Setzt die Besitzergruppe auf „geek“.
  • -m: Setzt die Dateimodi (Zugriffsrechte) mit der numerischen Darstellung von chmod.

Die Option -D wird nicht mehr benötigt, da das Verzeichnis existiert. Auch die Option -v wird weggelassen.

Eine Auflistung von ~/test/ana zeigt die neuen Dateieigenschaften:

ls -l

Alle Anforderungen wurden erfüllt:

  • Die Dateien wurden ins Testverzeichnis kopiert.
  • Die Zugriffsrechte sind korrekt gesetzt.
  • Der Besitzer ist „dave“.
  • Die Besitzergruppe ist „geek“.
  • Backups wurden mit dem Suffix „.bak“ erstellt.

All dies wurde mit einem einzigen Befehl erreicht.

Nach einigen letzten Änderungen am Programm und dem Neukompilieren müssen die geänderten Dateien von ~/work nach ~/test/ana kopiert werden. Hierbei hilft die Option -C (compare):

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

Eine Auflistung des Zielverzeichnisses zeigt, dass sich die Dateigröße von ana geändert hat, während die Größe von Words.db gleich geblieben ist. Nur die geänderte Datei wurde kopiert.

ls -l

Die Option -C spart Zeit und Festplattenplatz, indem nur geänderte Dateien kopiert werden.

Nach dem erneuten Testen ist es Zeit, die Dateien mit install nach /usr/local/bin zu kopieren:

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

Die Dateien sind nun in /usr/local/bin:

ls -l

Ein letzter Test von einem anderen Verzeichnis aus zeigt, dass das Programm nun global verfügbar ist:

Abschließend kann install unnötige Informationen aus Binärdateien entfernen, um ihre Größe zu reduzieren. Der folgende Befehl kopiert ana und verkleinert die Datei:

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

Eine Auflistung von /usr/local/bin zeigt, dass die Datei ana nun deutlich kleiner ist:

ls -l /usr/local/bin

Zusammenfassung

Der Befehl install ist ein spezialisiertes Werkzeug, das nicht jeden Tag benötigt wird. Dennoch ist es ein nützlicher Befehl, den man kennen sollte. Wenn Sie ihn brauchen, wird er Ihre Arbeit durch Effizienz, Einfachheit und weniger benötigte Tastatureingaben erleichtern.