Lệnh scp trong Linux cho phép người dùng copy file và thư mục an toàn giữa hai vị trí khác nhau. Trong bài viết này, Vietnix sẽ hướng dẫn cho bạn cách sử dụng lệnh scp qua 5 ví dụ chi tiết, dễ hiểu. Cùng tham khảo ngay nhé!
Lệnh scp trong Linux là gì?
Lệnh scp trong Linux (còn gọi là secure copy) là công cụ giúp người dùng truyền tải file an toàn giữa các máy chủ (host). Dòng lệnh sử dụng mã hóa để bảo vệ dữ liệu trong quá trình truyền tải, đảm bảo tính bảo mật cho thông tin của bạn.
Ngoài ra, bạn có thể tham khảo các câu lệnh trong Linux khác để hiểu thêm chi tiết về hệ điều hành.
Cú pháp cơ bản của lệnh scp
Lệnh scp trong Linux có cú pháp cơ bản như sau:
scp [options] [[user@]host1:]source_file_or_directory ... [[user@]host2:]destination
Lệnh scp
sử dụng kết nối SSH để truyền tải dữ liệu. Vì vậy, bạn cần phải xác thực trên máy chủ đích bằng tạo ssh key hoặc mật khẩu.
5 tùy chọn sử dụng lệnh scp
Tùy chọn | Mô tả |
-P | port: Chỉ định vị trí cổng SSH kết nối trên máy chủ remote. (khác với cổng mặc định 22) |
-P | Lưu giữ thông tin thời gian sửa đổi (mtime), thời gian truy cập (atime) và các chế độ (mode) của file tại máy chủ local khi copy. |
-q | Bảo mật thông tin thời gian của tiến trình truyền dữ liệu. |
-r | Copy toàn bộ thư mục và nội dung bên trong |
-S | Tên chương trình sử dụng cho kết nối được mã hóa. Chương trình phải đảm bảo các tùy chọn sử dụng . |
5 ví dụ về cách sử dụng lệnh scp trong Linux
Ví dụ 1: Sử dụng lệnh scp để copy file từ máy chủ local sang hệ thống remote
Để copy file từ máy chủ local của bạn đến máy chủ từ xa (remote host), bạn có thể sử dụng lệnh scp (secure copy). Lệnh scp
sử dụng kết nối SSH (Secure Shell) để truyền tải file an toàn và bảo mật.
Để copy file file.txt từ máy local đến thư mục /remote/directory trên máy chủ đích có địa chỉ IP 10.10.0.2 với tên người dùng remote_username, bạn có thể sử dụng lệnh sau:
scp file.txt remote_username@10.10.0.2:/remote/directory
Nếu không chỉ định directory hệ thống remote thì file sẽ được tự động copy vào home directory của remote user.
Sau khi thực thi lệnh, bạn sẽ được yêu cầu nhập mật khẩu để bắt đầu quá trình chuyển file:
remote_username@10.10.0.2's password:
file.txt 100% 0 0.0KB/s 00:00
Nếu không chỉ định tên file trong vị trí đích thì lệnh scp
sẽ copy file rồi đặt tên gốc. Nếu muốn lưu file dưới một tên khác thì ta cần chỉ định tên file mới trong lệnh:
scp file.txt remote_username@10.10.0.2:/remote/directory/newfilename.txt
Ví dụ 2: Di chuyển file đến máy chủ remote qua vị trí cổng SSH
Giả sử, nếu SSH trên remote host (máy chủ từ xa) đang ở một cổng khác (mặc định là cổng 22) thì bạn có thể chỉ định cổng 2322 để di chuyển bằng tùy chọn -P:
scp -P 2322 file.txt remote_username@10.10.0.2:/remote/directory
Để di chuyển toàn bộ một thư mục, cú pháp cũng không có gì khác biệt nhiều vì bạn chỉ cần thêm flag -r để copy file và thư mục theo kiểu đệ quy (hàm sử dụng cũng chính là chính nó).
scp -r /local/directory remote_username@10.10.0.2:/remote/directory
Ví dụ 3: Copy file từ máy chủ remote đến hệ thống local bằng lệnh scp
Để copy file từ một máy chủ remote về máy local thì ta có thể dùng vị trí remote như điểm xuất phát và vị trí local như vị trí đích để copy file.
Chẳng hạn như bạn muốn copy file có tên file.txt từ remote server, địa chỉ IP là 10.10.0.2 về máy local thì có thể dùng lệnh sau:
scp remote_username@10.10.0.2:/remote/file.txt /local/directory
Ví dụ 4: Sử dụng lệnh sao chép file giữa hai hệ thống remote
Không giống như rsync, lệnh scp không yêu cầu người dùng phải đăng nhập vào một trong các server để truyền file ở các hệ thống remote.
Câu lệnh sau cho phép copy file /files/file.txt từ remote host host1.com đến thư mục /files trên remote host host2.com.
scp user1@host1.com:/files/file.txt user2@host2.com:/files
Sau đó ta sẽ được yêu cầu nhập mật khẩu cho hai tài khoản remote này. Dữ liệu sẽ được truyền trực tiếp từ một host đến host khác.
Để thực thi lệnh, ta có thể truyền thêm tùy chọn -3 như sau:
scp -3 user1@host1.com:/files/file.txt user2@host2.com:/files
Ví dụ 5: Copy file với chế độ riêng tư bằng lệnh scp
Bạn có thể sao chép file an toàn với chế độ riêng tư bằng lệnh Scp trong Linux. Khi thực hiện, toàn bộ quá trình sao chép sẽ bị ẩn.
Giả sử, khi bạn sao chép file test4.txt từ máy chủ local sang máy remote có địa chỉ IP 10.143.90.2, user là jayesh và vị trí đường dẫn thư mục tại /home/jayesh
/
Bạn cần thực hiện lệnh theo cú pháp:
scp -q test4.txt jayesh@10.143.90.2:/home/jayesh/
Toàn bộ thông tin quá trình sao chép file lúc này sẽ được ẩn
Để xác minh quá trình, bạn hãy sử dụng lệnh ls tại máy chủ remote tại ví trí đã sao chép file.
Câu hỏi thường gặp
Lệnh scp
có thể sao chép file qua mạng Internet không?
Có thể. Bạn có thể sao chép bằng dòng lệnh nhờ sự linh hoạt qua giao thức SSH.
Lệnh scp
có thể sao chép thư mục không?
Có thể. Bạn có thể sao chép thư mục bằng cách thêm tùy chọn -r
vào cú pháp cơ bản của dòng lệnh
Sự khác biệt giữa lệnh scp
và sftp
trong Linux là gì?
scp: Thực hiện sao chép file một cách nhanh chóng và đơn giản.
sftp: Thực hiện các hoạt động quản lý file phức tạp hơn, như tạo thư mục, đổi tên file, hoặc tạo một giao diện tương tác để làm việc với các file từ xa.
Lời kết
Bài viết này đã hướng dẫn cách sử dụng lệnh scp trong Linux để copy file giữa các máy local và remote với nhau, hay thậm chí là giữa hai máy remote. Bạn có thể thiết lập thêm xác thực dựa trên key ssh để kết nối đến server Linux mà không cần nhập mật khẩu, hoặc nếu thường xuyên kết nối đến một hệ thống nào đó thì có thể định nghĩa các kết nối trong file config SSH để đơn giản hóa các quá trình sau này.