Odpowiedzi:
sftp, podobnie jak cpi scp, wymaga, aby podczas kopiowania folderu (i oczywiście jego zawartości), trzeba było wyraźnie powiedzieć mu, że chcesz przenieść folder rekurencyjnie z -ropcją.
Dodaj więc -rdo polecenia.
-rdo sftppolecenia podczas łączenia. sftp -r user@host
Couldn't canonicalise: No such file or directory.
# sftp user@remote-host #> get -r remote-folder
Mogę tylko zasugerować, że używasz rsync. Jest to nieco standard branżowy, gdy przenosisz pliki przez bezpieczne połączenia.
rsync -alPvz ./source_dir server.com:destination_dir
Właśnie tego używam od lat.
( -aopcja zajmuje się np. rekurencją katalogu)
-a= rekurencja + zachowaj dowiązania symboliczne, uprawnienia, czasy modyfikacji, właściciela, grupę, pliki specjalne i pliki urządzeń (te ostatnie wymagają uprawnień superużytkownika); -l= zachowaj dowiązania symboliczne (już zawarte w -a); -P= pokaż postęp podczas transferu + zachowaj częściowo przesłane pliki; -v= pełny tryb (jednak wydaje się obowiązkowy, gdy używa się go, -Paby uniknąć dziwnego błędu (błąd?) protocol version mismatch); -z= włącz kompresję przesyłanych danych.
-lnależy użyć przełącznika, czy nie. Pamiętam starsze wersje nie obejmują -lw -a.
Możesz także korzystać z użycia scp. Ogólny format to
scp -rp sourceDirName username@server:destDirName
scpoznacza „bezpieczną kopię”. Flagi są
-r przechodzić do podkatalogów-p zachowaj czasy modyfikacjiUważam, że pozostałe elementy są oczywiste
Jeśli rsyncnie ma takiej opcji, poleciłbym następnie lftp:
lftp sftp://user@host.com/path/path/
Następnie użyj mirrorpolecenia, aby przesyłać rekurencyjnie, w następujący sposób:
mirror -R
(Zauważ, że rekurencja jest domyślnie. -RJest na odwrocie - aby przesłać polecenia lustro zamiast pobrania Spróbuj dodać. --dry-runZrobić próbę, aby upewnić się, że robi to, czego oczekują.)
Lub przesłać bez rekurencji:
mirror --no-recursion
Musisz przejść do cdkatalogów, które chcesz dublować. Działa świetnie!
Jeśli możesz, użyj sshfs . Jest to system plików FUSE , dostępny na większości współczesnych urządzeń unikatowych i współpracuje z dowolnym serwerem SFTP. Jest to zdalny system plików: umożliwia manipulowanie zdalnymi plikami (za pośrednictwem protokołu SFTP) za pomocą zwykłych narzędzi.
mkdir /mount/point
sshfs server.example.com:/remote/path /mount/point
ls /mount/point
cp -Rp /mount/point/somedir /local/location
fusemount -d /mount/point
To trochę kłótnia, ale dla mnie działa to:
sshdo logowania do zdalnego komputerasftpze zdalnego komputera na lokalnygetpolecenia z -ropcją przeniesienia katalogu i wszystkich jego plików.sftp> get -r data /opt/bin get: Invalid flag -r
Jeśli pytasz w rzeczywistości „jak użyć sftp do przeniesienia katalogu”, to
sftp -r user@server
Ale jeśli przenosisz katalog, mogę zaproponować dwie lepsze opcje, w zależności od twoich potrzeb. sftpwymaga zalogowania się do zdalnego serwera za pomocą wiersza polecenia podobnego do ssh, ale jeśli wszystko, czego potrzebujesz, to pliki, istnieją łatwiejsze i szybsze sposoby.
Scp
Aby przesłać jednorazowo, aby przesłać, spróbuj:
# upload source directory to remote server
scp -rp source_dir user@server:dest
#download directory from remote server:
scp -rp user@server:source_dir dest
#specifying ssh key:
scp -rp -i ~/.ssh/key user@server:source_dir dest
#remote directory has spaces
scp -rp -i ~/.ssh/key user@server:"source\\ dir" dest
Rsync
Jeśli planujesz regularnie synchronizować katalogi, użycie rsync ma sens. Wykonuje delty między dwoma katalogami, oszczędzając czas przesyłania i danych przez przewód.
rsync -r -a -v -e ssh --delete source_dir user@server:dest
Oto lista niektórych z najczęstszych opcji rsync: ( wzięte stąd )
Mam nadzieję, że to pomaga!
możesz dostać się z serwera na lokalną ścieżkę przez
scp -rp user@server:directoryname(full path) .