Cách sử dụng Lệnh SCP trong Linux

Hướng dẫn dễ dàng giúp bạn chuyển tệp sang hệ thống từ xa từ hệ thống Linux của bạn bằng lệnh scp.

SCP là viết tắt của 'Secure Copy'. scp là một tiện ích dòng lệnh được cung cấp bởi Linux, cho phép chuyển các tệp và thư mục từ máy này sang máy khác qua một mạng không an toàn.

Nếu bạn muốn sao chép tệp từ hệ thống này sang hệ thống khác, thì scp có thể là một lựa chọn rất tốt để thực hiện chuyển các tệp và thư mục một cách an toàn. Khi hai máy giao tiếp được kết nối qua cùng một mạng, thì việc sử dụng scp trở nên khả thi.

Bạn hoàn toàn có thể tin tưởng vào scp lệnh bảo mật và toàn vẹn vì tệp đang được chuyển và mật khẩu được sử dụng để truyền đều được mã hóa. Không có thông tin nhạy cảm nào sẽ được tiết lộ ngay cả khi bất kỳ ai cố gắng rình mò lưu lượng truy cập trong khi quá trình chuyển giao này đang diễn ra.

Trong hướng dẫn này, chúng ta sẽ thấy các ví dụ khác nhau về scp yêu cầu. Chúng tôi cũng sẽ xem xét một số tùy chọn được sử dụng thường xuyên với scp yêu cầu.

Bắt đầu với lệnh scp

Sử dụng scp lệnh bạn có thể chuyển tệp / thư mục:

  • Từ máy cục bộ của bạn đến một máy từ xa.
  • Giữa hai máy từ xa.
  • Từ một máy từ xa đến máy cục bộ của bạn.

Cú pháp chung:

scp [Option] [source_file_name] [user @ destination_Host]: destination_folder

Hãy để chúng tôi hiểu từng thuộc tính cơ bản của lệnh này.

  • [source_file_name] Đây là tệp nguồn mà bạn muốn sao chép.
  • [người dùng @ đích_Host] Đây là tên người dùng của hệ thống từ xa nơi bạn muốn sao chép tệp. Địa chỉ IP của máy từ xa cũng được sử dụng trong thuộc tính này sau dấu ‘@' Biểu tượng.
  • [target_folder] Đây là thư mục mà bạn muốn lưu tệp đã sao chép.

Ghi chú: Dấu hai chấm (:) biểu tượng được sử dụng trong cú pháp vì nó phân biệt giữa các vị trí cục bộ và từ xa. Chúng tôi sử dụng dấu hai chấm (:) với hệ thống từ xa để chỉ định thư mục mà các tệp sẽ được sao chép vào. Trong trường hợp chúng tôi không chỉ định thư mục đích, thì các tệp sẽ được sao chép vào thư mục chính của người dùng hệ thống từ xa.

Các tùy chọn được sử dụng với scp

Một số tùy chọn phổ biến nhất được sử dụng với scp lệnh được liệt kê bên dưới.

Lựa chọnSự miêu tả
-Ccho phép nén tệp được chuyển
-vđưa ra đầu ra dài dòng
-rsao chép các tệp và thư mục một cách đệ quy
-Pbảo toàn quyền, chế độ và thời gian truy cập tệp
-Pthay đổi cổng mặc định được sử dụng bởi scp yêu cầu

Chúng ta sẽ xem thêm các ví dụ về các tùy chọn này trong phần hướng dẫn.

Sao chép tệp từ cục bộ sang hệ thống từ xa

scp cho phép bạn chuyển tệp từ hệ thống cục bộ của mình sang hệ thống từ xa bằng cú pháp sau. Điều này cho phép bạn chuyển hoặc tải các tệp của mình lên một máy chủ được đặt từ xa.

Cú pháp chung:

scp [file_name] remote_user @ host: [destination_folder]

Thí dụ:

scp apache-tomcat-9.0.8.tar.gz [email protected]: gaurav

Trong ví dụ này, chúng tôi đang sao chép tệp ‘apache-tomcat-9.0.8.tar.gz’ từ hệ thống cục bộ sang hệ thống từ xa có địa chỉ IP là ‘143.110.178.221’.

