
Auf meinem Linux-Server ist ein Web-Softwarepaket installiert. Ich habe ein Update in einer ZIP-Datei heruntergeladen und möchte nur die Änderungen überschreiben. (Beispielsweise sollten alle Kerndateien ersetzt werden, aber alle von mir hinzugefügten Dateien sollten unverändert bleiben.) Wie mache ich das über die Befehlszeile?
Meine Methode wäre, es auf meinem PC zu entpacken und dann die geänderten Dateien mit einem GUI-Dateimanager hochzuladen, aber ich möchte lernen, wie das über die Befehlszeile geht.
In meinem Fall versuche ich, YOURLS auf einem Ubuntu-Server zu aktualisieren, aber die Frage scheint allgemein auf die meisten Webprogramme wie WordPress oder ähnliches anwendbar zu sein.
Antwort1
Eine der einfachsten Möglichkeiten, die mir einfällt, besteht darin, die ZIP-Datei herunterzuladen, sie temporär zu extrahieren, die nicht benötigten Dateien zu löschen und dann die YOURLS-Dateien durch die aktualisierten Dateien zu ersetzen, die Sie gerade heruntergeladen haben.
So laden Sie die Datei herunter (mit wget oder curl) und extrahieren sie in ein temporäres Verzeichnis:
cd /tmp/
mkdir update
cd update
wget http://linktozipfile/file.zip
oder
curl http://linktozipfile/file.zip -o file.zip
Dann
unzip file.zip
Jetzt können wir entscheiden, welche Dateien wir nicht benötigen, und sie mit dem Tool rm (remove/delete) entfernen.
rm config.php
rm someotherfileidontwannareplace.php
Dann können wir alle Dateien ersetzen, indem wir alle unsere aktualisierten Dateien in dasselbe Verzeichnis verschieben und so alte Dateien ersetzen.
cd ..
rsync -av newfolder/ oldfolder/
Wenn wir einfach neue Dateien hinzufügen müssen, können wir eine ähnliche Methode anwenden, aber das --existing
Flag auf mv verwenden, um vorhandene Dateien nicht zu überschreiben.
Das würde aussehen wie
cd /tmp/
mkdir update
cd update
wget http://linktozipfile/file.zip
unzip file.zip
cd ..
rsync -av --existing newfolder/ oldfolder/