Recursive put / get został dodany do OpenSSH w wersji 5.4, która została wydana w 2010 roku. Możesz rozważyć aktualizację swoich serwerów, ponieważ dodaje ona również wiele poprawek błędów i lepszych funkcji bezpieczeństwa.
To działa, ale byłoby miło móc to zrobić z SFTP (aby zobaczyć, co kopiuję, zanim go skopiuję). czy to możliwe?
Matthew
@Matthew: Nie wydaje mi się. Od pewnego czasu zadaję sobie to samo pytanie i najlepszą odpowiedzią, jaką mam w tej chwili scp -r. Lub możesz użyć zaawansowanego klienta SFTP, takiego jak Filezilla.
Cristian Ciupitu,
1
scp -r będzie podążał za dowiązaniami symbolicznymi ...
jsleuth
5
Niektóre systemy mogą zezwalać na dostęp sftp, ale nie scpmogą.
Następnie w lftp przejdź cddo katalogu, który chcesz skopiować, i użyj mirrorpolecenia, aby rekurencyjnie pobrać wybrany katalog, w następujący sposób:
mirror
To polecenie akceptuje opcje i argumenty:
mirror [ OPCJE ] [ źródło [ cel ]]
Na przykład opcja -R(lub --reverse) spowoduje przesłanie lokalnego drzewa katalogów do katalogu zdalnego:
Dzięki, działało to dla mnie po tym, jak inne metody zawiodły (w szczególności brak opcji „-r” na sftp). Pierwsza część polecenia w moim przypadku musiała zostać zacytowana z powodu znaków dolara w haślelftp 'sftp://user:[email protected]:22' -e 'mirror --verbose --use-pget-n=8 -c /remote/path /local/path'
Jason
15
Nie używaj bezpośrednio programu sftp, jeśli możesz znaleźć coś lepszego. W Linuksie wiele menedżerów plików (przynajmniej Nautilus i Dolphin, GNOME i KDE) obsługuje natywnie sftp i zawsze jest sshfs. W systemie Windows jest WinSCP i prawdopodobnie inne . Chodzi o to, aby umożliwić ci dostęp do plików przez sftp, tak jakby były one na zwykłym systemie plików, więc nie musisz się martwić, że masz do nich dostęp przez sftp.
Wow, nautilus działa bardzo dobrze z SFTP. Dodałem zakładkę w Nautilusie, a teraz jest to absurdalnie łatwe. Dzięki!
Matthew
Miałem problem z wydajnością Nautilus SFTP. Tak, to naprawdę wygodne, ale nie byłem w stanie nasycić sieci 1 Gbit / s przez Nautilus, podczas gdy sftp/sshbyłem przy zwykłym interfejsie wiersza poleceń (transfer plików około 100 MB / s). Problemem był Nautilus na GNU / Linux Mint.
stamster
13
Spróbuj mgetzamiast get.
Wyjaśnienie: mgetbędzie działać, jeśli znajdziesz się w katalogu, który chcesz skopiować; jeśli zrobisz coś takiego:
sftp> cd dir_to_get
sftp> mget *
pobierze wszystkie pliki z tego katalogu. Jednak będzie to nie rekurencyjnie uzyskać zawartość wszelkich podkatalogów.
Odpowiedzi:
Użyj
-r
flagi (rekurencyjnej):źródło
get: Invalid flag -r
-r
flaga nie istniała. Czy twój system jest aktualny?Posługiwać się:
źródło
scp -r
. Lub możesz użyć zaawansowanego klienta SFTP, takiego jak Filezilla.sftp
, ale niescp
mogą.Użyj
lftp
:Następnie w lftp przejdź
cd
do katalogu, który chcesz skopiować, i użyjmirror
polecenia, aby rekurencyjnie pobrać wybrany katalog, w następujący sposób:To polecenie akceptuje opcje i argumenty:
Na przykład opcja
-R
(lub--reverse
) spowoduje przesłanie lokalnego drzewa katalogów do katalogu zdalnego:Zobacz
lftp(1)
stronę podręcznika na stronie projektu lub na Debian.org, gdzie znajdziesz inne polecenia i opcje.źródło
cóż, ten mały przewodnik powinien pomóc zdublować serwer zdalny do lokalnego folderu za pomocą lftp
lftp sftp://user:[email protected]:22 -e 'mirror --verbose --use-pget-n=8 -c /remote/path /local/path'
sftp://
= używa protokołu SFTPmirror
= tryb lustrzanyverbose
= pokazuje pobierane plikiuse-pget-n
= liczba segmentów, naprawdę przydatna do przyspieszenia dużych plikówparallel
= pobiera pliki mnożnika w tym samym czasiejeśli chcesz pobierać pliki równolegle, wyłącz
use-pget-n=8
z--parallel=8
Mam nadzieję, że pomoże to każdemu, kto chce wykonać kopię lustrzaną folderu zdalnego do folderu lokalnego
źródło
lftp 'sftp://user:[email protected]:22' -e 'mirror --verbose --use-pget-n=8 -c /remote/path /local/path'
Nie używaj bezpośrednio programu sftp, jeśli możesz znaleźć coś lepszego. W Linuksie wiele menedżerów plików (przynajmniej Nautilus i Dolphin, GNOME i KDE) obsługuje natywnie sftp i zawsze jest sshfs. W systemie Windows jest WinSCP i prawdopodobnie inne . Chodzi o to, aby umożliwić ci dostęp do plików przez sftp, tak jakby były one na zwykłym systemie plików, więc nie musisz się martwić, że masz do nich dostęp przez sftp.
źródło
sftp/ssh
byłem przy zwykłym interfejsie wiersza poleceń (transfer plików około 100 MB / s). Problemem był Nautilus na GNU / Linux Mint.Spróbuj
mget
zamiastget
.Wyjaśnienie:
mget
będzie działać, jeśli znajdziesz się w katalogu, który chcesz skopiować; jeśli zrobisz coś takiego:pobierze wszystkie pliki z tego katalogu. Jednak będzie to nie rekurencyjnie uzyskać zawartość wszelkich podkatalogów.
źródło
dostaje
[directory]
i wszystko pod nim, gdzier
oznacza rekurencję. Znalazłem to, pisząchelp
zsftp
.źródło
Podobnie jak w przypadku
cp
:Powyższe pozwoli zachować czasy i tryby oryginalnych plików i podkatalogów. Jest to szczególnie przydatne w przypadku pobierania kopii zapasowych.
źródło
Mam folder Java dist na serwerze zdalnym, na którym mam następujące drzewo:
Cel: chcę używać SFTP? I umieść je w / tmp / <>
Krok 1. sftp remoteuser @ ip
Krok 2. cd / var / tmp
Krok 2. lmkdir / tmp / dist; lmkdir / tmp / dist / lib
Krok 3. lcd / tmp / dist
Krok 4. mget *
Krok 5. lcd / tmp / dist / lib
Krok 6. mget *
Krok 7. Wreszcie mam swój cel
źródło