Trên hệ thống từ xa, tệp bây giờ sẽ được sao chép trên thư mục có tên ‘gaurav’.

Đầu ra:

gaurav @ ubuntu: ~ $ scp apache-tomcat-9.0.8.tar.gz [email protected]: gaurav [email protected] Mật khẩu của: apache-tomcat-9.0.8.tar.gz 100% 9589KB 79.8KB / s 02:00 gaurav @ ubuntu: ~ $ 

Hãy để chúng tôi kiểm tra đầu ra trên hệ thống từ xa cho tệp.

root @ ubuntu-s-1vcpu-1gb-blr1-01: ~ / gaurav # ls apache-tomcat-9.0.8.tar.gz root @ ubuntu-s-1vcpu-1gb-blr1-01: ~ / gaurav #

Do đó, tệp được sao chép thành công vào hệ thống từ xa bằng cách sử dụng scp yêu cầu.

Sao chép nhiều tệp vào hệ thống từ xa

Trong ví dụ trước, chúng ta đã học cách chuyển một tệp đến hệ thống từ xa bằng cách sử dụng scp yêu cầu. Bây giờ chúng ta sẽ thấy phương pháp chuyển nhiều tệp từ hệ thống cục bộ của bạn sang hệ thống từ xa bằng lệnh này.

Cú pháp chung:

scp [tệp 1] [tệp 2] [tệp n] remote_username @ remote_host: [thư mục cụ thể]

Hãy để chúng tôi hiểu quy trình đơn giản này với một ví dụ.

Thí dụ:

scp Ath.html abc.txt ppa-purge_0.2.8 + bzr56_all.deb [email protected]: gaurav

Ở đây, nhiều tệp được đề cập trong lệnh sẽ được sao chép trên hệ thống từ xa.

Đầu ra:

gaurav @ ubuntu: ~ $ scp Ath.html abc.txt ppa-purge_0.2.8 + bzr56_all.deb [email protected]: gaurav [email protected] mật khẩu: Ath.html 100% 199KB 94,7KB / s 00: 02 abc.txt 100% 0 0.0KB / s 00:00 ppa-purge_0.2.8 + bzr56_all.deb 100% 4360 42.2KB / s 00:00 gaurav @ ubuntu: ~ $

Trên hệ thống từ xa:

root @ ubuntu-s-1vcpu-1gb-blr1-01: ~ / gaurav # ls -l total 9800 -rw-r - r-- 1 root root 0 ngày 5 tháng 10 08:58 abc.txt -rw-r-- r-- 1 root root 9818695 10 tháng 10 08:35 apache-tomcat-9.0.8.tar.gz -rw-r - r-- 1 root root 204057 5 tháng 10 08:58 Ath.html -rw-r-- r-- 1 root root 4360 5 tháng 10 08:58 ppa-purge_0.2.8 + bzr56_all.deb root @ ubuntu-s-1vcpu-1gb-blr1-01: ~ / gaurav #

Tất cả ba tệp hiện đã được sao chép trên hệ thống từ xa.

Sao chép một thư mục vào hệ thống từ xa

Bạn có thể dùng scp lệnh sao chép một thư mục từ hệ thống cục bộ của bạn sang hệ thống từ xa. Quá trình này tương tự như quá trình sao chép một tập tin. Để sao chép nội dung của thư mục, bạn có thể sử dụng -r tùy chọn với scp yêu cầu.

Các -r tùy chọn được sử dụng để sao chép một cách đệ quy một thư mục. Điều đó có nghĩa là, tất cả thư mục con và các tệp bên trong thư mục cũng sẽ được sao chép.

Cú pháp chung:

scp -r [đường dẫn thư mục] remote_username @ remote_host: [target_directory]

Thí dụ:

scp -r PycharmProjects [email protected]: gaurav

Đầu ra:

