57 lines
2.0 KiB
Markdown
57 lines
2.0 KiB
Markdown
`scp` 指令的語法跟一般的 `cp` 類似,只不過 `scp` 可以在不同的 Linux 主機之間複製檔案,其語法為:
|
||
```
|
||
scp [帳號@來源主機]:來源檔案 [帳號@目的主機]:目的檔案
|
||
```
|
||
|
||
# 保留檔案時間與權限
|
||
若要讓檔案在複製之後,還可保留原本的修改時間、存取時間與權限,可以加上 `-p` 參數:
|
||
```
|
||
scp -p /path/file1 myuser@192.168.0.1:/path/file2
|
||
```
|
||
|
||
# 資料壓縮
|
||
若要將資料壓縮之後再傳送,減少網路頻寬的使用量,可以加上 `-C` 參數:
|
||
```
|
||
scp -C /path/file1 myuser@192.168.0.1:/path/file2
|
||
```
|
||
|
||
# 限制傳輸速度
|
||
若要限制網路的使用頻寬,可以用 `-l` 指定可用的網路頻寬上限值(單位為 Kbit/s):
|
||
```
|
||
# 限制傳輸速度為 400 Kbit/s
|
||
scp -l 400 /path/file1 myuser@192.168.0.1:/path/file2
|
||
```
|
||
|
||
這樣就會限制 `scp` 只能使用 `400` Kbit/s,也就是 `400 / 8 = 50` KB/s。
|
||
|
||
# 自訂連接埠
|
||
一般 SSH 伺服器的連接埠號為 22,如果遇到使用非標準埠號的伺服器,可以用 `-P` 來指定埠號。若遠端的 SSH 伺服器使用 `2222` 這個連接埠,我們就可以這樣複製檔案:
|
||
```
|
||
# 使用 2222 連接埠
|
||
scp -P 2222 /path/file1 myuser@192.168.0.1:/path/file2
|
||
```
|
||
|
||
# IPv4 與 IPv6
|
||
`-4` 與 `-6` 兩個參數分別可以讓 `scp` 使用 IPv4 與 IPv6 來傳輸資料:
|
||
```
|
||
# 使用 IPv4
|
||
scp -4 /path/file1 myuser@192.168.0.1:/path/file2
|
||
|
||
# 使用 IPv6
|
||
scp -6 /path/file1 myuser@192.168.0.1:/path/file2
|
||
```
|
||
|
||
# 更快的方法:使用SSH+TAR
|
||
```
|
||
ssh 使用者@主機 "cd 目標目錄 ;tar -zcvf - 目標" | cat > 目標.tar.gz
|
||
```
|
||
|
||
例:
|
||
```
|
||
ssh 192.168.0.22 "cd /var ;tar -zcvf - log" | cat > 22_log.tar.gz
|
||
```
|
||
|
||
# 參考
|
||
- [SSH + TAR 取代 SCP @ Vexed's Blog :: 隨意窩 Xuite日誌](https://blog.xuite.net/vexed/tech/586811949)
|
||
- [Linux中互传文件:ssh+tar 与Scp 比较 - 简书](https://www.jianshu.com/p/856a2dc883e0)
|
||
- [轉貼--ssh tar 命令把遠端檔拉回來或推過去 --- 山城風雲的點滴](http://jimsung168.blogspot.com/2014/01/ssh-tar.html) |