在 Linux 上安全傳輸檔案的 14 SCP 命令示例
SCP(安全複製)是 Linux 和 Unix 之類的系統中的命令列工具,用於通過網路安全地跨系統傳輸檔案和目錄。當我們使用 scp
命令將檔案和目錄從本地系統複製到遠端系統時,則在後端與遠端系統建立了 ssh 連線。換句話說,我們可以說 scp
在後端使用了相同的 SSH 安全機制,它需要密碼或金鑰進行身份驗證。
在本教程中,我們將討論 14 個有用的 Linux scp
命令示例。
scp
命令語法:
# scp <選項> <檔案或目錄> 使用者名稱@目標主機:/<資料夾>
# scp <選項> 使用者名稱@目標主機:/檔案 <本地資料夾>
scp
命令的第一個語法演示瞭如何將檔案或目錄從本地系統複製到特定資料夾下的目標主機。
scp
命令的第二種語法演示瞭如何將目標主機中的檔案複製到本地系統中。
下面列出了 scp
命令中使用最廣泛的一些選項,
-C
啟用壓縮-i
指定識別檔案或私鑰-l
複製時限制頻寬-P
指定目標主機的 ssh 埠號-p
複製時保留檔案的許可權、模式和訪問時間-q
禁止 SSH 警告訊息-r
遞迴複製檔案和目錄-v
詳細輸出
現在讓我們跳入示例!
示例:1)使用 scp 將檔案從本地系統複製到遠端系統
假設我們要使用 scp
命令將 jdk 的 rpm 軟體包從本地 Linux 系統複製到遠端系統(172.20.10.8),請使用以下命令,
[root@linuxtechi ~]$ scp jdk-linux-x64_bin.rpm root@linuxtechi:/opt
root@linuxtechi's password:
jdk-linux-x64_bin.rpm 100% 10MB 27.1MB/s 00:00
[root@linuxtechi ~]$
上面的命令會將 jdk 的 rpm 軟體包檔案複製到 /opt
資料夾下的遠端系統。
示例:2)使用 scp 將檔案從遠端系統複製到本地系統
假設我們想將檔案從遠端系統複製到本地系統下的 /tmp
資料夾,執行以下 scp
命令,
[root@linuxtechi ~]$ scp root@linuxtechi:/root/Technical-Doc-RHS.odt /tmp
root@linuxtechi's password:
Technical-Doc-RHS.odt 100% 1109KB 31.8MB/s 00:00
[root@linuxtechi ~]$ ls -l /tmp/Technical-Doc-RHS.odt
-rwx------. 1 pkumar pkumar 1135521 Oct 19 11:12 /tmp/Technical-Doc-RHS.odt
[root@linuxtechi ~]$
示例:3)使用 scp 傳輸檔案時的詳細輸出(-v)
在 scp
命令中,我們可以使用 -v
選項啟用詳細輸出。使用詳細輸出,我們可以輕鬆地發現後臺確切發生了什麼。這對於除錯連線、認證和配置等問題非常有用。
root@linuxtechi ~]$ scp -v jdk-linux-x64_bin.rpm root@linuxtechi:/opt
Executing: program /usr/bin/ssh host 172.20.10.8, user root, command scp -v -t /opt
OpenSSH_7.8p1, OpenSSL 1.1.1 FIPS 11 Sep 2018
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Reading configuration data /etc/ssh/ssh_config.d/05-redhat.conf
debug1: Reading configuration data /etc/crypto-policies/back-ends/openssh.config
debug1: /etc/ssh/ssh_config.d/05-redhat.conf line 8: Applying options for *
debug1: Connecting to 172.20.10.8 [172.20.10.8] port 22.
debug1: Connection established.
…………
debug1: Next authentication method: password
root@linuxtechi's password:
示例:4)將多個檔案傳輸到遠端系統
可以使用 scp
命令一次性將多個檔案複製/傳輸到遠端系統,在 scp
命令中指定多個檔案,並用空格隔開,示例如下所示
[root@linuxtechi ~]$ scp install.txt index.html jdk-linux-x64_bin.rpm root@linuxtechi:/mnt
root@linuxtechi's password:
install.txt 100% 0 0.0KB/s 00:00
index.html 100% 85KB 7.2MB/s 00:00
jdk-linux-x64_bin.rpm 100% 10MB 25.3MB/s 00:00
[root@linuxtechi ~]$
示例:5)在兩個遠端主機之間傳輸檔案
使用 scp
命令,我們可以在兩個遠端主機之間複製檔案和目錄,假設我們有一個可以連線到兩個遠端 Linux 系統的本地 Linux 系統,因此從我的本地 Linux 系統中,我可以使用 scp
命令在這兩個系統之間複製檔案,
命令語法:
# scp 使用者名稱@遠端主機1:/<要傳輸的檔案> 使用者名稱@遠端主機2:/<資料夾>
示例如下:
# scp root@linuxtechi:~/backup-Oct.zip root@linuxtechi:/tmp
# ssh root@linuxtechi "ls -l /tmp/backup-Oct.zip"
-rwx------. 1 root root 747438080 Oct 19 12:02 /tmp/backup-Oct.zip
示例:6)遞迴複製檔案和目錄(-r)
在 scp
命令中使用 -r
選項將整個目錄從一個系統遞迴地複製到另一個系統,示例如下所示:
[root@linuxtechi ~]$ scp -r Downloads root@linuxtechi:/opt
使用以下命令驗證 Downloads
資料夾是否已複製到遠端系統,
[root@linuxtechi ~]$ ssh root@linuxtechi "ls -ld /opt/Downloads"
drwxr-xr-x. 2 root root 75 Oct 19 12:10 /opt/Downloads
[root@linuxtechi ~]$
示例:7)通過啟用壓縮來提高傳輸速度(-C)
在 scp
命令中,我們可以通過使用 -C
選項啟用壓縮來提高傳輸速度,它將自動在源主機上啟用壓縮並在目標主機上解壓縮。
root@linuxtechi ~]$ scp -r -C Downloads root@linuxtechi:/mnt
在以上示例中,我們正在啟用壓縮的情況下傳輸下載目錄。
示例:8)複製時限制頻寬(-l)
在 scp
命令中使用 -l
選項設定複製時對頻寬使用的限制。頻寬以 Kbit/s 為單位指定,示例如下所示:
[root@linuxtechi ~]$ scp -l 500 jdk-linux-x64_bin.rpm root@linuxtechi:/var
示例:9)在 scp 時指定其他 ssh 埠(-P)
在某些情況下,目標主機上的 ssh 埠會更改,因此在使用 scp
命令時,我們可以使用 -P
選項指定 ssh 埠號。
[root@linuxtechi ~]$ scp -P 2022 jdk-linux-x64_bin.rpm root@linuxtechi:/var
在上面的示例中,遠端主機的 ssh 埠為 “2022”。
示例:10)複製時保留檔案的許可權、模式和訪問時間(-p)
從源複製到目標時,在 scp
命令中使用 -p
選項保留許可權、訪問時間和模式。
[root@linuxtechi ~]$ scp -p jdk-linux-x64_bin.rpm root@linuxtechi:/var/tmp
jdk-linux-x64_bin.rpm 100% 10MB 13.5MB/s 00:00
[root@linuxtechi ~]$
示例:11)在 scp 中以安靜模式傳輸檔案(-q)
在 scp
命令中使用 -q
選項可禁止顯示 ssh 的傳輸進度、警告和診斷訊息。示例如下所示:
[root@linuxtechi ~]$ scp -q -r Downloads root@linuxtechi:/var/tmp
[root@linuxtechi ~]$
示例:12)在傳輸時使用 scp 中的識別檔案(-i)
在大多數 Linux 環境中,首選基於金鑰的身份驗證。在 scp
命令中,我們使用 -i
選項指定識別檔案(私鑰檔案),示例如下所示:
[root@linuxtechi ~]$ scp -i my_key.pem -r Downloads root@linuxtechi:/root
在上面的示例中,my_key.pem
是識別檔案或私鑰檔案。
示例:13)在 scp 中使用其他 ssh_config 檔案(-F)
在某些情況下,你使用不同的網路連線到 Linux 系統,可能某些網路位於代理伺服器後面,因此在這種情況下,我們必須具有不同的 ssh_config
檔案。
通過 -F
選項在 scp
命令中指定了不同的 ssh_config
檔案,示例如下所示:
[root@linuxtechi ~]$ scp -F /home/pkumar/new_ssh_config -r Downloads root@linuxtechi:/root
root@linuxtechi's password:
jdk-linux-x64_bin.rpm 100% 10MB 16.6MB/s 00:00
backup-Oct.zip 100% 713MB 41.9MB/s 00:17
index.html 100% 85KB 6.6MB/s 00:00
[root@linuxtechi ~]$
示例:14)在 scp 命令中使用其他加密方式(-c)
預設情況下,scp
使用 AES-128 加密方式來加密檔案。如果你想在 scp
命令中使用其他加密方式,請使用 -c
選項,後接加密方式名稱。
假設我們要在用 scp
命令傳輸檔案時使用 3des-cbc 加密方式,請執行以下 scp
命令:
[root@linuxtechi ~]# scp -c 3des-cbc -r Downloads root@linuxtechi:/root
使用以下命令列出 ssh
和 scp
支援的加密方式:
[root@linuxtechi ~]# ssh -Q cipher localhost | paste -d , -s -
3des-cbc,aes128-cbc,aes192-cbc,aes256-cbc,root@linuxtechi,aes128-ctr,aes192-ctr,aes256-ctr,root@linuxtechi,root@linuxtechi,root@linuxtechi
[root@linuxtechi ~]#
以上就是本教程的全部內容,要獲取有關 scp
命令的更多詳細資訊,請參考其手冊頁。請在下面的評論部分中分享你的反饋和評論。
via: https://www.linuxtechi.com/scp-command-examples-in-linux/
作者:Pradeep Kumar 選題:lujun9972 譯者:wxy 校對:wxy
訂閱“Linux 中國”官方小程式來檢視
相關文章
- scp傳輸檔案的命令
- scp 傳輸檔案
- Linux SSH遠端檔案/目錄傳輸命令scpLinux
- linux之間檔案傳輸scpLinux
- Linux scp 後臺執行傳輸檔案Linux
- linux-scp傳檔案Linux
- Linux SSh scp使用【遠端檔案/目錄的傳輸】Linux
- Linux 下用 SCP 無需輸入密碼傳輸檔案Linux密碼
- mac下用scp命令實現本地檔案與伺服器Linux檔案之間的相互傳輸Mac伺服器Linux
- 我使用過的Linux命令之sftp - 安全檔案傳輸命令列工具LinuxFTP命令列
- scp不輸入密碼進行檔案傳輸密碼
- expect+scp傳輸檔案發現檔案丟失
- 檔案上傳的幾個 - 示例
- 在 Windows 上使用 scp 命令Windows
- 採用scp命令在Linux系統之間copy檔案Linux
- 檔案傳輸協議的五種安全檔案傳輸替代方案協議
- 鐳速傳輸:安全檔案傳輸的意義
- 把oracle RMAN的命令輸出寫在檔案上Oracle
- Linux常用網路傳輸工具命令,ssh、curl、wget、scpLinuxwget
- Linux 檔案傳輸Linux
- 在java中使用SFTP協議安全的傳輸檔案JavaFTP協議
- 在suse和solaris之間互傳檔案_scp
- 在 Linux 下使用 scp 命令Linux
- 【知識分享】Linux檔案傳輸常用的9個命令!Linux
- Linux基礎命令---mput上傳ftp檔案LinuxFTP
- 把Oracle的命令輸出傳送到檔案的命令Oracle
- linux下遠端傳送檔案命令,通過ssh協議傳輸檔案Linux協議
- Windows -> Linux 檔案傳輸WindowsLinux
- 使用scp將linux伺服器中的檔案傳到windows本地主機上Linux伺服器Windows
- 什麼是安全檔案傳輸?
- 使用scp命令在多個Linux系統間進行檔案複製Linux
- 兩臺linux的檔案傳輸Linux
- Linux上傳檔案Linux
- Web安全-檔案上傳漏洞Web
- Web安全之檔案上傳Web
- WEB安全:檔案上傳漏洞Web
- 在檔案上使用 SQL 查詢的示例SQL
- Mac Linux檔案互相傳輸MacLinux