gaurav @ ubuntu: ~ $ scp -r PycharmProjects [email protected]: gaurav [email protected] Mật khẩu của: __main__.py 100% 623 7.8KB / s 00:00 __init__.py 100% 23 0.4KB / s 00 : 00 complete.py 100% 2929 28.1KB / s 00:00 search.py ​​100% 4728 38.7KB / s 00:00 uninstall.py 100% 2963 32.5KB / s 00:00 hash.py 100% 1681 21.3KB / s 00:00 check.py 100% 1430 16.8KB / s 00:00 configuration.py 100% 7125 50.4KB / s 00:00 show.py 100% 6289 49.8KB / s 00:00 download.py 100% 6623 48.2 KB / s 00:00 gaurav @ ubuntu: ~ $ 

Sử dụng -r tùy chọn với scp lệnh sao chép tất cả các thư mục con và tệp trong thư mục từ máy cục bộ sang hệ thống từ xa.

Hiển thị thông tin chi tiết về quy trình scp

Bạn có thể dùng -v (chữ thường v) để hiển thị thông tin về các tệp đang được sao chép trên điều khiển từ xa hoặc hệ thống cục bộ của bạn. Loại đầu ra này còn được gọi là đầu ra dài dòng.

Khi tùy chọn này được sử dụng, thông tin gỡ lỗi đầy đủ về tệp được hiển thị trên màn hình.

Cú pháp chung:

scp -v [file_name] user_name @ user_host:

Thí dụ:

scp -v apache-tomcat-9.0.8.tar.gz [email protected]: nhóm

Đầu ra:

gaurav @ ubuntu: ~ $ scp -v apache-tomcat-9.0.8.tar.gz [email protected]: team Thực thi: program / usr / bin / ssh host 159.89.170.11, user root, command scp -v -t nhóm OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n ngày 7 tháng 12 năm 2017 gỡ lỗi1: Đọc dữ liệu cấu hình /home/gaurav/.ssh/config debug1: Đọc dữ liệu cấu hình / etc / ssh / ssh_config debug1: / etc / ssh / ssh_config dòng 19: Áp dụng các tùy chọn cho * debug1: Đang kết nối với cổng 159.89.170.11 [159.89.170.11] 22. debug1: Kết nối được thiết lập. debug1: key_load_public: Không có tệp hoặc thư mục nào như vậy gỡ lỗi1: tệp nhận dạng /home/gaurav/.ssh/id_rsa type -1 apache-tomcat-9.0.8.tar.gz 100% 9589KB 99,8KB / s 01:36 debug1: client_input_channel_req: channel 0 rtype exit-status reply 0 debug1: channel 0: free: client-session, nchannels 1 debug1: fd 0 clear O_NONBLOCK debug1: fd 1 clear O_NONBLOCK Transferred: đã gửi 9826736, nhận được 4016 byte, trong 97,2 giây Byte mỗi giây: đã gửi 101133.9, nhận được 41.3 gỡ lỗi1: Trạng thái thoát 0 gaurav @ ubuntu: ~ $ 

Tại đây, trong đầu ra, bạn có thể thấy rằng thông tin gỡ lỗi của tệp đang được hiển thị trên thiết bị đầu cuối của bạn khi scp lệnh được sử dụng với -v lựa chọn.

Truyền tệp giữa hai máy chủ từ xa

Linux cho phép bạn kết nối với nhiều máy chủ từ xa. Bạn có thể chuyển các tệp và thư mục giữa hai máy chủ lưu trữ điều khiển từ xa bằng cách sử dụng scp yêu cầu.

Cú pháp chung:

scp remote_user_1 @ host_1: / [file_name] remote_user_2 @ host_2: [folder_to_save]

Cú pháp có vẻ rộng hơn một chút nhưng khá đơn giản. Ở đây, phần đầu tiên của lệnh cung cấp đầu vào về người dùng từ xa từ nơi tệp sẽ được sao chép. dấu hai chấm (:) và / được sử dụng để chỉ định tên tệp hoặc tên thư mục sẽ được chuyển giữa hai máy từ xa.

Phần thứ hai cung cấp thông tin về hệ thống từ xa đích nơi tệp sẽ được sao chép.

Thí dụ:

scp -r [email protected]: gaurav [email protected]: / team

Ở đây, chúng tôi sẽ sao chép một cách đệ quy một thư mục có tên ‘gaurav’ từ hệ thống cục bộ sang hệ thống từ xa. Tệp sẽ được sao chép vào thư mục ‘nhóm’ trên hệ thống từ xa.

Đầu ra:

