Ich versuche, geänderte Dateien per SSH zu GoDaddy zu kopieren. GoDaddy ist schrecklich und erlaubt daher natürlich kein Rsync. Ich kann SCP verwenden, aber ich möchte wirklich nur geänderte Dateien kopieren. Ich glaube nicht, dass das möglich ist, also habe ich mich gefragt, ob ich vielleicht nur alle PHP-Dateien per SCP kopieren könnte.
Es gibt jedoch viele Unterverzeichnisse, daher muss ich die Option -r verwenden.
Gibt es eine Möglichkeit, mit scp alle Dateien mit der Erweiterung php
rekursiv zu kopieren? So etwa:
scp -r -name "*php" /local/html/ user@server:/home/html/
(funktioniert nicht)
ERWÜNSCHTES ERGEBNIS
//auf dem lokalen Rechner $ finde ./Quelle Quelle/1.php Quelle/2.php Quelle/Sub Quelle/Sub/3.php Quelle/Sub/4.php Quelle/Sub/NICHT kopieren.txt Quelle/Sub/NICHT kopieren.png Quelle/Sub/Sub2 Quelle/sub/sub2/5.php Quelle/sub/sub2/6.php //Befehl zum Kopieren der Dateien $ [scp-Befehl hier] //auf Remote-Server $ finde ./Ziel Ziel/1.php Ziel/2.php Ziel/Sub Ziel/sub/3.php Ziel/sub/4.php Ziel/Sub/Sub2 Ziel/sub/sub2/5.php Ziel/sub/sub2/6.php
DAS FUNKTIONIERT NICHT
//auf dem lokalen Rechner $ finde ./Quelle Quelle/1.php Quelle/2.php Quelle/Sub Quelle/Sub/3.php Quelle/Sub/4.php Quelle/Sub/NICHT kopieren.txt Quelle/Sub/NICHT kopieren.png Quelle/Sub/Sub2 Quelle/sub/sub2/5.php Quelle/sub/sub2/6.php //Befehl zum Kopieren der Dateien $ cd Quelle; scp -r *.php Benutzer@Remote:/Ziel //auf Remote-Server $ finde ./Ziel Ziel/1.php Ziel/2.php
Vielleicht könnten wir auch versuchen, find zu verwenden, aber ich bin ziemlich sicher, dass dieswird so nicht funktionieren:
finde ./source -name "*.php" -exec scp {} Benutzer@remote:{} \;
Das wird nicht funktionieren, da ich nicht glaube, dass Sie {}
in „Find“ mehrere Operatoren verwenden können.
Außerdem kann es schwierig sein, die Pfade auf dem Remote-Server auszurichten, beispielsweise wenn „find“ zurückgegeben wurde /users/johndoe/documents/source/1.php
und Sie möchten, dass es auf dem Remote-Server landet /home/jane/www/destination/1.php
.
Antwort1
Folgendes mache ich, wenn ein Host nur das Pushen von Inhalten zulässt, aber kein rsync:
- Erstellen Sie auf Ihrem lokalen Computer ein „Schattenverzeichnis“, das der Zielstruktur ähnelt
- Verwenden Sie es
rsync
, um in dieses Schattenverzeichnis zu pushen und die Ausgabe zu erfassen (dort ist sie verfügbar,--log-file
wenn Sie sie per Skript ausführen möchten). - Bestimmen Sie aus der
rsync
Ausgabe die Dateien, die Sie löschen oder pushen müssen, und erstellen Sie eine Liste - vielleicht (hängt von der Art des Pushens ab): Erstelle ein Paket aus den Dateien, die nur geändert werden müssen
- Starten Sie Ihr Push-Tool (ftp, scp, was auch immer) und lassen Sie es auf den Dateien aus der Liste laufen
Antwort2
Kannst du das nicht tun scp -r *.php destination
?
Antwort3
scp -r Benutzer@IP:/Daten/Dateien/*.php /tmp/Dateien/