Cách sử dụng lệnh scp trên Linux

Tác giả sysadmin, T.Mười 05, 2023, 09:45:04 SÁNG

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

Cách sử dụng lệnh scp trên Linux


Nhanh chóng và đơn giản, giống như nó phải vậy.

  • SCP là một cách an toàn và đơn giản để sao chép tệp giữa các máy tính Linux bằng SSH. Nó rất dễ sử dụng và có thể là một phương tiện truyền tập tin an toàn.
  • SCP đã được coi là không dùng nữa kể từ OpenSSH phiên bản 8.8 và các triển khai hiện đại mặc định sử dụng SFTP để truyền tệp. Tuy nhiên, cú pháp vẫn giữ nguyên.
  • Mặc dù rsync được ưu tiên hơn scp, nhưng scp vẫn là một tùy chọn phù hợp để sao chép tệp giữa các máy tính trên mạng độc lập. SSH phải đang chạy trên tất cả các máy tính tham gia quá trình chuyển giao.

Lệnh này scpgiúp việc sao chép tập tin giữa các máy tính Linux trở nên dễ dàng và an toàn. Nó sử dụng bảo mật SSH, nhưng trên hết, nó rất đơn giản. Nếu bạn có thể sử dụng cp, bạn có thể sử dụng scp.

1. scp và Giao thức sao chép an toàn là gì?

Hãy định nghĩa một vài thuật ngữ: có SCP và có scp. SCP viết hoa là viết tắt của Giao thức sao chép an toàn. Chữ thường scplà viết tắt của an toàn cp. Nói cách khác, SCP là một giao thức và scplà một chương trình.

scpđược thiết kế để trở thành một phương tiện sao chép tập tin an toàn và bảo mật giữa các máy tính Linux từ xa. Nó sử dụng SSH để thiết lập kết nối an toàn. SSH, hay shell bảo mật, là một giao thức mạng mật mã thường được sử dụng để truy cập và đăng nhập vào các máy tính Linux từ xa. Trên các bản phân phối Linux, chức năng SSH được cung cấp bởi OpenSSH.

SCP đã có tuổi đời khá lâu và đã có nhiều lo ngại về việc sử dụng nó trong thời đại ngày nay. Kể từ phiên bản OpenSSH 8.8, SCP được coi là không được dùng nữa. Việc triển khai hiện đại theo scpmặc định là sử dụng Giao thức truyền tệp an toàn theo mặc định. SSH vẫn được sử dụng để kết nối an toàn nhưng việc truyền tệp được xử lý bởi SFTP. Tất cả điều này đều vô hình và diễn ra một cách kỳ diệu dưới mui xe, đồng thời scpcú pháp vẫn được giữ nguyên.

Chương trình này được ưu tiên hơn, nhưng bạn có thể gặp phải một máy tính chưa cài đặt rsync và bạn không có quyền root, nghĩa là bạn không thể tiếp tục và cài đặt nó. Để sao chép tập tin từ máy tính này sang máy tính khác trên mạng khép kín, điều này hoàn toàn ổn. Để hoạt động, bạn phải chạy SSH trên tất cả các máy tính mà bạn sẽ sao chép đến và đi.rsync scpscpscp

Để xem phiên bản OpenSSH được cài đặt trên máy tính của bạn, hãy nhập:

Mã nguồn [Chọn]
ssh -V

2. Sao chép một tệp bằng scp

Giống như lệnh tiêu chuẩn cp, sao scpchép tệp từ vị trí nguồn sang vị trí đích. Để sao chép tệp vào máy tính từ xa, bạn phải biết địa chỉ IP hoặc tên mạng của máy tính từ xa. Bạn cũng phải có thông tin xác thực cho tài khoản người dùng có đặc quyền ghi đối với vị trí bạn đang gửi tệp tới.

Để gửi tệp có tên "sample.txt" tới máy tính có tên "fedora-34" trên mạng cục bộ, cú pháp là:

Mã nguồn [Chọn]
scp./sample.txt [email protected]:/home/dave/Downloads/
Lệnh được tạo thành từ:

  • scp : Lệnh scp
  • ./sample.txt : Tệp chúng tôi sẽ gửi. Đây là trong thư mục hiện tại.
  • dave@ : Tài khoản người dùng trên máy tính từ xa mà chúng tôi sẽ gửi tệp tới.
  •   Đăng nhập để xem liên kết : Tên mạng của máy tính từ xa.
  • :/home/dave/Downloads/ : Vị trí sao chép tệp vào máy tính từ xa. Lưu ý dấu hai chấm => ngăn cách tên máy tính và đường dẫn.