gaurav @ ubuntu: ~ $ scp -r [email protected]: / gaurav [email protected]: / team [email protected] Mật khẩu của: 1.py 100% 134 261.3KB / s 00:00 variable.py 100% 377 949,2KB / giây 00:00 abc.txt 100% 0 0,0KB / giây 00:00 sports.html 100% 199KB 41,8MB / giây 00:00 gaurav @ ubuntu: ~ $

Ở đây, chúng tôi đã sử dụng scp lệnh trên hệ thống cục bộ để chuyển một thư mục có tên ‘gaurav’ từ một máy chủ từ xa sang một máy chủ khác.

Chuyển tệp từ hệ thống từ xa sang hệ thống cục bộ của bạn

Bạn có thể dễ dàng chuyển các tệp hoặc thư mục từ hệ thống từ xa sang hệ thống cục bộ của mình bằng cách sử dụng scp yêu cầu. Nói cách đơn giản hơn, bạn có thể tải xuống nhiều tệp hoặc thư mục từ máy chủ từ xa vào hệ thống cục bộ của mình bằng cách sử dụng scp yêu cầu.

Cú pháp chung:

scp remote_username @ user_host: /files/file.txt / [folder_of_local_system]

Đầu ra:

gaurav @ ubuntu: ~ $ scp [email protected]: how.txt. Mật khẩu của [email protected]: how.txt 100% 11 0.1KB / s 00:00 gaurav @ ubuntu: ~ $

Tại đây, tôi đã tải xuống (sao chép) tệp từ máy chủ từ xa vào thư mục chính của mình. Do đó, tôi đã sử dụng dấu chấm (.) để chỉ định trong lệnh sao chép tệp vào thư mục chính của tôi.

Đầu ra mẫu:

gaurav @ ubuntu: ~ $ ls -l how.txt -rw-r - r-- 1 gaurav gaurav 11 tháng 10 6 09:49 how.txt gaurav @ ubuntu: ~ $ 

Ở đây, tệp hiện đã được sao chép vào thư mục chính của tôi từ máy chủ từ xa.

Theo cách tương tự, bạn có thể tải xuống nhiều tệp hoặc thư mục từ máy chủ từ xa bằng cách sử dụng scp lệnh với các tùy chọn thích hợp.

Nén tệp để truyền nhanh hơn

Đôi khi, việc chuyển các tệp lớn có thể tốn nhiều thời gian. Vấn đề này có thể được giải quyết khi sử dụng scp lệnh với -C (chữ hoa C) lựa chọn.

Sử dụng -C tùy chọn, nén các tệp có kích thước lớn hơn để tạo điều kiện truyền nhanh hơn và do đó tiết kiệm thời gian.

Một thực tế thú vị về tùy chọn này là, tệp được sao chép với kích thước ban đầu của nó trên hệ thống đích nhưng trong quá trình truyền, kích thước được nén để cho phép truyền nhanh hơn. Do đó, việc nén chỉ được thực hiện trên mạng.

Cú pháp chung:

scp -C [file_name] user_name @ user_host: [target_folder]

Hãy để chúng tôi xem một ví dụ so sánh để hiểu sự khác biệt.

Chuyển không có tùy chọn -C:

gaurav @ ubuntu: ~ $ scp -rv dlink [email protected]: team Thực thi: program / usr / bin / ssh host 68.183.82.183, user root, command scp -v -r -t team OpenSSH_7.6p1 Ubuntu-4ubuntu0. 3, OpenSSL 1.0.2n ngày 7 tháng 12 năm 2017 gỡ lỗi1: Đọc dữ liệu cấu hình /home/trinity/.ssh/config debug1: Đọc dữ liệu cấu hình / etc / ssh / ssh_config debug1: / etc / ssh / ssh_config dòng 19: Áp dụng tùy chọn cho * debug1 : Đang kết nối với cổng 68.183.82.183 [68.183.82.183] 22. debug1: Kết nối được thiết lập. debug1: client_input_channel_req: channel 0 rtype exit-status reply 0 debug1: channel 0: free: client-session, nchannels 1 debug1: fd 0 delete O_NONBLOCK debug1: fd 1 clear O_NONBLOCK Đã chuyển: gửi 7516504, nhận 4008 byte, trong 74,6 giây Byte mỗi giây: đã gửi 100693,7, nhận được 53,7 gỡ lỗi1: Trạng thái thoát 0 gaurav @ ubuntu: ~ $ 

