Tin tức và phân tích của tất cả các thiết bị di động

16 lệnh SCP phổ biến kèm ví dụ về sao chép tập tin và thư mục

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
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