Bạn sẽ được nhắc nhập mật khẩu cho tài khoản trên máy tính từ xa, sau đó tệp sẽ được sao chép.

Nếu bạn muốn tệp có tên khác trên máy tính từ xa, bạn có thể thêm tên tệp vào đường dẫn đích. Để sao chép cùng một tệp và đặt tên là "other-file.txt", hãy sử dụng cú pháp sau:

Mã nguồn [Chọn]
scp./sample.txt [email protected]:/home/dave/Downloads/other-file.txt
Lệnh scp sẽ âm thầm ghi đè lên các tệp hiện có, vì vậy hãy cẩn thận khi sao chép tệp. Nếu một tệp đã tồn tại trên máy tính mục tiêu có cùng tên với tệp bạn đang sao chép, tệp đó sẽ bị ghi đè và bị mất.

Nếu máy tính mục tiêu không sử dụng cổng SSH mặc định là 22, bạn có thể sử dụng -Ptùy chọn (số cổng) để cung cấp số cổng thích hợp.

3. Truy xuất một tập tin duy nhất

Để sao chép tệp từ máy chủ từ xa, chỉ cần đặt máy chủ từ xa làm nguồn và đặt đường dẫn cục bộ nơi bạn muốn tệp được sao chép làm mục tiêu. Chúng ta sẽ sao chép một tệp có tên "development-plan.md" từ máy tính từ xa vào thư mục hiện tại trên máy tính cục bộ.

Mã nguồn [Chọn]
scp [email protected]:/home/dave/Downloads/development-plan.md.
Nếu bạn thêm tên tệp vào đường dẫn cục bộ, tệp sẽ được sao chép và đặt tên đó.

Mã nguồn [Chọn]
scp [email protected]:/home/dave/Downloads/development-plan.md./dp-1.md
Tệp được sao chép nhưng được đổi tên thành tên tệp được chỉ định của chúng tôi.

Mã nguồn [Chọn]
ls -hl *.md
4. Sao chép nhiều tập tin

Sao chép nhiều tập tin theo một trong hai hướng thật dễ dàng. Bạn có thể liệt kê bao nhiêu tệp nguồn tùy thích. Ở đây, chúng tôi đang sao chép hai tệp đánh dấu và một tệp CSV.

Mã nguồn [Chọn]
scp./dp-1.md./dp-2.md./dp-3.csv [email protected]:/home/dave/Downloads/
Ba tập tin được sao chép vào máy tính từ xa. Bạn cũng có thể sử dụng ký tự đại diện. Lệnh này thực hiện chính xác điều tương tự như lệnh cuối cùng.

Mã nguồn [Chọn]
scp./dp. [email protected]:/home/dave/Downloads/
5. Sao chép đệ quy các thư mục trên scp

Tùy -r chọn (đệ quy) cho phép bạn sao chép toàn bộ cây thư mục bằng một lệnh duy nhất. Chúng tôi đã đặt hai tệp vào thư mục có tên "data" và tạo một thư mục có tên "CSV" bên trong thư mục "data". Chúng tôi đã đặt tệp CSV vào thư mục "data/CSV".

Lệnh này sao chép các tập tin và tạo lại cấu trúc thư mục trên máy tính từ xa.

Mã nguồn [Chọn]
scp -r./data [email protected]:/home/dave/Downloads/
6. Sao chép tập tin giữa các máy chủ từ xa

Bạn thậm chí có thể hướng dẫn scpsao chép tập tin từ máy chủ từ xa này sang máy chủ khác. Cú pháp khá đơn giản. Bạn cung cấp tên tài khoản và địa chỉ mạng của máy chủ nguồn cũng như tên tài khoản và địa chỉ mạng của máy chủ đích. Các tập tin được sao chép từ máy chủ nguồn và sao chép vào vị trí trên máy chủ đích.

Mặc dù cú pháp đơn giản nhưng việc đảm bảo mọi thứ khác được thực hiện đúng chỗ cần phải suy nghĩ nhiều hơn một chút. Rõ ràng, vị trí bạn đang cố gắng sao chép các tệp vào trên máy chủ từ xa phải có thể truy cập được bằng tài khoản người dùng mà bạn chỉ định trên dòng lệnh. Và tài khoản người dùng đó phải có quyền ghi trên vị trí đó.

