一、SCP命令概述
SCP是Secure Copy的縮寫,它允許你遠程拷貝文件。這個命令基於ssh協議,實現了可靠的文件傳輸。SCP可以在Linux系統間或Linux和Windows系統間複製文件、目錄等。SCP不僅僅是能夠複製本機中的文件到遠程服務器中,還可以從遠程服務器複製文件到本地。SCP還可以利用ssh的認證機制,避免了FTP和telnet的一些弱點。
二、scp命令語法
scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file] [-l limit] [-o ssh_option] [-P port] [-S program] source_file target_file
說明:
- -1: 強制scp命令使用協議ssh1
- -2: 強制scp命令使用協議ssh2
- -4: 強制scp命令只使用IPv4尋址
- -6: 強制scp命令只使用IPv6尋址
- -B: 以批處理模式運行,不詢問傳輸口令和密鑰
- -C: 允許壓縮。(由於網絡原因,壓縮後傳輸更快)
- -p: 保留原文件的修改時間、訪問時間和訪問權限
- -q: 不顯示傳輸進度條。
- -r: 遞歸複製整個目錄。
- -v: 顯示詳細的傳輸過程。
- -c cipher: 以cipher將數據傳輸進行加密,這個選項通常不必指定。
- -F ssh_config: 指定ssh配置文件。
- -i identity_file: 從identity_file指定文件中讀取傳輸時使用的密鑰文件。
- -l limit: 限定用戶所能使用的帶寬,以Kbit/s為單位。
- -o ssh_option: 如果習慣於使用ssh_config(5)將選項寫入配置文件中,這個選項可用於在命令行上設置選項。
- -P port: 注意是大寫的P,並且port是指定數據傳輸用到的端口號
- -S program: 指定加密傳輸時所使用的程序
三、SCP命令實例
1. 從本地複製文件到遠程服務器
scp /path/to/local/file user@remote:/path/to/remote/
比如,我們要將本地的/home/user/abc.txt文件複製到遠程服務器的/tmp目錄下,命令如下:
scp /home/user/abc.txt root@192.168.1.100:/tmp/
2. 從遠程服務器複製文件到本地
scp user@remote:/path/to/remote/file /path/to/local/
比如,我們要將遠程服務器的/tmp/abc.txt文件複製到本地的/home/user目錄下,命令如下:
scp root@192.168.1.100:/tmp/abc.txt /home/user/
3. 從本地複製目錄到遠程服務器
scp -r /path/to/local/dir user@remote:/path/to/remote/
比如,我們要將本地的/home/user目錄複製到遠程服務器的/tmp目錄下,命令如下:
scp -r /home/user root@192.168.1.100:/tmp/
4. 從遠程服務器複製目錄到本地
scp -r user@remote:/path/to/remote/dir /path/to/local/
比如,我們要將遠程服務器的/tmp目錄複製到本地的/home/user目錄下,命令如下:
scp -r root@192.168.1.100:/tmp /home/user/
5. 使用非標準端口複製文件
scp -P port /path/to/local/file user@remote:/path/to/remote/
比如,我們要將本地的/home/user/abc.txt文件複製到遠程服務器的/tmp目錄下,並且使用22號端口,命令如下:
scp -P 22 /home/user/abc.txt root@192.168.1.100:/tmp/
6. 顯示傳輸過程
scp -v /path/to/local/file user@remote:/path/to/remote/
比如,我們要將本地的/home/user/abc.txt文件複製到遠程服務器的/tmp目錄下,並且顯示傳輸過程,命令如下:
scp -v /home/user/abc.txt root@192.168.1.100:/tmp/
7. 限制帶寬
scp -l 512 /path/to/local/file user@remote:/path/to/remote/
比如,我們要將本地的/home/user/abc.txt文件複製到遠程服務器的/tmp目錄下,並且限制帶寬為512Kbit/s,命令如下:
scp -l 512 /home/user/abc.txt root@192.168.1.100:/tmp/
8. 保留文件時間和權限
scp -p /path/to/local/file user@remote:/path/to/remote/
比如,我們要將本地的/home/user/abc.txt文件複製到遠程服務器的/tmp目錄下,並且保留原文件的修改時間、訪問時間和訪問權限,命令如下:
scp -p /home/user/abc.txt root@192.168.1.100:/tmp/
9. 使用ssh密鑰
這裡的id_rsa是你自己的密鑰文件。
scp -i ~/.ssh/id_rsa /path/to/local/file user@remote:/path/to/remote/
比如,我們要將本地的/home/user/abc.txt文件複製到遠程服務器的/tmp目錄下,並且使用ssh密鑰,命令如下:
scp -i ~/.ssh/id_rsa /home/user/abc.txt root@192.168.1.100:/tmp/
10. 使用不同的用戶名和端口
scp -P port -r /path/to/local/dir differentuser@remote:/path/to/remote/
比如,我們要將本地的/home/user目錄複製到遠程服務器的/tmp目錄下,使用22號端口並且另一個用戶differentuser,命令如下:
scp -P 22 -r /home/user differentuser@192.168.1.100:/tmp/
四、總結
SCP是一個非常實用的命令,可以方便地進行文件傳輸。通過本文的實例,相信大家已經掌握了SCP命令的基本用法。大家可以根據自己的需求,結合實際情況,靈活使用SCP命令,達到高效、安全地進行文件傳輸的目的。
原創文章,作者:KZDNM,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/330101.html