Câu hỏi Làm thế nào để có được toàn bộ thư mục trong sftp?


Tôi chỉ học cách sử dụng sftp và tôi muốn sao chép một thư mục từ máy tính từ xa sang máy tính cục bộ của mình. Nếu tôi thử

get [directory]

nó mang lại cho tôi lỗi này:

Cannot download non-regular file: /home/mpirocch/Documents

get -R cũng không hoạt động.


161
2017-09-12 21:39


gốc


Đặt / đệ quy đệ quy đã được thêm vào OpenSSH trong 5.4, được phát hành vào năm 2010. Bạn có thể cân nhắc nâng cấp máy chủ của mình vì nó cũng bổ sung nhiều sửa lỗi và các tính năng bảo mật tốt hơn. - Lèse majesté


Các câu trả lời:


Sử dụng -r (đệ quy) cờ:

get -r *

232
2017-11-29 21:38



Cảm ơn bạn đã đặt câu trả lời thực sự trả lời câu hỏi. - jonnyflash
Đưa cho tôi: get: Invalid flag -r - ghbarratt
Điều này cũng mang lại cho tôi Cờ không hợp lệ. Tôi không chắc chắn điều này được hỗ trợ trên tất cả các hệ thống. - Ben
@Ben: Khi tôi hỏi câu hỏi này trong năm 2009, -r cờ không tồn tại. Hệ thống của bạn có được cập nhật không? - Matthew
@silvinci không tất cả các hệ thống hiện tại. Tùy chọn bất hợp pháp với CentOS 6.4 openssh-clients-5.3p1-84.1.el6.x86_64 - CrackerJack9


Sử dụng:

scp -r mpirocch@my-server:/home/mpirocch/Documents Documents

51
2017-09-12 21:51



Điều này làm việc, nhưng nó sẽ được tốt đẹp để có thể làm điều này từ SFTP (vì vậy tôi có thể xem những gì tôi sao chép trước khi tôi sao chép nó). Điều này có thể không? - Matthew
@Matthew: Tôi không nghĩ vậy. Tôi đã tự hỏi mình câu hỏi tương tự trong một thời gian và câu trả lời hay nhất mà tôi có cho thời điểm này là scp -r. Hoặc bạn có thể sử dụng ứng dụng khách SFTP nâng cao như Filezilla. - Cristian Ciupitu
scp -r sẽ theo dõi các liên kết ... - jsleuth
Một số hệ thống có thể cho phép sftp, nhưng không scp truy cập. - Turion


Sử dụng lftp:

lftp sftp://user@host

Sau đó, sử dụng mirror lệnh để đệ quy tải lên, như thế này:

mirror -R

Hoặc chỉ tải lên:

mirror

Bạn phải cd vào các thư mục bạn muốn sao chép. Hoạt động kỳ diệu!


36
2018-04-08 13:54



1 lftp giống như một chút ma thuật và niềm vui! - WCWedin


Không sử dụng chương trình sftp trực tiếp nếu bạn có thể tìm thấy một cái gì đó tốt hơn. Đối với Linux, nhiều trình quản lý tệp (ít nhất là Nautilus và Dolphin, các GNOME và KDE) hỗ trợ sftp một cách tự nhiên, và luôn có sshfs. Đối với các cửa sổ, có WinSCP và có thể khác. Điểm của tất cả những điều này là để cho phép bạn truy cập các tập tin trên sftp như thể họ đang trên một tập tin thường xuyên, vì vậy bạn không cần phải quan tâm rằng bạn đang truy cập chúng trên sftp.


15
2017-09-13 03:11



Wow, nautilus hoạt động rất tốt với SFTP. Tôi đã thêm một dấu trang vào Nautilus, và bây giờ nó rất dễ dàng. Cảm ơn! - Matthew
Tôi đã có vấn đề về hiệu suất với Nautilus SFTP. Vâng, nó thực sự thuận tiện nhưng tôi đã không thể bão hòa 1 Gbit / s mạng thông qua Nautilus, trong khi với đồng bằng sftp/ssh giao diện dòng lệnh tôi là (chuyển giao tập tin cca 100 MB / s). Vì vậy, vấn đề là Nautilus trên GNU / Linux Mint. - stamster


cũng hướng dẫn nhỏ này sẽ giúp, phản ánh một máy chủ từ xa vào thư mục cục bộ với lftp

lftp sftp://user:password@server.org:22 -e 'mirror --verbose --use-pget-n=8 -c /remote/path /local/path'

  • sftp:// = sử dụng giao thức SFTP
  • mirror = chế độ gương
  • verbose = hiển thị các tệp đang được tải xuống
  • use-pget-n = số lượng phân đoạn, thực sự hữu ích để tăng tốc các tệp lớn
  • parallel = tải xuống nhiều tệp cùng một lúc

nếu bạn muốn tải xuống các tệp trong chuyển đổi song song use-pget-n=8 với --parallel=8 

hy vọng điều này sẽ giúp bất cứ ai cần phải phản chiếu một thư mục từ xa vào một thư mục cục bộ


13
2018-03-10 01:18



Cảm ơn, điều này làm việc cho tôi, sau khi các phương pháp khác không thành công (đặc biệt là không có tùy chọn "-r" trên sftp). Phần đầu tiên của lệnh trong trường hợp của tôi cần được trích dẫn, do ký tự đô la trong mật khẩu lftp 'sftp://user:pa$$word@server.org:22' -e 'mirror --verbose --use-pget-n=8 -c /remote/path /local/path' - Jason


Thử mget thay vì get.

Làm rõ: mget  sẽ làm việc nếu bạn ở trong thư mục bạn muốn sao chép; nếu bạn làm một cái gì đó như thế này:

sftp> cd dir_to_get
sftp> mget *

nó sẽ nhận tất cả các tệp trong thư mục đó. Tuy nhiên, nó sẽ không đệ quy lấy nội dung của bất kỳ thư mục con nào.


12
2017-09-12 22:34



mget không làm việc tốt hơn là có được cho tôi. - Matthew
không thể tải xuống tệp không thường xuyên với điều này - Dchris
Điều này làm việc cho tôi trên một hệ thống mà 'get-r' không hoạt động. - Tchotchke


get -r [directory]

được [directory] và mọi thứ dưới nó, ở đâu r viết tắt của đệ quy. Tôi tìm thấy điều này chỉ bằng cách nhập help từ sftp.


9
2018-03-06 16:56



IMO đây là câu trả lời hay nhất cho câu hỏi này. :) - ramrunner
Đây là bản sao của một câu trả lời từ 29 tháng 11 '10 (gần một năm rưỡi trước). - Cristian Ciupitu