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 [email protected] / 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

Edgaras Karka
quelle
1
Tut scp * [email protected]:/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 [email protected]:/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.

parazyd
quelle
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 [email protected]:/var/www/html/Benennen Sie dann bei Bedarf das neue Verzeichnis um.
Parazyd
8
Oder $ scp -r ~/local_dir/* [email protected]:/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/. [email protected]:/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/* [email protected]:/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.

Tachomi
quelle
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/. [email protected]:/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.

Raffinesse
quelle
0

Folge diesen Schritten:

  1. Kopiere das Verzeichnis local_dirmit all seinen Unterverzeichnissen:

    scp -r ~/local_dir [email protected] /var/www/html/target_dir
    
  2. Kopieren Sie nur den Inhalt local_dirund nicht das Verzeichnis local_dirselbst:

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

    scp: error: unexpected filename: .
    
Syed Faraz Umar
quelle