Ich benutze oft SCP, um Dateien zu kopieren - insbesondere webbezogene Dateien. Das Problem ist, dass ich immer dann, wenn ich das mache, meinen Befehl zum Kopieren versteckter Dateien (z. B. .htaccess) nicht bekommen kann.
Normalerweise rufe ich Folgendes auf:
scp -rp src/ user@server:dest/
Dies kopiert keine versteckten Dateien. Ich möchte das nicht noch einmal aufrufen müssen (indem ich so etwas mache scp -rp src/.* ...
- und das hat sowieso seltsame .
und ..
Implikationen.
Ich habe in der scp
Manpage nichts über "versteckte Dateien einschließen" gesehen.
Wie kann ich das erreichen?
src/.*
auchsrc/..
das übergeordnete Verzeichnis kopiert , oder?Antworten:
Das sollte unbedingt zu versteckten Dateien passen. Das / am Ende der Quelle sagt "jede Datei in diesem Verzeichnis". Trotzdem belegen Sie Tests und Recherchen. Das ist dummes Verhalten.
Die " Antwort " besteht darin, einen Punkt an das Ende der Quelle anzuhängen:
scp -rp src/. user@server:dest/
Die eigentliche Antwort ist die Verwendung von rsync.
quelle
scp -r source/ host:source2
kopiert Punktdateien. Funktioniert in OpenSSH 5.1 ab 2007..
am Ende (2019) aus Sicherheitsgründen nicht mehr funktioniert. Dies wird hier erklärt: superuser.com/questions/1403473/scp-error-unexpected-filenameSie können rsync ausprobieren. Es ist besser für diesen Job geeignet:
(Und die Handbuchseite ist lesenswert.)
quelle
Fügen Sie nach dem Quellverzeichnis keinen Schrägstrich ein. Ihr Code würde so aussehen:
Dadurch wird ein Verzeichnis 'src' unter 'dest' auf dem Remote-Computer erstellt, in dem alle versteckten Dateien enthalten sind. Es ist wahrscheinlich nicht genau das, was Sie wollen, aber es kopiert versteckte Dateien in src.
quelle
Das Folgende wird das Problem lösen, dies wurde vollständig in unserer kontinuierlichen Integrationsumgebung getestet
Ich hoffe es hilft
quelle
scp: error: unexpected filename: .
. Stellen Sie sicher, dass Sie testen, ob es mit Ihrer Distribution funktioniert, Kollege Googler :)Verwenden Sie diesen Befehl, um nur versteckte Dateien zu kopieren
Tatsächliches Spiel ist das
/.[!.]*
Tag, das sich auf Dateien bezieht, die mit.
(versteckt) beginnen.quelle
Keine der oben genannten SCP-Lösungen hat bei mir funktioniert. Allerdings stellte ich fest, dass Folgendes auf Cygwin funktioniert: scp -r Verzeichnis / * Host: Verzeichnis Das '*' stimmte mit allen sichtbaren Dateien überein und übersprang das Unsichtbare.
quelle
Wenn die Kennwortanmeldung auf dem Remotecomputer deaktiviert ist und die Anmeldung nur über einen öffentlichen Schlüssel möglich ist, können Sie Folgendes ausführen:
Es kopiert auch versteckte Dateien.
Beachten Sie auch, dass "user1" die Berechtigung zum Lesen dieser Dateien haben muss. Beispielsweise können Sie mit dieser Methode die ssh-Ordner anderer Benutzer nicht kopieren.
quelle
Da
scp
reguläre Ausdrücke unterstützt werden, wird dies den Trick für Sie tun:scp -rp src/(*|.*) user@server:dest/
quelle
Die verteilte Revisionskontrolle behandelt versteckte Dateien
Aufgrund der Sicherheitsanfälligkeit in CVE-2018-20685 kann der
/.
Trick nicht mehr verwendet werdenscp
. Eine verteiltegit
Versionskontrolle wie oder Hg Mecurial behandelt jedoch versteckte Dateien wie alle anderen Dateien. Hier sind die Befehle für meinen Lieblings- Hg Mercurial :Nachfolgende Änderungen müssen erneut mit festgeschrieben
client:$ hg com -m "commit message"
und dann mit demclient:$ hg push
Befehl übertragen werden. Weitere Informationen zum Übertragen von Änderungen finden Sie in diesem Hg Mercurial-Spickzettel .quelle