Wie kann ich „scp“ verwenden, um die „.htaccess“-Datei einer Website bereitzustellen?
-
09-06-2019 - |
Frage
Ich verwende derzeit den folgenden Befehl, um den Inhalt meiner Website hochzuladen:
scp -r web/* user@site.com:site.com/
Dies funktioniert hervorragend, außer dass die .htaccess-Datei nicht gesendet wird.Vermutlich liegt das daran, dass es versteckt ist.
Ich habe versucht, eine zweite Zeile hinzuzufügen, um die Datei explizit zu senden:
scp -r web/.htaccess user@site.com:site.com/.htaccess
Das funktioniert super, außer dass ich jetzt mein Passwort zweimal eingeben muss.
Irgendwelche Gedanken dazu, wie ich diese Bereitstellung mit nur 1 oder 0 Eingaben meines Passworts durchführen kann?
Lösung
Kombinieren Sie einfach die beiden Befehle:
scp -r web/* web/.htaccess user@site.com:site.com/
Wenn Sie 0 Einträge Ihres Passworts wünschen, können Sie es einrichten Authentifizierung mit öffentlichem Schlüssel für ssh/scp.
Andere Tipps
Einige Hintergrundinformationen:Die *
Platzhalter passt nicht zu sogenannten „Dot-Dateien“ (d. h.Dateien, deren Name mit einem Punkt beginnt).
Bei einigen Shells können Sie eine Option festlegen, sodass dies der Fall ist Wille match dot-files, allerdings ist das mit viel Aufwand verbunden:Jetzt *
wird auch passen .
(das aktuelle Verzeichnis) und ..
(das übergeordnete Verzeichnis), was normalerweise nicht beabsichtigt ist und ziemlich überraschend sein kann!(rm -rf *
Das Löschen des übergeordneten Verzeichnisses ist wahrscheinlich nicht der beste Start in den Tag ...)
Ein Wort der Vorsicht: Versuchen Sie nicht, gepunktete Dateien (z. B .htaccess
) mit .*
- das stimmt leider auch überein ..
, Dies würde dazu führen, dass alle Dateien im Pfad zum Stammverzeichnis kopiert werden.Ich habe das einmal gemacht (mit rm
, nicht weniger!) und ich musste den Server neu erstellen, weil ich etwas falsch gemacht hatte /var
.
@jwmittag:
Ich habe gerade einen Test auf Ubuntu gemacht und .*
passt, wenn ich benutze cp
.Hier ist ein Beispiel:
root@krash:/# mkdir a
root@krash:/# mkdir b
root@krash:/# mkdir a/c
root@krash:/# touch a/d
root@krash:/# touch a/c/e
root@krash:/# cp -r a/c/.* b
cp: will not create hard link `b/c' to directory `b/.'
root@krash:/# ls b
d e
Wenn .*
hat nicht gepasst ..
, Dann d
sollte nicht drin sein b
.