如何向搭载RStudio Server的虚拟机定期传输本地文件?
SCP命令行+定时任务
用SCP(基于SSH的安全拷贝工具)直接在本地终端执行传输命令,适合写脚本自动化定期执行。
单个文件传输命令:scp /本地绝对路径/目标文件 虚拟机用户名@虚拟机IP:/虚拟机目标目录/
批量传输文件夹:scp -r /本地绝对路径/目标文件夹 虚拟机用户名@虚拟机IP:/虚拟机目标目录/
把上述命令存成shell脚本,再配合系统定时工具:Linux用cron,Windows用任务计划程序,就能设定固定时间自动传输。SFTP客户端定时同步
用FileZilla、WinSCP这类可视化SFTP工具,配置好虚拟机的SSH连接信息(IP、端口、登录凭证),既能手动拖拽文件,还能设置定时同步任务。比如WinSCP可以创建同步脚本,搭配Windows任务计划;FileZilla也能通过站点管理器设置定期同步规则,适合需要可视化操作又要自动定期传输的场景。Git版本控制同步
如果本地文件已经纳入Git管理,完全可以在RStudio Server里复用这个仓库实现定期同步:- 本地将文件提交到Git仓库,推送到远程仓库(或本地搭建Git服务)
- 在RStudio Server的终端里执行
git clone 仓库地址拉取仓库 - 之后定期在RStudio终端执行
git pull,就能同步本地的最新修改;反过来也能从虚拟机推送更新到本地。这种方式还能保留文件的修改历史,适合需要版本追踪的场景。
SSHFS挂载本地目录
通过SSHFS把本地目录挂载到虚拟机的文件系统中,这样虚拟机里可以直接访问本地文件,相当于实时同步,不需要手动触发传输。
先在虚拟机端安装SSHFS(Debian/Ubuntu系):sudo apt install sshfs
创建挂载点并挂载:sshfs 本地用户名@本地IP:/本地目录路径/ /虚拟机内挂载点路径/
可以把挂载命令添加到虚拟机的开机启动脚本,实现开机自动挂载,适合需要频繁访问本地文件的场景。
内容的提问来源于stack exchange,提问作者Zizou

