Câu hỏi Làm thế nào để scp một thư mục từ xa đến địa phương? [đã đóng]


Tôi không chắc liệu có thể scp một thư mục từ xa đến địa phương, nhưng tôi vẫn còn lại không có tùy chọn khác. Tôi sử dụng ssh để đăng nhập vào máy chủ của mình và từ đó tôi muốn sao chép thư mục foo đến home/user/Desktop (địa phương của tôi). Có lệnh nào để tôi có thể làm điều này không?


1931
2017-07-03 05:17


gốc


@ 3bdalla câu hỏi này chắc chắn là về chủ đề cho ngăn xếp tràn mà bao gồm các câu hỏi về "công cụ phần mềm thường được sử dụng bởi các lập trình viên". - Abhi Beckert
Câu hỏi của OP là liệu có thể sao chép tệp từ xa sang máy chủ cục bộ hay không trong khi ssh'd đến máy chủ từ xa. Tôi không chắc tại sao không có câu trả lời duy nhất nào đã giải quyết chính xác câu hỏi của anh ta / cô ấy. - JeffDror
Stack Overflow là một trang web cho các câu hỏi lập trình và phát triển. Câu hỏi này dường như không có chủ đề vì nó không phải là về lập trình hay phát triển. Xem Tôi có thể hỏi những chủ đề nào ở đây trong Trung tâm trợ giúp. Có lẽ Siêu người dùng hoặc là Trao đổi ngăn xếp Unix & Linux sẽ là một nơi tốt hơn để hỏi. Cũng thấy Tôi đăng câu hỏi về Dev Ops ở đâu? - jww
Xin vui lòng xem meta.stackoverflow.com/questions/294217/…. Các câu hỏi vẫn còn ở đây, bạn cũng có thể bầu chọn. Nó không cho phép thêm câu trả lời nữa. - Andre Figueiredo
Tôi đã upvoted câu hỏi để phản đối câu hỏi này đang bị đóng! - gota


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


scp -r user@your.server.example.com:/path/to/foo /home/user/Desktop/

Từ man scp

-r Recursively copy entire directories

3706
2017-07-03 05:21



sử dụng -p để duy trì thời gian sửa đổi tệp, quyền, v.v. người dùng scp -pr @ ... - Ber
Câu trả lời này thiếu lời giải thích quan trọng. Bạn sẽ kết thúc với Desktop/foo hoặc bạn sẽ có Desktop/allcontentsofFooGohere scp dường như hành động kỳ lạ đôi khi với tôi nó có một điều sau đó khác - Toskan
ví dụ này (thường được sử dụng trong các kịch bản lệnh shell): su myuser -c "scp -r /var/www/myapp.org/uploads root@$jcrdevip:/var/www/mydevapp.com/uploads" sẽ sao chép nội dung từ video tải lên thành video tải lên. scp -r /var/www/myapp.org/uploads root@$jcrdevip:/var/www/mydevapp.com/uploads dường như sao chép thư mục tải lên vào mydevapp.com/uploads thư mục tạo thư mục con không mong muốn - Toskan
@ jww Như bạn có thể thấy có hơn 3 nghìn upvotes cho câu trả lời này. Có thể câu hỏi này với câu trả lời là thực sự cần thiết cho mọi người? - Mikhail Morgunov
Kể từ năm 20180724, câu hỏi và câu trả lời này là 2 lượt truy cập hàng đầu cho truy vấn: 'scp copy a dir', có vẻ là một sự xấu hổ đó là 'off topic' cho các nhà phát triển - tôi chắc chắn không có dev nào muốn làm bất cứ điều gì như thế này: ) - decuser


Sử dụng toàn bộ sức mạnh của scp bạn cần thực hiện các bước tiếp theo:

  1. Ủy quyền khóa công khai
  2. Tạo bí danh ssh

Sau đó, ví dụ nếu bạn sẽ có ~ / .ssh / config:

Host test
    User testuser
    HostName test-site.com
    Port 22022

Host prod
    User produser
    HostName production-site.com
    Port 22022

bạn sẽ tự cứu mình khỏi mục nhập mật khẩu và đơn giản hóa scp cú pháp như thế này:

scp -r prod:/path/foo /home/user/Desktop   # copy to local
scp -r prod:/path/foo test:/tmp            # copy from remote prod to remote test

Hơn nữa, bạn sẽ có thể sử dụng hoàn thành đường dẫn từ xa:

scp test:/var/log/  # press tab twice
Display all 151 possibilities? (y or n)

Cập nhật:

Để bật bash-completion từ xa, bạn cần phải có bash-shell trên cả hai <source> và <target> máy chủ và hoàn thành công việc đúng cách. Để biết thêm thông tin, hãy xem các câu hỏi liên quan:

Làm cách nào để bật tự động hoàn thành cho đường dẫn từ xa khi sử dụng scp?
Hoàn thành tab tên tệp SCP


236
2017-12-04 06:21



Không biết về tập tin cấu hình, điều này thật tuyệt vời! - dmastylo
Tab hoàn thành là vô nghĩa, chỉ cần hoàn thành từ các máy chủ địa phương cho tôi. - Bernhard
@ b.long Câu hỏi đặt ra là "Cách sao chép thư mục từ xa foo sang máy tính để bàn cục bộ". Câu trả lời của tôi là "scp -r prod: / path / foo / home / user / Desktop". Hy vọng bạn có thể thấy quan hệ. - Alexander Yancharuk
@Bernhard Đối với tôi là hiển nhiên vì tôi đang sử dụng bash-shell. Cảm ơn đã chỉ cho tôi về điều đó! Đã cập nhật câu trả lời. - Alexander Yancharuk
@ Alexander Yancharuk: Cảm ơn câu trả lời, đây là chi tiết hơn là chỉ bao gồm cú pháp một mình. - Gladiator


