如何在VS Code远程编辑保存文件时自动创建本地副本?
实现VS Code远程编辑时自动备份文件到本地
当然可以实现,以下是几种无需手动scp的方案:
方案一:自定义VS Code任务+同步脚本
- 本地创建备份目录,比如
~/remote-backups - 在远程工作区根目录创建同步脚本
sync-to-local.sh,内容如下(替换成你的本地路径和远程用户信息):
#!/bin/bash REMOTE_FILE="$1" # 本地备份目录,确保替换为你的实际路径 LOCAL_BACKUP_DIR="$HOME/remote-backups$(dirname "$REMOTE_FILE")" mkdir -p "$LOCAL_BACKUP_DIR" # 建议提前配置远程到本地的免密SSH登录,避免每次输入密码 scp "$REMOTE_FILE" "本地用户名@本地IP:$LOCAL_BACKUP_DIR/"
- 给脚本添加执行权限:
chmod +x sync-to-local.sh - 打开远程工作区的
.vscode/tasks.json,添加自动触发的任务:
{ "version": "2.0.0", "tasks": [ { "label": "Auto Backup Remote File", "type": "shell", "command": "${workspaceFolder}/sync-to-local.sh ${file}", "trigger": "onDidSaveExecution", "runOptions": { "instanceLimit": 1 } } ] }
配置后,每次保存远程文件时,脚本会自动将文件同步到本地对应目录。
方案二:使用VS Code同步扩展
- 安装
Sync-Rsync扩展,配置远程路径和本地备份路径,设置触发条件为文件保存,开启单向同步(远程→本地)即可。 - 或者选择
Remote Sync扩展,在设置中指定同步方向为远程到本地,触发事件设为onSave,无需手动编写脚本。
方案三:挂载远程目录+本地监听同步
- 用
sshfs将远程目录挂载到本地:
sshfs 远程用户名@远程IP:/远程cpp文件目录 ~/remote-mounted
- 本地编写监听脚本(以Linux为例),监听挂载目录的文件保存事件并自动备份:
#!/bin/bash WATCH_DIR="$HOME/remote-mounted" BACKUP_DIR="$HOME/remote-backups" inotifywait -m -r -e close_write "$WATCH_DIR" | while read -r _ _ file_path; do relative_path="${file_path#$WATCH_DIR/}" local_backup_path="$BACKUP_DIR/$relative_path" mkdir -p "$(dirname "$local_backup_path")" cp "$file_path" "$local_backup_path" done
运行这个脚本后,任何对挂载目录文件的修改(包括VS Code保存操作)都会自动同步到本地备份目录。
内容的提问来源于stack exchange,提问作者shekhar
相关产品推荐
相关产品推荐

