SCP có liên quan chặt chẽ với giao thức SSH và thực sự được sinh ra từ cùng một ý tưởng.
SCP đảm bảo rằng dữ liệu được giữ bí mật và nguyên vẹn khi được truyền dưới dạng phần mở rộng cho giao thức SSH.
Đầu tiên chúng ta sẽ hiểu cách thức hoạt động của SCP này và sau đó chúng ta sẽ thấy các lệnh scp.
SCP là gì?
SCP là viết tắt của Giao thức sao chép an toàn.
Đây là một phương pháp sao chép tập tin và thư mục an toàn và hiệu quả giữa máy chủ cục bộ và máy chủ từ xa hoặc giữa hai máy chủ từ xa.
Nó được sử dụng rộng rãi để truyền dữ liệu một cách an toàn qua mạng. SCP dựa vào SSH (Secure Shell) để thiết lập kết nối an toàn và mã hóa dữ liệu của bạn trong quá trình truyền.
Cho dù bạn cần di chuyển một tệp hay toàn bộ thư mục, SCP đều cung cấp giải pháp truyền tệp từ xa đáng tin cậy.
SCP hoạt động như thế nào?
SCP được xây dựng dựa trên SSH – một giao thức mạng mật mã để thực thi lệnh và đăng nhập từ xa một cách an toàn. Nó sử dụng các cơ chế bảo mật tương tự như SSH, bao gồm mã hóa và xác thực, để bảo vệ dữ liệu trong quá trình truyền.
Sử dụng SCP, người dùng bắt đầu lệnh sao chép trên máy tính cục bộ để chỉ định tệp nguồn và vị trí đích trên máy tính từ xa. SCP thiết lập kết nối SSH đến hệ thống từ xa và sau đó sao chép các tệp từ nguồn đến đích một cách an toàn.
Khi nào nên sử dụng SCP?
SCP đặc biệt hữu ích trong các tình huống sau.
Sao lưu máy chủ từ xa
SCP cho phép bạn sao lưu các tệp từ máy chủ từ xa sang máy cục bộ hoặc ngược lại để dự phòng dữ liệu và khắc phục thảm họa.
Triển khai ứng dụng
Nó cũng đơn giản hóa quy trình bằng cách sao chép an toàn các tệp cần thiết vào từng hệ thống đích khi triển khai ứng dụng lên nhiều máy chủ,
Tải lên các tệp lớn
SCP cung cấp một phương thức truyền dữ liệu thay thế an toàn và đáng tin cậy cho các tệp lớn có thể quá lớn để gửi dưới dạng tệp đính kèm email.
Chia sẻ tập tin an toàn
SCP đảm bảo rằng dữ liệu được mã hóa trong quá trình truyền khi gửi các tệp bí mật cho người khác.
Cộng tác từ xa
SCP có thể được sử dụng để chia sẻ tệp một cách an toàn với đồng nghiệp hoặc thành viên nhóm ở các địa điểm khác nhau.
Cú pháp lệnh SCP
Trước khi bắt đầu sử dụng lệnh SCP, hãy bắt đầu bằng cách hiểu cú pháp cơ bản.
Cú pháp của lệnh SCP như sau:
scp [options] [source] [destination]
Giải thích cú pháp
Tùy chọn
Đây là những cờ tùy chọn sửa đổi hành vi của lệnh SCP. Bạn có thể sử dụng nhiều tùy chọn khác nhau để tùy chỉnh quá trình tải lên. Dưới đây là một số tùy chọn phổ biến:
-r: Sao chép đệ quy các thư mục và nội dung của chúng.
-p: Giữ quyền, dấu thời gian và chế độ của tệp gốc.
-P: Chỉ định số cổng cho kết nối SSH.
-i: Chỉ định tệp khóa riêng để xác thực SSH.
-C: Sử dụng tính năng nén để tăng tốc độ truyền dữ liệu.
-l: Giới hạn băng thông được sử dụng để truyền (tính bằng Kbit/s).
-v: chế độ dài dòng – hiển thị thông báo gỡ lỗi trong khi tải lên.
-o: chuyển tùy chọn tới máy khách SSH. Nó có thể được sử dụng để vô hiệu hóa việc kiểm tra khóa máy chủ nghiêm ngặt.
Nguồn
Nguồn chỉ định tệp hoặc thư mục bạn muốn sao chép. Đây có thể là đường dẫn cục bộ hoặc đường dẫn từ xa, tùy thuộc vào ngữ cảnh.
Điểm đến
Đích xác định nơi bạn muốn sao chép nguồn. Giống như nguồn, nó cũng có thể là đường dẫn cục bộ hoặc đường dẫn từ xa.
Ví dụ lệnh
# 1. Sao chép tập tin từ máy chủ cục bộ sang máy chủ từ xa
scp /path/to/local/file.txt user@remotehost:/path/to/destination/
/path/to/local/file.txt: Đây là tệp nguồn bạn muốn sao chép từ máy cục bộ của mình.
user@remotehost: Thay thế người dùng bằng tên người dùng từ xa và thay thế máy chủ từ xa bằng tên máy chủ hoặc địa chỉ IP của máy chủ từ xa.
/path/to/destination/: Đây là đường dẫn đích trên máy chủ từ xa nơi tệp sẽ được sao chép vào.
Ví dụ
Trong trường hợp của tôi, tôi đã chọn một máy chủ từ xa để tải tệp lên.
Tên người dùng máy chủ từ xa – abhishekvarma
Địa chỉ máy chủ từ xa – 192.168.29.70
scp /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop
Khi kết nối với máy từ xa, nó sẽ yêu cầu mật khẩu. Ở đây tôi đã chọn một file zip để sao chép.
Lối ra
Đầu ra sẽ như thế này nếu không có lỗi khi kết nối với máy chủ từ xa.
sample.zip 100% 20KB 717.9KB/s 00:00
#2. Sao chép tập tin từ xa vào máy tính cục bộ
scp user@remotehost:/path/to/remote/file.txt /path/to/local/destination/
Tương tự như trên, thay thế địa chỉ người dùng và máy chủ từ xa.
Ví dụ
scp [email protected]:/Users/abhishekvarma/Desktop/sample.zip /home/vboxuser/Desktop
Lối ra
Đây chỉ là một đầu ra mẫu trong trường hợp của tôi. Dấu thời gian thay đổi tùy thuộc vào tốc độ kết nối của bạn.
sample.zip 100% 20KB 51.2KB/s 00:00
#3. Sao chép thư mục đệ quy
scp user@remotehost:/path/to/remote/file.txt /path/to/local/destination/
Ở đây, cờ ‘-r’ yêu cầu SCP sao chép đệ quy các thư mục (bao gồm các thư mục con và nội dung của chúng).
Ví dụ
scp -r /home/vboxuser/Desktop [email protected]:/Users/abhishekvarma/Desktop
Ở đây tôi đã đề cập đến toàn bộ thư mục để sao chép các tập tin.
Lối ra
sample.zip 100% 20KB 1.0MB/s 00:00 Screenshot from 2023-08-13 21-45-23.png 100% 27KB 1.5MB/s 00:00 .swp 100% 12KB 894.2KB/s 00:00 .help.swp 100% 12KB 780.4KB/s 00:00
#4. Sao chép các tập tin phù hợp với mẫu
scp /path/to/local/*.txt user@remotehost:/path/to/destination/
*.txt – Đây là mẫu ký tự đại diện khớp với tất cả các tệp có phần mở rộng .txt trong thư mục cục bộ được chỉ định. Đường dẫn nguồn và đích vẫn giống như trước.
Ví dụ
scp /home/vboxuser/Desktop/locfolder/*.png [email protected]:/Users/abhishekvarma/Desktop
Lối ra
Ở đây tôi đã thử với phần mở rộng .png.
Screenshot from 2023-08-13 21-45-23.png 100% 27KB 1.4MB/s 00:00 Screenshot from 2023-08-13 21-55-28.png 100% 24KB 1.7MB/s 00:00 Screenshot from 2023-08-13 22-04-03.png 100% 38KB 2.1MB/s 00:00
#5. Giữ thuộc tính tập tin
scp -p /path/to/local/file.txt user@remotehost:/path/to/destination/
Ở đây cờ ‘-p’ bảo toàn thời gian sửa đổi, thời gian truy cập và chế độ của tệp nguồn khi sao chép.
Ví dụ
scp -p /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop
Lối ra
sample.zip 100% 20KB 420.0KB/s 00:00
#6. Chỉ định một cổng SSH khác
scp -P 22 /path/to/local/file.txt user@remotehost:/path/to/destination/
Cờ “-P” chỉ định một cổng SSH khác (trong trường hợp này là 22) cho kết nối SCP. Bạn có thể sử dụng bất kỳ cổng nào.
Ví dụ
scp -P 22 /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop
Lối ra
sample.zip 100% 20KB 1.2MB/s 00:00
#7. Sao chép có nén
scp -C /path/to/local/file.txt user@remotehost:/path/to/destination/
Cờ “-C” này cho phép nén trong quá trình truyền, có khả năng làm giảm kích thước dữ liệu được truyền. Địa chỉ nguồn và đích giống như được giải thích trước đó.
Ví dụ
scp -C /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop
Lối ra
sample.zip 100% 20KB 985.8KB/s 00:00
#8. Đầu ra dài dòng để gỡ lỗi
scp -v /path/to/local/file.txt user@remotehost:/path/to/destination/
Tùy chọn “-v” này kích hoạt đầu ra dài dòng cung cấp thông tin chi tiết hơn trong quá trình tải lên.
Ví dụ
scp -v /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop
Lối ra
Đầu ra mẫu sẽ trông như thế này.
Executing: program /usr/bin/ssh host 192.168.29.70, user abhishekvarma, command scp -v -t /Users/abhishekvarma/Desktop OpenSSH_8.9p1 Ubuntu-3ubuntu0.3, OpenSSL 3.0.2 15 Mar 2022 debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files debug1: /etc/ssh/ssh_config line 21: Applying options for * debug1: Connecting to 192.168.29.70 [192.168.29.70] port 22. debug1: Connection established. debug1: identity file /root/.ssh/id_rsa type -1 debug1: identity file /root/.ssh/id_rsa-cert type -1 debug1: identity file /root/.ssh/id_ecdsa type -1 debug1: identity file /root/.ssh/id_ecdsa-cert type -1 debug1: identity file /root/.ssh/id_ecdsa_sk type -1 debug1: identity file /root/.ssh/id_ecdsa_sk-cert type -1
#9. Sao chép từ xa sang cục bộ với đầu ra dài dòng
scp -v user@remotehost:/path/to/remote/file.txt /path/to/local/destination/
Giải thích tương tự như ví dụ chi tiết trước đó, với vai trò của các vị trí địa phương và từ xa bị đảo ngược.
Ví dụ
scp -v [email protected]:/Users/abhishekvarma/Desktop/sample.zip /home/vboxuser/Desktop
Lối ra
Đầu ra sẽ trông như thế này.
Executing: program /usr/bin/ssh host 192.168.29.70, user abhishekvarma, command scp -v -f /Users/abhishekvarma/Desktop/sample.zip OpenSSH_8.9p1 Ubuntu-3ubuntu0.3, OpenSSL 3.0.2 15 Mar 2022 debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 21: Applying options for * debug1: Connecting to 192.168.29.70 [192.168.29.70] port 22. debug1: Connection established. debug1: identity file /root/.ssh/id_rsa type -1 debug1: identity file /root/.ssh/id_rsa-cert type -1 debug1: identity file /root/.ssh/id_ecdsa type -1 debug1: identity file /root/.ssh/id_ecdsa-cert type -1 debug1: identity file /root/.ssh/id_ecdsa_sk type -1 debug1: identity file /root/.ssh/id_ecdsa_sk-cert type -1
#10. Sao chép bằng khóa SSH khác
scp -i /path/to/private_key.pem /path/to/local/file.txt user@remotehost:/path/to/destination/
Cờ “-i /path/to/private_key.pem” này chỉ định một khóa riêng SSH khác để xác thực.
Ví dụ
scp -i /path/to/private_key.pem /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop
Lối ra
Nếu bạn có khóa riêng, bạn có thể sử dụng nó hoặc bạn có thể sử dụng khóa mặc định.
sample.zip 100% 20KB 1.1MB/s 00:00
#11. Sao chép nhiều tập tin vào một máy chủ từ xa
scp file1.txt file2.txt user@remotehost:/path/to/destination/
Lệnh này sao chép file1.txt và file2.txt từ thư mục cục bộ đến đích được chỉ định trên máy chủ từ xa.
Ví dụ
scp /home/vboxuser/Desktop/image.png /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop
Lối ra
image.png 100% 39KB 1.4MB/s 00:00 sample.zip 100% 20KB 1.5MB/s 00:00
#12. Sao chép tệp từ xa bằng một tên khác
scp user@remotehost:/path/to/remote/file.txt /path/to/local/newfilename.txt
Lệnh này sao chép tệp .txt từ máy chủ từ xa vào thư mục cục bộ, đổi tên thành newfilename.txt.
Ví dụ
scp [email protected]:/Users/abhishekvarma/Desktop/sample.zip /home/vboxuser/Desktop/newfile.zip
Lối ra
Phần mở rộng tệp cũ và mới phải giống nhau khi thực hiện lệnh này.
sample.zip 100% 20KB 28.7KB/s 00:00
#13. Sao chép với giới hạn băng thông cụ thể
scp -l 1000 /path/to/local/file.txt user@remotehost:/path/to/destination/
Cờ ‘-l’ này chỉ định giới hạn băng thông tính bằng Kbps (trong trường hợp này là 1000 Kbps) cho quá trình truyền.
Ví dụ
scp -l 300 /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop
Lối ra
sample.zip 100% 20KB 31.3KB/s 00:00
#14. Sao chép tập tin và giữ các liên kết tượng trưng
scp -rp /path/to/local/source/ user@remotehost:/path/to/destination/
Cờ ‘-p’ bảo toàn các thuộc tính của tệp và cờ -r sao chép các thư mục theo cách đệ quy. Lệnh này cũng giữ nguyên các liên kết tượng trưng khi sao chép.
Ví dụ
scp -rp /home/vboxuser/Desktop/image.png [email protected]:/Users/abhishekvarma/Desktop
Lối ra
image.png 100% 39KB 1.8MB/s 00:00
#15. Sao chép tập tin đầy đủ với nén
scp -vC /path/to/local/file.txt user@remotehost:/path/to/destination/
Lệnh này kết hợp cả đầu ra dài dòng (-v) và nén (-C) khi truyền tệp.
Ví dụ
scp -vC /home/vboxuser/Desktop/image.png [email protected]:/Users/abhishekvarma/Desktop
Lối ra
Đầu ra sẽ trông như thế này.
scp: debug1: fd 3 clearing O_NONBLOCK Sending file modes: C0664 40050 image.png Sink: C0664 40050 image.png image.png d 6 clearing O_NONBLOCK scp: debug1: fd • clearing O_NONBLOCK image.png debug1: client_input_channel_req: channel ✪ type exit-status reply debug1: channel 0: free: client-session, channels 1 Transferred: sent 40220, received 2576 bytes, in 0.1 seconds Bytes per second: sent 352570.0, received 22581.3 root@ubuntu: ~ debug1: Exit status 0 debug1: compress outgoing: raw data 40287, compressed 38198, factor 0.95 debug1: compress incoming: raw data 792, compressed 757, factor 0.96
#16. Sao chép giữa hai máy chủ từ xa
Nếu bạn muốn chuyển tập tin từ máy chủ từ xa này sang máy chủ từ xa khác, bạn có thể sử dụng lệnh này.
scp user1@remotehost1:/path/to/remote/file.txt user2@remotehost2:/path/to/destination/
Lệnh này chuyển trực tiếp tệp .txt từ máy chủ1 từ xa sang máy chủ2 từ xa.
Ví dụ
scp user1@remotehost1:/path/to/remote/file.txt [email protected]:/Users/abhishekvarma/Desktop
Lối ra
file.txt 100% 512KB 512.0KB/s 00:00
Nếu có bất kỳ lỗi hoặc sự cố nào trong quá trình tải lên – thông báo lỗi có thể được hiển thị ở đầu ra cung cấp thông tin về sự cố.
ssh: connect to host source.example.com port 22: Connection refused lost connection
Trong trường hợp này, thông báo lỗi cho thấy kết nối SSH tới máy chủ nguồn đã bị từ chối. Điều này có thể do nhiều lý do, chẳng hạn như tên máy chủ, địa chỉ IP, cổng hoặc sự cố cấu hình SSH không chính xác.
Câu hỏi thường gặp về SCP
Dưới đây là một số câu hỏi và câu trả lời thường gặp liên quan đến SCP.
SCP khác với FTP hoặc SFTP như thế nào?
FTP là viết tắt của giao thức truyền tập tin.
SFTP là viết tắt của giao thức truyền tập tin. Cả hai đều được sử dụng để chuyển tập tin.
SCP hoạt động trên SSH và cung cấp cả mã hóa và xác thực trong một giao thức duy nhất, giúp nó an toàn và hiệu quả hơn.
Khi nào tôi nên sử dụng SCP?
SCP phù hợp nhất cho các tình huống yêu cầu truyền tệp an toàn và đáng tin cậy, chẳng hạn như sao lưu từ xa, triển khai phần mềm, phân phối tệp cấu hình và cộng tác giữa các thành viên trong nhóm.
SCP có tương thích với địa chỉ IPv6 không?
Có, SCP hỗ trợ cả địa chỉ IPv4 và IPv6, cho phép gửi tệp qua mạng bằng bất kỳ sơ đồ địa chỉ nào.
Kết luận✍️
Tôi hy vọng bạn thấy bài viết này hữu ích trong việc tìm hiểu về SCP và cách thức hoạt động của nó.
Bạn cũng có thể quan tâm đến việc học các lệnh quản trị hệ thống Linux