2008-12-05 35 views
355

Tôi đang chuyển SSH thành máy chủ từ xa trên dòng lệnh và cố gắng sao chép thư mục vào máy cục bộ của mình bằng lệnh scp. Tuy nhiên, máy chủ từ xa trả về thông báo "sử dụng" này:Truyền tệp qua SSH

[Stewart:console/ebooks/discostat] jmm% scp -p ./styles/ 
usage: scp [-1246BCEpqrv] [-c cipher] [-F ssh_config] [-i identity_file] 
      [-l limit] [-o ssh_option] [-P port] [-S program] 
      [[[email protected]]host1:]file1 [...] [[[email protected]]host2:]file2 
[Stewart:console/ebooks/discostat] jmm% 

Tôi muốn có thể truyền tệp theo cả hai hướng. Từ những gì tôi đọc, tôi nghĩ rằng lệnh trên sẽ hoạt động để tải xuống và scp -p [localpath] [remotepath] để tải lên?

Trả lời

12

Không, bạn vẫn cần phải scp [from] [to] bất cứ cách nào bạn đang sao chép

Sự khác biệt là, bạn cần phải scp -p server:serverpath localpath

+5

mục đích -p là gì? – Qinjie

562

Bạn cần phải scp một cái gì đó ở đâu đó. Bạn có scp ./styles/, vì vậy bạn đang nói bản sao an toàn ./styles/, nhưng không phải là nơi để sao chép nó.

Nói chung, nếu bạn muốn tải về, nó sẽ đi.

# download: remote -> local 
scp [email protected]_host:remote_file local_file 

nơi local_file thực sự có thể là một thư mục để đặt các tập tin bạn đang sao chép trong Để tải lên, đó là ngược lại:

# upload: local -> remote 
scp local_file [email protected]_host:remote_file 

Nếu bạn muốn sao chép toàn bộ thư mục, bạn sẽ cần -r. Hãy nghĩ về scp giống như cp, ngoại trừ bạn có thể chỉ định tệp có [email protected]_host:file cũng như chỉ các tệp cục bộ.

Chỉnh sửa: Như đã lưu ý trong nhận xét, nếu tên người dùng trên máy chủ cục bộ và từ xa giống nhau, thì người dùng có thể bị bỏ qua khi chỉ định tệp từ xa.

+2

Lưu ý rằng nếu người dùng giống nhau trên máy chủ từ xa và máy chủ lưu trữ cục bộ, tên người dùng có thể được bỏ qua: scp hello.c myserver.net:~/projects/ – strager

+0

Có, đúng, tôi sẽ thêm ghi chú về điều đó. Tôi đưa người dùng vào bởi vì sau đó các ví dụ tôi đưa ra sẽ luôn hoạt động. :) – lemnisca

+1

+1: Thêm định dạng để làm cho nó rõ ràng hơn một chút. –

122

Nếu sao chép vào/từ máy tính để bàn của bạn, hãy sử dụng WinSCP hoặc nếu trên Linux, Nautilus hỗ trợ SCP thông qua tùy chọn Kết nối với máy chủ.

scp chỉ có thể sao chép tệp vào máy chạy sshd, do đó bạn cần chạy phần mềm ứng dụng khách trên máy từ xa từ máy bạn đang chạy scp.

Nếu sao chép trên dòng lệnh, sử dụng:

# copy from local machine to remote machine 
scp localfile [email protected]:/path/to/whereyouwant/thefile 

hoặc

# copy from remote machine to local machine 
scp [email protected]:/path/to/remotefile localfile 
+2

Bạn là người đàn ông. Tôi đã triển khai một blog trong chưa đầy 10 giây mà không cần cài đặt thêm ở phía máy chủ! –

+0

Điều này làm việc hoàn hảo. Tôi đã sử dụng msysgit trong cmd vì nó có cả scp và ssh. –

+1

Điều này làm việc hoàn hảo. Tôi đã sử dụng scp * user @ host:/path/to/ở đâu –

21

Bạn cần phải xác định cả hai nguồn và đích, và nếu bạn muốn sao chép danh bạ, bạn nên nhìn vào - tùy chọn r.

Vì vậy, để đệ quy copy/home/user/bất cứ điều gì từ máy chủ từ xa vào thư mục hiện tại của bạn:

scp -pr [email protected]:whatever .