idea自动上传-winscp实时文件夹同步
想把windows上的本地项目文件夹实时同步到linux上,可以用以下三种方法。
# 一、idea自动上传(推荐)
https://www.rms360.top/2019/03/27/%E5%B7%A5%E5%85%B7%E4%BD%BF%E7%94%A8/idea%E8%BF%9C%E7%A8%8B%E4%BB%A3%E7%A0%81%E5%AE%9E%E6%97%B6%E5%90%8C%E6%AD%A5/
# 前言
开发时一般的平台都是windows,但windows对开发极其不友好,一般都会在本地开启虚拟机,安装上linux环境进行项目的部署测试。下面介绍一种windows主机与linux虚拟机代码同步的方法。
# 前置条件
在windows与linux中都有着同一份代码。
# 配置步骤
# 1、打开windows主机上的idea,选择tools->deployment->configuration
选择sftp连接。sftp和ssh使用同样的用户名密码和端口号。端口号默认是22,但是为了安全起见可能被修改成其他端口。
# 2、点击右上方三个点,新建一个连接
- 连接类型:sftp
- 依次填写虚拟机信息
- root path项选中linux虚拟机中的项目位置
- 打开mapping面板
- 选择deployment path为根路径/
- 在excluded paths 添加要排除的目录(我觉得只选本地的就可以)
- 确定保存
# 3、选择tools->deployment—>auto upload使其处于开启状态
此时,在window主机对项目所做的任何修改一旦被保存都会被实时推送到虚拟机中。一旦在linux虚拟机中项目功能验证通过,开始推送到git远程仓库中。
注 该方法可以避免由于windows系统所带来的一些麻烦,同时能利用windows图形化优势。当然,有钱的话直接买mac更合适。
该方法同样适用于远程服务器,并且所有的jetbrains家族的开发工具都支持该操作。
# 配置远程解释器,调试
这个还没做。 https://blog.csdn.net/lishanlu136/article/details/82683641
# 二、winscp的实时文件夹同步(不用idea时推荐该方法)
用第三种samba挂载文件的方法将linux上的文件夹挂载到windows上之后,用idea直接打开,但是因为网速太差,idea中修改文件后保存非常卡,不太好用。后来使用了winscp的同步功能:
winscp左边是windows的目录,右边是linux的目录,先把linux上的工程拷到windows上,然后在winscp中两边同时打开,再点主界面上的同步按钮(第二个是从windows同步到linux)。然后winscp会弹出一个监控窗口,当修改本地文件时,winscp会监控到文件被修改,然后立即将修改的文件上传至linux。
(开始的时候有个奇怪的现象,就是winscp可以连上linux也可以读取,但是文件修改不了,后来发现linux项目文件夹下有个.user.ini文件,这个文件rm删不掉,最后用 chattr -i .user.ini解除锁定后删掉了。参考 https://www.landui.com/help/show-4304.html ,再后面winscp就可以正常写入了。)
winscp同步的时候,一直开着监控窗口。它可以设置排除哪些文件或文件夹不同步。监控窗口,点“传输设置,(文件掩码旁边的)编辑”,进入编辑文件掩码窗口。在里面输入不想同步的文件夹,如``.idearuntime`,还可以在传输设置界面勾选==不同步隐藏文件==,非常方便。另外还能把传输设置保存为预设方案,下次直接用。

按照该图设置生成的掩码为:
| *_tmp_*; application/.htaccess; .idea/; runtime/; public/
# 三、使用samba将linux文件夹挂载到windows下-映射网络驱动器(比较慢)
http://blog.chinaunix.net/uid-29281850-id-5192260.html
这篇文章写得很好,不过它设置用户名密码的部分不是很清楚。
https://baijiahao.baidu.com/s?id=1619078525576466832&wfr=spider&for=pc
这篇文章详细讲了samba怎么设置用户名密码。
# linux上安装samba
使用root登录(ubuntu的话,使用sudo操作) ,然后 执行:
yum install samba创建一个linux用户,用户名设置为samba(也可以设置为别的)
useradd samba。这里不需要设置密码使用samba的命令创建一个同名的用户:
pdbedit -a -u samba该命令会提示输入密码。
# 设置共享文件夹
- 假设要共享的文件夹为 /www/wwwroot,修改其权限为777
chmod -R 777 /mnt/share
这里-R表示将其子目录的权限也都递归地改为777
修改smb.conf配置文件,在smb.conf末尾添加一段配置,用于共享上面的文件夹。
vi /etc/samba/smb.conf 添加下面的代码: [wwwroot] comment = Samba's service #这句是注释,可以不要 path = /www/wwwroot public = no writable = yes valid users = samba write list = samba [wwwroot]是共享名,在windows访问的时候,显示文件夹名称为wwroot1
2
3
4
5
6
7
8
9
10
11
12
13关闭selinux。先查看selinux是否开启了:
getenforce。如果是Disabled,就表明没开,如果开了,那就关闭它:网上找永久关闭的方法。(不关闭可能会出现只能访问目录,无法访问文件的问题)启动samba服务:
systemctl enable smb.service systemctl enable nmb.service systemctl restart smb.service systemctl restart nmb.service1
2
3
4设置samba网络通过防火墙 (如果使用了阿里云服务器,还需要到管理页面开放对应的端口)
#下面的等号两边最好不要加空格 firewall-cmd --permanent --zone=public --add-service=samba firewall-cmd --reload1
2
3
# 通过window挂载share文件夹
假设linux的ip地址为47.94.186.23,打开一个文件夹,在地址栏输入 //47.94.186.23 接着会提示输入用户名密码。输入该密码就ok了,像访问windows的共享文件夹一样,里面会显示wwwroot这个共享文件夹。
打开我的电脑,点击映射网络驱动器,输入//47.94.186.23/wwwroot,可以像映射windows的共享文件夹那样将其映射成一个本地磁盘。