2009-10-20 30 views
14

Lệnh sftp dòng lệnh trong Ubuntu của tôi không được cài đặt đệ quy. Tôi đã tìm thấy một số cuộc tranh luận từ năm 2004 về việc triển khai tính năng này với công tắc tùy chọn -R. Vì vậy, tôi thấy một số loại đệ quy tự thực hiện là lựa chọn duy nhất.Cách triển khai đặt đệ quy trong sftp

Tức là.

  • lặp thông qua danh sách thư mục
  • cd vào thư mục
  • mkdir họ nếu không tồn tại
  • đặt file

tôi đang lập kế hoạch về việc này với bash, nhưng bất kỳ ngôn ngữ khác sẽ đủ .

Rsync hoặc scp không phải là tùy chọn vì tôi không có quyền truy cập hệ vỏ vào máy chủ. Chỉ sftp.

+1

nhìn vào câu trả lời của tôi cho các giải pháp sử dụng lftp –

+0

tại sao truy cập shell cần thiết cho scp? – user102008

Trả lời

16

Nhìn vào lftp. Đó là ứng dụng truyền tệp mạnh mẽ hỗ trợ ftp, ftps, http, https, hftp, cá (chuyển tệp qua ssh shell phiên) và sftp. Nó có giao diện tương tác giống như ftp, nhưng cũng cho phép chỉ định tất cả các lệnh tại dòng lệnh. Hãy xem mput (các mẫu không đệ quy nhưng xử lý hình cầu) và các lệnh mirror (rsync của người nghèo).

tôi sử dụng nó với một máy chủ mà chỉ xử lý cập nhật sftp như thế này:

lftp -c "open -u $MYUSER,$MYPASSWORD sftp://$TARGET ; mirror -R $SOME_DIRECTORY" 
+0

Cảm ơn, lftp dường như thực hiện công việc. May mắn là tôi không có những ràng buộc tương tự mà tôi đã quay lại '09 :) – aarreoskari

0

Tôi đoán bạn có thể làm điều này với bash nhưng nó sẽ có rất nhiều công việc. Thay vào đó, tôi đề nghị có một cái nhìn tại Python and the Chilkat library.

0

Trong Java, bạn có thể sử dụng edtFTPj/PRO, sản phẩm thương mại của chúng tôi, để chuyển đệ quy qua SFTP. Ngoài ra, bạn có thể muốn xem xét SCP - thường hỗ trợ đệ quy và chạy trên SSH.

0

Làm thế nào về sshfs?

Kết hợp, tất nhiên, với cp -r.

Hoặc, không tự mình, rsync -r.

+0

Trích dẫn từ câu hỏi: "Rsync hoặc scp không phải là một lựa chọn vì tôi không có quyền truy cập trình bao vào máy chủ. Chỉ sftp". Sshfs yêu cầu quyền truy cập ssh và tôi chỉ có sftp. – aarreoskari

+0

Huh. Tôi chưa bao giờ nghe nói về việc truy cập sftp mà không truy cập ssh, vì vậy tôi đoán rằng bộ não của tôi đã bỏ qua phần đó. Bạn vẫn có thể thử sshfs. Tôi không thực sự biết liệu nó hoạt động bằng ssh hay sftp. Nếu bạn đang sử dụng GNOME hoặc KDE, bạn chỉ có thể nhập đường dẫn sftp vào trình duyệt tệp tương ứng của chúng. –

0

Sau nhiều câu trả lời googling và tốt, tôi đã sử dụng Truyền đồng bộ hóa cho công việc. Không phải là một giải pháp rất tốt, nhưng thực hiện công việc.

2

GUI FTP client FileZilla cũng hỗ trợ SFTP và cũng hỗ trợ tải lên và tải xuống trong khi thư mục.

1

Trên dòng lệnh, bạn có thể thực hiện điều đó bằng cách sử dụng gói putty-tools. Nó đi kèm với một sự thay thế sftp gọi là psftp.

Hỗ trợ mput -r sao chép thư mục cục bộ sang điều khiển từ xa theo cách đệ quy.

2

Trong khi tôi nghĩ rằng lftp là lựa chọn tốt nhất nếu nó có sẵn, tôi đã bị mắc kẹt trên một cài đặt Cent OS cổ và cần phải thực hiện một đệ quy thông qua SFTP chỉ.Dưới đây là những gì tôi đã làm:

find dir -type d -exec echo 'mkdir {}' \; | sftp [email protected] 
find dir -type f -exec echo 'put {} {}' \; | sftp [email protected] 

Vì vậy, về cơ bản đảm bảo tất cả các thư mục tồn tại và sau đó gửi tệp.

1

ubuntu của tôi 12.04 đi kèm với put -r trong sftp

Các vấn đề liên quan