Một điều kiện tiên quyết tinh vi hơn là quyền truy cập SSH phải được thiết lập giữa máy tính cục bộ của bạn và máy tính nguồn, cũng như giữa máy chủ nguồn và máy chủ đích. Đảm bảo rằng bạn có thể sử dụng SSH để đăng nhập vào máy chủ đích từ máy chủ nguồn. Nếu bạn không thể làm điều đó, scp sẽ không thể kết nối.

Thiết lập khóa SSH để bạn có thể sử dụng quyền truy cập được xác thực nhưng không cần mật khẩu cho đến nay là phương pháp được ưa thích. Việc sử dụng mật khẩu sẽ trở nên lộn xộn rất nhanh và---vì bạn được nhắc nhập mật khẩu cho từng tài khoản người dùng---điều đó ngăn cản bạn tự động hóa hoàn toàn quy trình bằng một tập lệnh.

Chúng tôi thiết lập khóa SSH cho tài khoản người dùng mà chúng tôi đang sử dụng trên mỗi máy chủ từ xa. Điều này cung cấp quyền truy cập SSH liền mạch vào máy chủ khác cho hai người dùng đó. Điều này cho phép chúng tôi chuyển tệp theo một trong hai hướng bằng cách sử dụng hai tài khoản người dùng đó.

Để sao chép các tệp từ tài khoản người dùng "davem" trên máy tính Manjaro sang tài khoản "dave" trên máy tính Fedora, thông qua lệnh scpđược đưa ra từ máy tính Ubuntu cục bộ của chúng tôi, cú pháp là:

Mã nguồn [Chọn]
scp [email protected]:/home/davem/man. [email protected]:/home/dave/
Chúng tôi âm thầm quay trở lại dòng lệnh. Không có dấu hiệu gì đã xảy ra. Làm việc dựa trên tiền đề rằng không có tin tức nào là tin tốt, scpchỉ báo cáo về lỗi đối với việc sao chép từ xa này sang từ xa khác. Khi kiểm tra máy tính Fedora, chúng ta có thể thấy rằng các tệp từ máy tính Manjaro đã được sao chép và nhận.

Theo mặc định, các tập tin được sao chép trực tiếp từ máy tính nguồn sang máy tính mục tiêu. Bạn có thể ghi đè điều này bằng -3tùy chọn (ba chiều).

Với tùy chọn này, các tệp sẽ được chuyển từ mục tiêu sang nguồn thông qua máy tính cục bộ của bạn. Để điều đó xảy ra, cần có quyền truy cập SSH liền mạch từ máy tính cục bộ của bạn đến máy tính mục tiêu.

Mã nguồn [Chọn]
scp -3 [email protected]:/home/davem/man. [email protected]:/home/dave/
Vẫn không có dấu hiệu nào cho thấy có điều gì đã xảy ra, ngay cả khi truyền các tệp qua máy tính cục bộ của bạn. Tất nhiên, bằng chứng của pudding là kiểm tra máy tính mục tiêu.

7. Tùy chọn SCP khác

(Thuộc -p tính tệp bảo tồn) sẽ giữ các cờ tạo, quyền sở hữu và quyền truy cập tệp gốc trên các tệp được chuyển. Chúng sẽ có cùng siêu dữ liệu với các tệp gốc trên máy tính nguồn.

Nếu bạn thấy thông báo lỗi, hãy thử lặp lại lệnh và sử dụng -v cờ (dài dòng) để xem thông tin chi tiết về lần thử chuyển. Bạn phải có khả năng phát hiện điểm lỗi ở đầu ra.

Tùy -C chọn (nén) sẽ nén các tệp khi chúng được sao chép và giải nén chúng khi chúng được nhận. Đây là điều bắt nguồn từ thời đại truyền thông modem chậm giữa các máy tính. Giảm kích thước của tải trọng có thể làm giảm thời gian truyền.

Ngày nay, thời gian nén và giải nén các tập tin có thể sẽ lâu hơn so với sự khác biệt giữa đường truyền nén và không nén. Nhưng vì scp được sử dụng tốt nhất để sao chép tập tin giữa các máy tính trong cùng mạng LAN nên tốc độ truyền không phải là vấn đề đáng lo ngại.