Làm cách nào để lấy tệp từ máy chủ bằng scp?


31

Tôi đang ở trên máy A và muốn lấy một tập tin từ máy B.

A$ scp <myuserid>@hostB:<path of file in B> .

nó nói rằng:

scp: <path of file in B>: No such file or directory

Nhưng trên máy B, tập tin này tồn tại trong đường dẫn này.

Điều gì đang xảy ra?


Đây có phải là định dạng chính xác của lệnh bạn đã chạy? Hoặc có tên tệp sau ':'?
dtyler

Câu trả lời:


43

Bạn đã không chỉ định bất kỳ tệp nào: bạn phải thêm tệp (có đường dẫn) sau dấu hai chấm:

A$ scp <myuserid>@hostB:/absolutepath/file .

hoặc là

A$ scp <myuserid>@hostB:relativepath/file .

cho một đường dẫn liên quan đến thư mục nhà của bạn.

Nếu bạn không chỉ định một người dùng khác (nghĩa là người dùng trên A và B giống nhau), bạn không cần @

A$ scp hostB:/path/file .

2
Tôi đã sửa định dạng trong câu hỏi, nhưng có thể câu trả lời của bạn vẫn hợp lệ. Vấn đề có thể đến từ sự nhầm lẫn giữa đường dẫn tuyệt đối và tương đối (đến nhà).
Stéphane Gimenez

@ StéphaneGimenez bây giờ tôi thấy câu trả lời đã được chỉnh sửa tôi hiểu. Có vẻ như một câu hỏi kỳ lạ :-)
Matteo

4
$ scp username@remoteip:remote_location_file /location/where/you/save

Điều này chỉ hoạt động khi bạn sao chép tập tin. nếu bạn muốn sao chép một thư mục sử dụng

$ scp -r username@remoteip:remote_location_directory /location/where/you/save

Tùy chọn bạn có thể sử dụng theo yêu cầu của bạn

Cổng -P
Chỉ định cổng để kết nối trên máy chủ từ xa. Lưu ý rằng tùy chọn này được viết bằng chữ "P" viết hoa, vì -p đã được dành riêng để bảo toàn thời gian và chế độ của tệp trong RCp.

-p
Duy trì thời gian sửa đổi, thời gian truy cập và chế độ từ tệp gốc.

-r
Sao chép toàn bộ thư mục.

-v

Chế độ dài dòng. Nguyên nhân scp và ssh in thông báo gỡ lỗi về tiến trình của họ. Điều này rất hữu ích trong việc gỡ lỗi các vấn đề về kết nối, xác thực và cấu hình.


1
OP yêu cầu sao chép một tập tin, không phải là một thư mục.
phản biện

2

sử dụng đường dẫn scp thích hợp

scp ssh://user@hostname/tmp/foo.txt .

1

Bạn có thể chỉ định đường dẫn tệp có liên quan đến thư mục chính của bạn hoặc đường dẫn tệp tuyệt đối. Ví dụ: nếu foo.txttrong một thư mục được gọi trong thư docsmục chính của bạn và bar.txtđang ở trong /var/tmp, bạn có thể làm

scp username@host.example.com:docs/foo.txt .
scp username@host.example.com:/var/tmp/bar.txt .

Lưu ý rằng nếu tên tệp chứa các ký tự đặc biệt đối với trình bao từ xa (thường là khoảng trắng hoặc !"#$&'*;<>?[\]^`{|}~), bạn cần thoát chúng cho trình bao từ xa ngoài việc thoát chúng cho trình bao cục bộ. Ví dụ: nếu tệp được gọi foo bar.txtvà nằm trong thư mục chính của bạn:

scp username@host.example.com:'foo\ bar.txt' .

Nếu bạn gặp khó khăn với các tệp chứa ký tự dấu chấm câu, hãy thử sử dụng sftpthay vì scpchuyển chúng. Hoặc sử dụng một phương pháp thậm chí thuận tiện hơn, nếu bạn có thể sử dụng FUSE : gắn hệ thống tệp của máy từ xa bằng sshfs , sau đó sử dụng các lệnh thao tác tệp thông thường.

mkdir host.example.com
sshfs username@host.example.com:/ host.example.com
cp host.example.com/path/to/file .

1

Người ta có thể SCP cả hai cách dễ dàng nếu ai đó có người dùng DMZ và Mật khẩu Bạn đang ở máy cục bộ của mình: Từ DMZ đến máy linux cục bộ của bạn (kéo). Có nghĩa là sao chép abc.text bên trong thư mục2 vào PWD đăng nhập hiện tại của bạn.

scp user@111111:folder1/folder2/abc.txt .

Nó sẽ hỏi mật khẩu

đó là tất cả

Bây giờ bạn muốn gửi một thư mục sẽ thư mục con và tệp từ máy cục bộ của bạn đến DMZ:

usr @ localmachine: ~ / abc / defs> thư mục scp -r / usr @ 111111: vkrishna / docker /

một lần nữa mật khẩu sẽ được hỏi

: là thư mục gốc của máy từ xa và vkrishna là thư mục ở đó & một lần nữa thư mục con docker. Thư mục defs cục bộ có một thư mục gọi là "thư mục" mà chúng tôi muốn chuyển hoàn toàn.

Thích / abc / defs / thư mục

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.