sftp: tải lên tất cả các tệp, thư mục và thư mục con có trong một thư mục


27

Trên máy AI có thư mục

/home/a/

Trên máy BI có thư mục

/home/b/

Tôi muốn chuyển tất cả các tệp, thư mục và thư mục con của / home / a in / home / b bằng sftp Trên máy AI đã thử các lệnh:

sftp fibon82@machineB.com
put /home/a/* /home/b/

nhưng nó không hoạt động, tôi nhận được thông báo lỗi: "bỏ qua tệp không thường xuyên / home / a / a1" ... [a1 là thư mục con của a]
Làm cách nào tôi có thể sửa đổi hướng dẫn đặt?

Cảm ơn! :)

CHỈNH SỬA:

Tôi đã giải quyết bằng scp:

scp -r /home/a/ fibon82@machineB.com:/home/b/

2
put -rcũng sẽ làm việc
WakiMiko

1
Ok nhưng làm thế nào tôi có thể biết rằng đối với "đặt lệnh", tùy chọn -r có sẵn? Nếu tôi nhìn vào đây chỉ có cờ -P được mô tả ... Tương tự trong hướng dẫn Cảm ơn! :)
fibon82

Bạn nên đăng nó như là một câu trả lời thay thế.
NN

Vâng. Thay vì EDIT câu hỏi của bạn với câu trả lời, bạn nên trả lời câu hỏi của riêng bạn và chấp nhận nó.

@ fibon82 Để biết hướng dẫn cập nhật về OpenSSH sftp, hãy tham khảo dự án OpenSSH .
Martin Prikryl

Câu trả lời:


21

Mặc dù không hoàn toàn tương đương với sftp, rsync là một sự thay thế rất mạnh mẽ cho scp và sftp, đặc biệt là khi cập nhật các bản sao từ máy A sang máy B, vì nó không sao chép các tệp chưa bị thay đổi; nó cũng có thể xóa các tệp khỏi máy B đã bị xóa khỏi máy A (tất nhiên chỉ khi nó được thông báo).

Trong trường hợp của bạn, cú pháp sẽ là

rsync -zrp /home/a/ user@remote.host.com:/home/b/

Các -rlựa chọn là cho các tập tin một cách đệ quy sao chép, -zcho phép nén trong quá trình chuyển, và -pbảo tồn các quyền tập tin (tạo tập tin, chỉnh sửa, vv) khi sao chép, mà là cái gì đó scp không làm AFAIK. Nhiều lựa chọn hơn là có thể; như thường lệ, đọc các mantrang.


Ah cảm ơn bạn! :) Một điều mới mà tôi học được!
fibon82

@ fibon82: Bạn được chào đón :)
Karolos

1
Tôi yêu bạn, tôi đã đồng bộ 400MB dữ liệu trong 1 phút chỉ bằng cách sử dụng mã của bạn. Tôi cũng nói thêm bạn cũng nên sử dụng - từ chối nếu không bạn sẽ không nhìn chằm chằm vào cái gì mà không biết chuyện gì đang xảy ra (và ở tốc độ nào :))
Sandro Antonucci

1
Đáng buồn thay rsynckhông nói sftp-Protatio. Vì vậy, nếu bạn thiết lập một sftp-chroot bằng cách sử dụng bản sshdựng tronginternal-sftp thì rsyncthất bại.
Tino

17

Trong sftplệnh này tải lên đệ quy nội dung của thư mục hiện tại vào thư mục hiện tại từ xa:

 put -r .

Xem man sftp.


Công -rtắc chỉ được hỗ trợ kể từ OpenSSH 5.4 .
Martin Prikryl

1
Lưu ý rằng công -rtắc chỉ là phía máy khách (một phần của sftplệnh). Vì vậy, phía máy chủ (ở đây: nhận) không cần OpenSSH 5.4, chỉ có máy khách cần hỗ trợ.
Tino

9

scp(bản sao bảo mật) là Linux de facto để truyền tệp qua một đường hầm an toàn. Trong trường hợp của bạn, bạn sẽ muốn sử dụng công tắc đệ quy, ví dụ:

scp -r /home/a/ user@remote.host.com:/home/b/

5
sftp và scp thực sự là các giao thức khác nhau, cả hai đều dựa trên ssh.
paradroid

1
Có, nếu máy chủ chỉ cho phép giao thức sftp, câu trả lời này không hoạt động.
рüффп

4

Hãy thử sử dụng

put -r /home/a/ /home/b/

để biết thêm thông tin hãy kiểm tra: cái này


1
Công -rtắc chỉ được hỗ trợ kể từ OpenSSH 5.4 .
Martin Prikryl

Lưu ý rằng công -rtắc chỉ là phía máy khách (một phần của sftplệnh). Vì vậy, phía máy chủ (ở đây: nhận) không cần OpenSSH 5.4, chỉ có máy khách cần hỗ trợ. Và: Đây phải là câu trả lời được chấp nhận , vì nhận được (có thể không được hỗ trợ) rsynclàm câu trả lời cho câu hỏi được gắn thẻ sftplà một chút khó hiểu.
Tino

0

Trên thực tế, put -r nên làm việc. Nhưng thư mục định mệnh cần phải có trên máy chủ từ xa của bạn:

sftp> put -r sourcefolder
 Uploading sourcefolder/ to /user/folder
 Couldn't canonicalize: No such file or directory
 ....
sftp> mkdir sourcefolder
sftp> put -r sourcefolder
 Uploading sourcefolder/ to /user/folder/sourcefolder
 Entering sourcefolder/
 sourcefolder/file1
 sourcefolder/file2

Bạn đã thêm tài liệu tham khảo và bằng chứng hỗ trợ những gì bạn nêu và xác nhận câu trả lời này chưa được trả lời trong một trong những câu trả lời hiện có trên bài đăng. Đọc qua "Tại sao tôi cần 50 danh tiếng để bình luận" để đảm bảo bạn hiểu cách bạn có thể bắt đầu bình luận.
Pimp Juice IT

-1

Trong trường hợp của tôi rsynclà không thể nên tôi đã sử dụng:

mput -rp /home/a/ /home/b/

Không có mputlệnh nào trong OpenSSH sftp. Có thể bạn tham khảo psftp?
Martin Prikryl
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.