vault backup: 2025-08-20 14:35:48

Affected files:
Too many files to list
This commit is contained in:
2025-08-20 14:35:48 +08:00
parent 1d09289423
commit afeb207be2
148 changed files with 13360 additions and 0 deletions

57
21.01. Linux/CLI/scp.md Normal file
View File

@@ -0,0 +1,57 @@
`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)