Ich bin mir nicht sicher, ob das möglich ist oder nicht. Im Grunde schreibe ich ein Skript, das mir erlaubt, eine Datei zu meinem Hosting scp. Das ist es soweit. Argument 1 ist die Datei, und das Argument 2 ist der Ordner, ich will es auf dem Remote-Server platziert werden:Wie erstelle ich ein Verzeichnis auf dem Remote-Host, wenn es nicht existiert, ohne dass ein ssh-in eingeht?
function upload {
scp $1 [email protected]:$2
}
Wie Sie können/kann nicht wissen, ob das Verzeichnis ich angeben, wenn ich die Funktion doesn nennen‘ t existieren, schlägt die Übertragung fehl. Gibt es eine Möglichkeit zu überprüfen, ob das Verzeichnis in der Funktion vorhanden ist, und wenn dies nicht der Fall ist, erstellen Sie es.
Ich würde es vorziehen nicht in jeder Zeit ssh in und erstellen Sie das Verzeichnis, aber wenn ich keine Wahl habe, dann habe ich keine Wahl.
Dies funktioniert nicht für mich (es beschwert sich einfach, dass das Zielverzeichnis nicht existiert) - benötigt es eine ungewöhnlich aktuelle Version von rsync? "Rsync -R" kann jedoch verwendet werden, um den gewünschten Effekt zu erzielen, wenn sich die lokale Datei in einem entsprechend benannten Verzeichnis befindet, z. B .: 'rsync -Rave ssh einige/nonExisting/dirToCopyTo/fileToCopy ssh.myhost.net: /' –
@MartinKleppmann Ich bekomme nur einen Fehler beim meckern über das Verzeichnis das nicht existiert. Haben Sie diese Arbeit tatsächlich miterlebt? Wenn ja, wäre ich daran interessiert, herauszufinden, was sich an unseren rsync-Programmen unterscheidet. – DougW
Ah, sieht so aus, als ob es nur eine Ebene des Verzeichnisses erstellen muss, in das kopiert werden soll. Ich habe versucht, die Bereitstellung unter/var/www/myapp/test/durchzuführen. Wenn der Server nur/var/www/hatte, ist er fehlgeschlagen. Als ich/var/www/myapp/erstellt habe, habe ich den Testordner erstellt und alles darin kopiert. Wenn Sie mehr als eine Ebene der Verzeichnisstruktur erstellen müssen, benötigen Sie eine Lösung wie @ire_and_curses. – DougW