2012-07-21 10 views
9

Czy istnieje sposób na scp wszystkie pliki w katalogu rekurencyjnie do zdalnego komputera i zachować ich oryginalne nazwy plików, ale nie kopiować katalogu, w którym się znajduje?Rekurencyjnie scp oprócz bieżącego katalogu

dir1/file 
dir1/dir2/file2 

dzięki czemu zawartość dir1 zostanie skopiowana tylko. dir1 nie zostałyby utworzone. Katalog dir2 zostanie utworzony z wewnątrz w postaci file2.

Próbowałem już scp -r dir1 remote:/newfolder, ale tworzy dir1 w katalogu /newfolder na remote. Nie chcę, aby tworzył ten katalog dir1. Po prostu umieść wszystkie pliki wewnątrz dir1 w newfolder.

Odpowiedz

19
cd dir1 
scp -r . remote:/newfolder 

to uniknąć dając scp szansa, aby zrobić coś z nazwą dir1 na zdalnej maszynie. Można również preferują:

(cd dir1; scp -r . remote:/newfolder) 

Pozostawia powłokę w oryginalnym katalogu, pracując same (ponieważ uruchamia sub-shell, który wykonuje operacje cd i scp).

8

Oznacza to skopiować listę plików dokonywanych przez rozszerzenie powłoki dir1/* do zdalnej lokalizacji zdalnej:/Newfolder

scp -r dir1/* remote:/newfolder 
+0

Podoba mi się ta odpowiedź, ponieważ unika konieczności wykonywania "cd". Jeśli twoja następna wypowiedź po 'scp' spodziewa się, że będziesz w oryginalnym reżimie, to musiałbyś zrobić jeszcze jeden krok do' cd' z powrotem do niego. – jreancsu

1

Możesz użyć składni kropkowej ze ścieżką względną.

scp -r dir1/. remote:/newfolder 

Jeśli katalog zdalny nie istnieje, zostanie utworzony.

Powiązane problemy