常見命令--SCP

liu4356發表於2024-03-18

常見命令--SCP

scp命令用於在Linux下進行遠端複製檔案的命令,和它類似的命令有cp,不過cp只是在本機進行複製不能跨伺服器,而且scp傳輸是加密的。可能會稍微影響一下速度。當你伺服器硬碟變為只讀read only system時,用scp可以幫你把檔案移出來。另外,scp還非常不佔資源,不會提高多少系統負荷,在這一點上,rsync就遠遠不及它了。雖然 rsync比scp會快一點,但當小檔案眾多的情況下,rsync會導致硬碟I/O非常高,而scp基本不影響系統正常使用。





語法
scp(選項)(引數)





選項
-1:使用ssh協議版本1;
-2:使用ssh協議版本2;
-4:使用ipv4;
-6:使用ipv6;
-B:以批處理模式執行;
-C:使用壓縮;
-F:指定ssh配置檔案;
-l:指定寬頻限制;
-o:指定使用的ssh選項;
-P:指定遠端主機的埠號;
-p:保留檔案的最後修改時間,最後訪問時間和許可權模式;
-q:不顯示覆制進度;
-r:以遞迴方式複製。





引數
原始檔:指定要複製的原始檔。
目標檔案:目標檔案。格式為user@host:filename(檔名為目標檔案的名稱)。
例項
從遠端複製到本地的scp命令與上面的命令雷同,只要將從本地複製到遠端的命令後面2個引數互換順序就行了。

從遠處複製檔案到本地目錄

scp root@10.10.10.10:/opt/soft/nginx-0.5.38.tar.gz /opt/soft/
從10.10.10.10機器上的/opt/soft/的目錄中下載nginx-0.5.38.tar.gz 檔案到本地/opt/soft/目錄中。

從遠處複製到本地

scp -r root@10.10.10.10:/opt/soft/mongodb /opt/soft/
從10.10.10.10機器上的/opt/soft/中下載mongodb目錄到本地的/opt/soft/目錄來。

上傳本地檔案到遠端機器指定目錄

scp /opt/soft/nginx-0.5.38.tar.gz root@10.10.10.10:/opt/soft/scptest
複製本地/opt/soft/目錄下的檔案nginx-0.5.38.tar.gz到遠端機器10.10.10.10的opt/soft/scptest目錄。

上傳本地目錄到遠端機器指定目錄

scp -r /opt/soft/mongodb root@10.10.10.10:/opt/soft/scptest
上傳本地目錄/opt/soft/mongodb到遠端機器10.10.10.10上/opt/soft/scptest的目錄中去。

常用選項-案例

SCP(Secure Copy)命令在Linux和類Unix系統中用於在本地主機和遠端主機之間安全地複製檔案和目錄。以下是一些常見的SCP選項:

1. **基本複製選項:**
   - `-r` 或 `--recursive`:遞迴複製整個目錄及其子目錄。
   - `-p` 或 `--preserve`:保留原檔案的修改時間和模式(許可權)。

2. **安全和連線選項:**
   - `-q` 或 `--quiet`:靜默模式,減少輸出資訊。
   - `-C` 或 `--compression`:啟用壓縮,減小網路傳輸的資料量。
   - `-P` 或 `--port`:指定遠端主機的SSH埠號(預設是22)。
   - `-i` 或 `--identity-file`:指定私鑰檔案用於身份驗證。

3. **身份和許可權選項:**
   - `-o` 或 `--option`:可以跟隨任意的ssh選項,例如 `-o User=user` 指定遠端使用者名稱。
   - `-l` 或 `--limit`(在某些版本中):限制頻寬使用。
   - `-S` 或 `--ssh-option`:向SSH客戶端傳遞選項。

4. **其他選項:**
   - `-v` 或 `--verbose`:詳細模式,顯示更多資訊。
   - `-4` 或 `-6`:強制使用IPv4或IPv6。
   - `-B` 或 `--batch`:禁用詢問,用於非互動式環境。

示例用法:

```shell
# 將本地檔案複製到遠端主機
scp -i private_key_file local_file user@remote_host:remote_directory

# 遞迴複製本地目錄到遠端主機
scp -r -P 2222 local_directory user@remote_host:destination_directory

# 使用壓縮複製大檔案
scp -C big_file user@server.example.com:path/to/destination

# 靜默模式複製檔案
scp -q local_file remote_user@remote_host:/path/to/remote_file
```

請注意,每次使用scp時都需要確保已有正確的SSH訪問許可權,即要麼透過公鑰認證無需密碼,要麼在命令執行過程中輸入密碼。