Jak skopiować wszystkie pliki z katalogu do zdalnego katalogu za pomocą scp?

68

Moim celem jest skopiowanie tylko wszystkich plików z ~ / local_dir do [email protected] / var / www / html / target_dir przy użyciu scp i nie twórz kategorii local_dir w local_dir.

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

ale nie

/var/www/html/target_dir/local_dir/files.. przy użyciu parametru -r

Edgaras Karka
źródło
1
Nie scp * [email protected]:/var/www/html/target_dirrobi tego, co chcesz? Jeśli tak, edytuj z bardziej szczegółowymi informacjami o tym, co próbujesz zrobić i do tej pory próbowałeś.
Michael Homer
Dołączanie /. już nie działa. Więcej tutaj
Tsulatsi Tamim

Odpowiedzi:

91

scp ma argument -r. Spróbuj użyć:

$ scp -r ~/local_dir [email protected]:/var/www/html/target_dir

Argument -r działa tak jak argument -r arg w cp, przenosi cały folder oraz wszystkie pliki i podkatalogi w środku.

parazyd
źródło
5
Twoje polecenie utworzyło local_dirkatalog w / var / www / html / target_dir moim celem jest kopiowanie tylko plików.
Edgaras Karka,
Przepraszam, źle zrozumiałem. Następnie powtórz polecenie, ale w ten sposób: $ scp -r ~/local_dir [email protected]:/var/www/html/W razie potrzeby zmień nazwę nowego katalogu.
parazyd
8
Lub $ scp -r ~/local_dir/* [email protected]:/var/www/html/target_dircokolwiek pływa łódką.
parazyd
Jak wykluczyć niektóre katalogi z lokalnego podczas kopiowania do zdalnego
Sushivam,
13
Zmień symbol wieloznaczny *na kropkę, .a skopiujesz zawartość katalogu (w tym wszelkie pliki kropek) bez kopiowania samego katalogu. scp -pr ~/local_dir/. [email protected]:/path/to/target_dir
roaima
19

Jeśli twoim celem jest, aby przenieść wszystkie pliki z local_dirtej *zamiennika załatwia sprawę:

$ scp ~/local_dir/* [email protected]:/var/www/html/target_dir

-rOpcja oznacza „rekurencyjnie”, więc trzeba go napisać, kiedy starasz się przenieść cały katalog lub kilka katalogów.

Od man scp:

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

Jeśli więc masz w sobie podkatalogi local_dir, ostatni przykład przesyła tylko pliki, ale jeśli ustawisz tę -ropcję, pliki i katalogi zostaną przesłane.

tachomi
źródło
1+ Ponieważ musisz przeczytać komentarze w zaakceptowanej odpowiedzi, aby uzyskać poprawną odpowiedź, podczas gdy ta tylko wyjaśnia to bezpośrednio.
André Christoffer Andersen
17

Dołączenie /.do katalogu źródłowego spowoduje przeniesienie jego zawartości zamiast samego katalogu. W przeciwieństwie do rozwiązania wieloznacznego, będzie to również obejmować ukryte pliki.

$ scp -r ~/local_dir/. [email protected]:/var/www/html/target_dir

Podziękowania dla tego rozwiązania należą do roaima, ale pomyślałem, że powinien on zostać opublikowany jako rzeczywista odpowiedź, a nie tylko komentarz.

raphinesse
źródło
0

Wykonaj następujące kroki:

  1. Skopiuj katalog local_dirze wszystkimi jego podkatalogami:

    scp -r ~/local_dir [email protected] /var/www/html/target_dir
    
  2. skopiuj tylko zawartość local_dirkatalogu, a nie local_dirsam katalog :

    scp -r ~/local_dir/* [email protected] /var/www/html/target_dir
    
  3. Nie używaj: scp -r ~/local_dir/. [email protected] /var/www/html/target_dirponieważ generuje błąd (właśnie przetestowany i otrzymał następujący błąd):

    scp: error: unexpected filename: .
    
Syed Faraz Umar
źródło