Wie kopiere ich alle Dateien mit scp von einem Verzeichnis in ein entferntes Verzeichnis?


68

Mein Ziel ist es, mit scp nur alle Dateien von ~ / local_dir nach user@host.com / var / www / html / target_dir zu kopieren und keine local_dir-Kategorie in local_dir zu erstellen.

/var/www/html/target_dir/files..

aber nicht

/var/www/html/target_dir/local_dir/files.. Wenn Sie den Parameter -r verwenden


1
Tut scp * user@host.com:/var/www/html/target_dirnicht was du willst? In diesem Fall bearbeiten Sie bitte detaillierter, was Sie versuchen und was Sie bisher versucht haben.
Michael Homer

Anhängen /. ist nicht mehr zu arbeiten. Mehr hier
Tsulatsi Tamim

Antworten:


91

scp hat das Argument -r. Also versuchen Sie es mit:

$ scp -r ~/local_dir user@host.com:/var/www/html/target_dir

Das Argument -r funktioniert genau wie das Argument -r in cp. Es überträgt Ihren gesamten Ordner sowie alle darin enthaltenen Dateien und Unterverzeichnisse.


5
Ihr Befehl erstellte ein local_dirVerzeichnis in / var / www / html / target_dir. Mein Ziel ist es, nur Dateien zu kopieren.
Edgaras Karka

Entschuldigung, ich habe es falsch verstanden. Wiederholen Sie dann einfach den Befehl, aber so: $ scp -r ~/local_dir user@host.com:/var/www/html/Benennen Sie dann bei Bedarf das neue Verzeichnis um.
Parazyd

8
Oder $ scp -r ~/local_dir/* user@host.com:/var/www/html/target_dirwas auch immer Ihr Boot schwimmt.
Parazyd

Wie man bestimmte Verzeichnisse vom lokalen ausschließt, während auf Remote kopiert
Sushivam

13
Ändern Sie den Platzhalter *in einen Punkt, .und Sie kopieren den Verzeichnisinhalt (einschließlich aller Punktdateien), ohne das Verzeichnis selbst zu kopieren. scp -pr ~/local_dir/. user@example.com:/path/to/target_dir
Roaima

19

Wenn Ihr Ziel ist, alle Dateien aus zu übertragen , ist local_dirder *Platzhalter funktioniert der Trick:

$ scp ~/local_dir/* user@host.com:/var/www/html/target_dir

Die -rOption bedeutet "rekursiv", Sie müssen sie also schreiben, wenn Sie versuchen, ein gesamtes Verzeichnis oder mehrere Verzeichnisse zu übertragen.

Von man scp:

-r 
Recursively copy entire directories. Note that scp follows symbolic links encountered in the tree traversal.

Wenn Sie also Unterverzeichnisse haben local_dir, werden im letzten Beispiel nur Dateien übertragen. Wenn Sie jedoch die -rOption aktivieren, werden Dateien und Verzeichnisse übertragen.


1+ Weil Sie die Kommentare in der akzeptierten Antwort lesen müssen, um zur richtigen Antwort zu gelangen, während diese nur direkt erklärt.
André Christoffer Andersen

17

Durch das Anhängen /.an Ihr Quellverzeichnis wird dessen Inhalt anstelle des Verzeichnisses selbst übertragen. Im Gegensatz zur Wildcard-Lösung werden hier auch versteckte Dateien berücksichtigt.

$ scp -r ~/local_dir/. user@host.com:/var/www/html/target_dir

Die Anerkennung für diese Lösung geht an Roaima, aber ich dachte, es sollte eine tatsächliche Antwort sein, nicht nur ein Kommentar.


0

Folge diesen Schritten:

  1. Kopiere das Verzeichnis local_dirmit all seinen Unterverzeichnissen:

    scp -r ~/local_dir user@host.com /var/www/html/target_dir
    
  2. Kopieren Sie nur den Inhalt local_dirund nicht das Verzeichnis local_dirselbst:

    scp -r ~/local_dir/* user@host.com /var/www/html/target_dir
    
  3. Verwenden Sie nicht: scp -r ~/local_dir/. user@host.com /var/www/html/target_dirda es einen Fehler auslöst (hat gerade getestet und den folgenden Fehler erhalten):

    scp: error: unexpected filename: .
    
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.