Kiedy próbuję użyć sftp do przesłania katalogu zawierającego pliki, pojawia się komunikat o błędzie:
skipping non-regular file directory_name
Katalog zawiera kilka plików i dwa podkatalogi.
Co ja robię źle?
sftp
, podobnie jak cp
i 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 -r
opcją.
Dodaj więc -r
do polecenia.
-r
dosftp
polecenia 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.Właśnie tego używam od lat.
(
-a
opcja zajmuje się np. rekurencją katalogu)źródło
-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,-P
aby uniknąć dziwnego błędu (błąd?)protocol version mismatch
);-z
= włącz kompresję przesyłanych danych.-l
należy użyć przełącznika, czy nie. Pamiętam starsze wersje nie obejmują-l
w-a
.Możesz także korzystać z użycia
scp
. Ogólny format toscp
oznacza „bezpieczną kopię”. Flagi są-r
przechodzić do podkatalogów-p
zachowaj czasy modyfikacjiUważam, że pozostałe elementy są oczywiste
źródło
To działa dla mnie:
1) połącz za pośrednictwem
sftp
zdalnego hosta2) przejdź do zdalnego katalogu, który chcesz skopiować. (Przykład: muzyka CD)
3) przejdź do katalogu lokalnego, do którego chcesz skopiować pliki. (Przykład: pulpit lcd)
4) Wydaj to polecenie:
get -r *
źródło
Jeśli
rsync
nie ma takiej opcji, poleciłbym następnielftp
:Następnie użyj
mirror
polecenia, aby przesyłać rekurencyjnie, w następujący sposób:(Zauważ, że rekurencja jest domyślnie.
-R
Jest na odwrocie - aby przesłać polecenia lustro zamiast pobrania Spróbuj dodać.--dry-run
Zrobić próbę, aby upewnić się, że robi to, czego oczekują.)Lub przesłać bez rekurencji:
Musisz przejść do
cd
katalogów, które chcesz dublować. Działa świetnie!źródło
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.
źródło
To trochę kłótnia, ale dla mnie działa to:
ssh
do logowania do zdalnego komputerasftp
ze zdalnego komputera na lokalnyget
polecenia z-r
opcją przeniesienia katalogu i wszystkich jego plików.źródło
sftp> get -r data /opt/bin get: Invalid flag -r
Jeśli pytasz w rzeczywistości „jak użyć sftp do przeniesienia katalogu”, to
Ale jeśli przenosisz katalog, mogę zaproponować dwie lepsze opcje, w zależności od twoich potrzeb.
sftp
wymaga 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:
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.
Oto lista niektórych z najczęstszych opcji rsync: ( wzięte stąd )
Mam nadzieję, że to pomaga!
źródło
możesz dostać się z serwera na lokalną ścieżkę przez
źródło