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 user@host.com / 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


1
Nie scp * user@host.com:/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 user@host.com:/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.


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 user@host.com:/var/www/html/W razie potrzeby zmień nazwę nowego katalogu.
parazyd

8
Lub $ scp -r ~/local_dir/* user@host.com:/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/. user@example.com:/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/* user@host.com:/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.


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/. user@host.com:/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.


0

Wykonaj następujące kroki:

  1. Skopiuj katalog local_dirze wszystkimi jego podkatalogami:

    scp -r ~/local_dir user@host.com /var/www/html/target_dir
    
  2. skopiuj tylko zawartość local_dirkatalogu, a nie local_dirsam katalog :

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

    scp: error: unexpected filename: .
    
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.