Để sao chép tất cả từ Vị trí địa phương đến Vị trí từ xa (Tải lên)

scp -r /path/from/destination username@hostname:/path/to/destination

Để sao chép tất cả từ Vị trí từ xa đến Vị trí địa phương (Tải về)

scp -r username@hostname:/path/from/destination /path/to/destination

Cổng tùy chỉnh ở đâu xxxx Là Cổng tùy chỉnh con số

 scp -r -P xxxx username@hostname:/path/from/destination /path/to/destination

Sao chép vào thư mục hiện tại từ Từ xa đến địa phương

scp -r username@hostname:/path/from/file .

Cứu giúp: 

  1. -r Sao chép đệ quy tất cả các thư mục và tập tin
  2. Luôn sử dụng vị trí đầy đủ từ /, Nhận vị trí đầy đủ của pwd
  3. scp sẽ thay thế tất cả các tệp hiện có
  4. hostname sẽ là tên máy chủ hoặc địa chỉ IP
  5. nếu cổng tùy chỉnh là cần thiết (ngoài cổng 22) sử dụng -P portnumber
  6. . (dấu chấm) - Nó có nghĩa là thư mục làm việc hiện tại, Vì vậy, tải về / sao chép từ máy chủ và dán ở đây chỉ.

Chú thích: Đôi khi cổng tùy chỉnh sẽ không hoạt động do cổng không được phép trong tường lửa, vì vậy hãy đảm bảo rằng cổng tùy chỉnh được cho phép trong tường lửa cho kết nối đến và đi


118
2018-05-23 09:38



Dường như (ít nhất là trong các phiên bản gần đây của Raspbian Jessie và Ubuntu) mà scp sử dụng -P (chữ hoa P) cho cổng, trong khi (kỳ quặc) ssh sử dụng -p (chữ thường). - Adam Plocher
@AdamPlocher, Bạn đúng nhưng tôi luôn sử dụng -p (nhỏ) :) - Shiv Singh
-p được dành riêng để bảo quản "thời gian sửa đổi, thời gian truy cập và chế độ từ tệp gốc". Vì vậy, nếu bạn đang sử dụng cho cổng, nó có thể không làm việc ;-) Trừ khi bạn có một phiên bản khác nhau sử dụng chữ thường p khác nhau. - Adam Plocher
Với ssh, vâng. Không phải với scp (tôi giả định). - Adam Plocher
Tôi nên đặt gì nếu thư mục chứa không gian? - hyprfrcb


Những gì tôi luôn sử dụng là:

scp -r username@IP:/path/to/server/source/folder/  .

. (dấu chấm) : nó có nghĩa là current folder. để sao chép từ máy chủ và chỉ dán ở đây.

IP : có thể là địa chỉ IP như 125.55.41.311 hoặc nó có thể được lưu trữ như ns1.mysite.com.


39
2018-06-10 07:41



Cảm ơn bạn đã chỉ ra rằng . đề cập đến thư mục hiện tại! - ericmjl


Tốt hơn để nén danh mục đầu tiên trên máy chủ từ xa:

tar czfP backup.tar.gz /path/to/catalog

Thứ hai, tải xuống từ xa:

scp user@your.server.example.com:/path/to/backup.tar.gz .

Cuối cùng, giải nén các tập tin:

tar -xzvf backup.tar.gz

25
2018-05-29 11:12



"Tốt hơn" là rất phụ thuộc vào dữ liệu bạn đang chuyển và nỗ lực đó là ssh đến máy chủ để làm nén / giải nén. Và: bạn có thể thêm nén để scp với -Ccờ, như scp -C a@b:bigfile .. - Automatico
Điều này nhắc tôi về nhận xét được thực hiện bởi @cptloop! : D xkcd.com/1168 - GoodSp33d


Và nếu bạn có một địa ngục của một tập tin để tải xuống từ vị trí từ xa và nếu bạn không quan tâm nhiều về bảo mật, hãy thử thay đổi mã hóa mặc định scp (Triple-DES) thành một cái gì đó như 'blowfish'.

Điều này sẽ làm giảm đáng kể thời gian sao chép tập tin.

scp -c blowfish -r user@your.server.example.com:/path/to/foo /home/user/Desktop/

20
2018-06-17 06:02



Theo bài đăng trên blog này bạn có được hiệu suất tốt hơn với arcfour thay vì blowfish, nhưng nó có lỗ hổng bảo mật. - Automatico


Chuyển đến Tệp trên thanh công cụ hợp nhất của bạn

enter image description here

Nhấn Ctrl + l và viết ở đây_goes_your_user_name@192.168.10.123

192.168.1.103 là máy chủ mà bạn muốn kết nối.

Ví dụ ở đây

enter image description here


15
2017-11-09 21:05





Kịch bản điển hình,

scp -r -P port username@ip:/path-to-folder  .

giải thích với một mẫu,

scp -r -P 27000 abc@10.70.12.12:/tmp/hotel_dump .

Ở đâu,

port = 27000
username = "abc" , remote server username
path-to-folder = tmp/hotel_dump
. = current local directory

14
2017-07-06 07:21