Cách sử dụng lệnh SCP trong Linux
SCP command là gì?
SCP (secure copy – bản sao an toàn) là một tiện ích dòng lệnh cho phép người dùng sao chép các tệp và thư mục trên Linux hệ thống cục bộ đến một hệ thống từ xa và ngược lại, hoặc giữa hai hệ thống từ xa từ hệ thống cục bộ.
Khi sử dụng SCP để chuyển dữ liệu thì cả thông tin và mật khẩu tệp đều được mã hoá để bảo vệ quyền riêng tư của chủ sở hữu.
Cú pháp lệnh SCP
Cú pháp của lệnh scp:
scp [OPTION] [user@]SRC_HOST:]file1 [user@]DEST_HOST:]file2
Trong đó:
- OPTION là các tùy chọn của lệnh SCP như mật mã, cấu hình ssh, cổng ssh, giới hạn…
- [user@]SRC_HOST:]file1 Tệp nguồn.
- [user@]DEST_HOST:]file2 Tệp đích.
Tệp cục bộ được chỉ định bởi đường dẫn tuyệt đối hoặc tương đối.
Tên tệp từ xa bao gồm thông số kỹ thuật của người dùng và máy chủ.
Một số tùy chọn được sử dụng trong scp:
- -P– Cho phép khai báo cổng SSH máy chủ từ xa.
- -p– Quản lý thời gian chỉnh sửa và truy cập tệp.
- -q– Cho phép loại bỏ các thông báo rác.
- -C– Được dùng để nén dữ liệu trước khi gửi.
- -r– Được dùng cho việc truyền các tệp và thư mục.
Một số lưu ý trước khi bắt đầu
Lệnh SCP sử dụng SSH để di chuyển dữ liệu và có chế độ bảo mật giống với SSH như yêu cầu khóa SSH hay mật khẩu để xác thực trên hệ thống từ xa.
Dấu hai chấm (:) là cách để lệnh scp có thể phân biệt giữa hai vị trí cục bộ và từ xa.
Điều kiện để sao chép tệp đó là quyền đọc trên tệp nguồn và quyền ghi trên hệ thống đích.
Lưu ý quan trọng: Khi sao chép các tệp có cùng tên và vị trí trên cả hai hệ thống, lệnh SCP sẽ ghi đè tệp mà không có bất kỳ cảnh báo nào gửi về. Hay khi di chuyển các tệp lớn, hãy chạy lệnh SCP trong screen hoặc phiên tmux.
Cách sao chép tệp và thư mục giữa hai hệ thống với lệnh SCP
1. Sao chép tệp từ máy cục bộ sang máy từ xa bằng lệnh SCP
Thực hiện sao chép hãy sử dụng lệnh:
scp file.txt remote_username@10.10.0.2:/remote/directory
Trong đó:
- file.txt là tên của tệp chọn để sao chép.
- remote username là tên người dùng trên máy chủ từ xa.
- 10.10.0.2 là địa chỉ IP của máy chủ.
- /remote/directory là đường dẫn đến thư mục sao chép mới.
Lưu ý: Nếu không chỉ định thư mục từ xa, tệp sẽ được sao chép vào thư mục chính của người dùng đó.
Cách để lưu tên tệp theo ý muốn:
scp file.txt remote_username@10.10.0.2:/remote/directory/newfilename.txt
Nếu SSH trên máy chủ từ xa không liên kết với cổng 22 mặc định thì bạn có thể chỉ định cổng bằng cách sử dụng tham số -P:
scp -P 2322 file.txt remote_username@10.10.0.2:/remote/directory
Để sao chép thư mục từ hệ thống cục bộ sang hệ thống từ xa, bạn có thể sử dụng tùy chọn -r:
scp -r /local/directory remote_username@10.10.0.2:/remote/directory
2. Sao chép tệp từ xa vào hệ thống cục bộ bằng lệnh SCP
Sao chép tệp từ xa vào hệ thống cục bộ tức là sử dụng vị trí từ xa làm nguồn và vị trí cục bộ làm đích trong quá trình di chuyển.
Ví dụ: Sao chép tệp có tên file.txt từ một máy chủ từ xa với IP 10.10.0.2 như sau:
scp remote_username@10.10.0.2:/remote/file.txt /local/directory
Nếu bạn chưa cài đặt đăng nhập SSH không cần mật khẩu cho máy từ xa, bạn sẽ được yêu cầu nhập mật khẩu người dùng.
3. Sao chép tệp giữa hai hệ thống từ xa bằng lệnh SCP
Khi sử dụng lệnh SCP để sao chép, bạn không cần phải đăng nhập vào một trong các máy chủ để di chuyển tệp qua các vị trí máy khác nhau.
Sao chép tệp /files/file.txt tại máy chủ từ xa host1.com vào thư mục /files trên máy chủ từ xa host2.com
user1@host1.com:/files/file.txt user2@host2.com:/files
Hệ thống yêu cầu nhập mật khẩu cho cả hai tài khoản và dữ liệu sẽ được truyền trực tiếp từ máy chủ này sang máy chủ khác.
Để định tuyến giao thông qua máy mà lệnh được phát ra, hãy sử dụng tùy chọn -3:
scp -3 user1@host1.com:/files/file.txt user2@host2.com:/files
Tổng kết về lệnh SCP trong Linux
Lệnh SCP – bản sao chép an toàn của Linux là công cụ di chuyển tệp và thư mục tối ưu nhất dành cho hệ thống máy tính sử dụng Linux.