init: 导入团队知识库内容
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
---
|
||||
name: remote-sync
|
||||
description: 将本地项目目录通过 rsync 增量同步到远端服务器 39.100.114.100:/data。自动排除 node_modules/.git 等文件。需通过 `/remote-sync` 显式调用。本技能为项目级,仅对 /home/zdh/projects 目录下的文件生效。
|
||||
trigger: manual
|
||||
---
|
||||
|
||||
# 项目部署技能
|
||||
|
||||
## 使用说明
|
||||
|
||||
通过 `/remote-sync` 调用,将本地目录增量同步到远端服务器。本技能仅在 `/home/zdh/projects` 目录下可用。
|
||||
|
||||
## 远端目标
|
||||
|
||||
- 服务器: `39.100.114.100`
|
||||
- 用户: `root`
|
||||
- 密码: `QQmm3721`
|
||||
- 远端路径: `/data/projects`
|
||||
|
||||
## 操作流程
|
||||
|
||||
1. **确认本地目录**:询问用户要上传的本地目录路径。如果用户未指定,默认使用当前工作目录。
|
||||
2. **确认远端子目录**:询问文件上传到 `/data` 下的哪个子目录。用户可直接回车表示上传到 `/data` 根下,也可指定子路径(如 `my-project` 则目标为 `/data/my-project`)。
|
||||
3. **执行同步**:使用 `rsync` 通过 SSH 增量同步。
|
||||
4. **输出结果**:显示同步完成的文件数量和远端路径。
|
||||
|
||||
## 同步命令
|
||||
|
||||
```bash
|
||||
sshpass -p 'QQmm3721' rsync -avz --delete \
|
||||
--exclude 'node_modules' \
|
||||
--exclude '.git' \
|
||||
--exclude '.next' \
|
||||
--exclude '.nuxt' \
|
||||
--exclude '.cache' \
|
||||
--exclude 'dist' \
|
||||
--exclude '*.log' \
|
||||
--exclude '.env' \
|
||||
--exclude '.env.*' \
|
||||
--exclude 'coverage' \
|
||||
--exclude '.DS_Store' \
|
||||
--exclude 'Thumbs.db' \
|
||||
-e "ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10" \
|
||||
<本地目录>/ \
|
||||
root@39.100.114.100:/data/<远端子目录>/
|
||||
```
|
||||
|
||||
**说明**:
|
||||
- `--delete`:远端删除本地已不存在的文件,保持镜像一致
|
||||
- `-avz`:归档模式 + 显示详情 + 压缩传输
|
||||
- `StrictHostKeyChecking=no`:避免首次连接交互确认
|
||||
- 末尾 `/` 不可省略,表示同步目录内容而非目录本身
|
||||
|
||||
## 依赖检查
|
||||
|
||||
首次执行前检查 `sshpass` 是否已安装:
|
||||
|
||||
```bash
|
||||
which sshpass
|
||||
```
|
||||
|
||||
如未安装,提示用户执行:
|
||||
|
||||
```bash
|
||||
sudo apt install -y sshpass # Debian/Ubuntu
|
||||
# 或
|
||||
sudo yum install -y sshpass # CentOS/RHEL
|
||||
```
|
||||
|
||||
## 无 sshpass 降级方案
|
||||
|
||||
若无法安装 sshpass,退回到交互式 SSH 密钥认证:
|
||||
|
||||
1. 提示用户执行 `ssh-copy-id root@39.100.114.100` 配置免密登录
|
||||
2. 或使用 `rsync` 不带 sshpass,让用户手动输入密码
|
||||
Reference in New Issue
Block a user