Từ kết quả ở trên, chúng ta có thể thấy rằng thời gian cần thiết để truyền là 74,6 giây. Chúng tôi sẽ thử chuyển cùng một tệp bằng tùy chọn -C và quan sát sự khác biệt.

Chuyển với tùy chọn -C:

gaurav @ ubuntu: ~ $ scp -Crv dlink [email protected]: team Thực thi: program / usr / bin / ssh host 68.183.82.183, user root, command scp -v -r -t team OpenSSH_7.6p1 Ubuntu-4ubuntu0. 3, OpenSSL 1.0.2n ngày 7 tháng 12 năm 2017 gỡ lỗi1: Đọc dữ liệu cấu hình /home/trinity/.ssh/config debug1: Đọc dữ liệu cấu hình / etc / ssh / ssh_config debug1: / etc / ssh / ssh_config dòng 19: Áp dụng tùy chọn cho * debug1 : Đang kết nối với cổng 68.183.82.183 [68.183.82.183] 22. debug1: Kết nối được thiết lập. . . webupload.img 100% 1834KB 98,7KB / s 00:18 Chế độ gửi tệp: C0664 1877552 router.img Chìm: C0664 1877552 router.img router.img 100% 1834KB 100,3KB / s 00:18 Chìm: E Chế độ gửi tệp: C0664 3754103 DSL-2750U-Release-IN-T-01.00.07.zip Sink: C0664 3754103 DSL-2750U-Release-IN-T-01.00.07.zip DSL-2750U-Release-IN-T-01.00.07.zip 100% 3666KB 218,5KB / s 00:16 Sink: E debug1: client_input_channel_req: channel 0 rtype exit-status reply 0 debug1: channel 0: free: client-session, nchannels 1 debug1: fd 0 xóa O_NONBLOCK debug1: fd 1 xóa O_NONBLOCK Đã chuyển: đã gửi 7518864, nhận được 3828 byte, trong 51,0 giây Byte mỗi giây: đã gửi 100245,4, nhận được 51,0 gỡ lỗi1: Trạng thái thoát 0 gỡ lỗi1: nén gửi đi: dữ liệu thô 7511925, nén 7513136, yếu tố 1.00 gỡ lỗi1: nén đến: dữ liệu thô 1467, đã nén 999, hệ số 0,68 gaurav @ ubuntu: ~ $

Ở đây, chúng ta có thể dễ dàng nhận thấy rằng bằng cách sử dụng -C tùy chọn với scp lệnh đã cho phép chúng tôi nén tệp qua mạng, do đó chứng minh là một tùy chọn tiết kiệm thời gian.

Sử dụng một cổng ssh khác để truyền tệp

Trong khi sử dụng scp ra lệnh cho cổng mặc định được triển khai là cổng 22. Người dùng có quyền tự do tùy chỉnh lựa chọn cổng này. Bạn có thể dùng -P (tùy chọn viết hoa P) với scp lệnh để sử dụng cổng bạn chọn.

Cú pháp chung:

cp -P [new_port_number] [file_name / directory_name] remote_user @ host: [destination_folder]

Thí dụ:

scp -P 4248 dlink [email protected]: đội

Sử dụng lệnh trên, tệp sẽ được chuyển đến máy chủ từ xa. Nhưng lần này, cổng được sử dụng sẽ là cổng 4248 thay vì mặc định cổng 22.

Sự kết luận

Sau khi xem qua hướng dẫn này, chúng tôi đã tìm hiểu về bản chất động của scp lệnh dùng để chuyển hoặc sao chép tệp từ hệ thống này sang hệ thống khác. Tùy chọn này cũng có thể được sử dụng để tải xuống tệp hoặc thư mục từ máy chủ từ xa. Do đó, chúng ta có thể kết luận rằng scp Lệnh chứng tỏ rất hữu ích cho việc truyền tệp khi bạn phải xử lý đồng thời nhiều hệ thống cũng như các máy chủ từ xa.