做php的应该很多懂linux吧,问个问题,本地开发好后,如何只把最近一天修改过的文件同步到服务器? 因为前期已经一次性做了个同步,文件很多,所以不可能还是整体上传一遍,只希望按文件修改时间复制一遍就行了,希望用linux的shell编程来实现,但对shell编程不熟悉,不知道这里可有会的? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用代码管理工具实现可能更容易一些.在本地check in.在服务器update,就更新所有修改过的了. 不行,不想用svn,我们本地开发是用svn的,但我不想用这种方式发布更新,现在就是想这样使用shell编程,利用linux的文件查找命令找出修改时间为某个时间点以后的文件,然后把这些文件以cp或者比如scp之类的命令传出远程服务器去 对,最好装上svn或者cvs,还用shell去实现未免太折腾了,要考虑长远,有好工具为什么不用呢。一个成熟点的项目开发,即使只有一个人维护代码,不装上版本控制环境是不行的。 已经有svn了,还要用shell,如果你是想提高一下shell的能力的话,无可厚非. 你checkout一下不就好了。。折腾 shell很折腾?我是按照以前玩DOS系统的思维来考虑,比如:scp可以将文件用本地传输到远程find命令可以查找指定时间点的所有文件|可以做管道传输我现在只是不知道,如何利用管道命令,将一个命令的输出用作另一个命令的输入而已,如果按照这个思路可以实现的话,应该也是就是一条语句就搞定了.这会很折腾? 刚用了rsync,发现两点不足:1、我希望指定其中某些子目录不同步,不知道能否实现?2、新增文件、修改文件都能同步没错,但是如何是删除某个文件呢,我希望某个文件在本地删除的话,同步后的远程服务下,相应目录也应删除某个文件,不知道能否实现?若能解决这两个问题,我可以再加分,谢谢了 不是,我告诉你我为什么不想用svn,最大的问题就是update后,每个目录下都有.svn这个目录,我不想在远程工作服务器中存在这样多余的东西,明白了吗?另外rsync的删除同步问题已经解决了 应该有exclude功能的,man一下吧国内好几个比较大(市值过百亿)的公司用rsync,应该没什么问题吧 嗯,刚研究出来,确实不错了给大家都来个参考吧,呵呵rsync -vazu -p --delete --exclude=.svn /var/www/html/myweb /var/bak/#同步myweb目录(包括子目录和文件)到/var/bak/看下参数是不是还有调整的地方,大家可以一起来讨论下 还有个问题需要解决下,就是如果是往远程服务器传的话,做到定时工作,那么输入密码就成了问题(在没做ssh同效登录的情况下),不知道怎么解决?比如:rsync -vazu -p --delete --exclude=.svn /var/www/html/myweb [email protected]:/var/bak/ 执行后需要输入远程机器的口令,如此一来,如何放在定时脚本中使用? 定时一般放到crontab里,输入密码可以用expect解决 expect需要独立安装?我rhel5.4里没有的?另外请问下,如果不用expect,就使用linux的内部支持命令能实现自动输入口令吗?比如使用管道命令传输口令给rsync? 自己装一个吧,发行版不带这个很正常。几乎所有情况,shell内部命令不能实现自动输入密码。因为expect已经很好用了,所以程序本身一般不会考虑这个问题。如果可以的话,你可以试试看把ssh搞成其它方式登陆,然后rsync里使用ssh做传输。设置下public key和privacy key,放到相应的目录下就可以了,不用输入密码就能登陆。别把key泄漏给不该看到key的人就没有安全问题了。 rsync里有个参数,表示在des机器上删除source机器没有的文件 哦,那看来就只能装expect了,明天试试看,你能给我上面那个语句写到expect脚本自动输入密码吗,明天我就装上好直接试试看 #!/bin/bashexpect -c "spawn ssh 127.0.0.1; expect password:; send mima\n; interact" 用svn就可以做到。svn可以导出两个版本之间修改过的文件。然后你把导出的文件复制到线上。 钻牛头角??有SVN不用要用SHELL?---------------------------用技术换广告,谢谢支持------------------------------------------------Ventes Batteries PC Portable, Alimentation PC Portable, Batteries Camescope, Appareil Numerique, des Chargeursrolex watches, Replica Watches, Replica WatchR4DS Cartes, Cartes R4, R4 DSi, R4 SDHC Pour Nintendo DS / DS, Dsi bateriasR4DS Cartes, Cartes R4, R4 DSi, R4 SDHC Pour Nintendo DS / DS, DsiR4DS Cartes, Cartes R4, R4 DSi, R4 SDHC Pour Nintendo DS / DS, DsiR4DS Cartes, Cartes R4, R4 DSi, R4 SDHC Pour Nintendo DS / DS, DsiR4DS Cartes, Cartes R4, R4 DSi, R4 SDHC Pour Nintendo DS / DS, Dsi 不想用.svn这些多余的东西,使用svn做的到?如果可以做到,请帮忙解答一下,谢谢! diffpatch两个命令结合也可以完成 楼主对Linux系统了解十分不足,建议看书看手册 #!/usr/bin/expect# 同步目录spawn rsync -vazu -p --delete --exclude=.svn /var/www/html/myweb [email protected]:/var/www/html/expect "password: "send "mypassword\n"expect eofexit写了个expect脚本,可是执行不成功,也没报任何错误,不知道是什么原因?当脚本执行到spawn rsync -vazu -p --delete --exclude=.svn /var/www/html/myweb [email protected]:/var/www/html/这条语句时,并没有看到提示输入密码的文件,当后面的send "mypassword\n"还是执行了,不知道怎么会这样? 都搞定了,主要是expect等待时机的选择上的问题,谢谢各位 expect eof 改成 interact,看看执行过程中是哪一步出了问题 可以试一下我用php编写的一个文件同步程序,在我的资源中.我想你在自己的电脑上有web服务器,把同步程序放到本地和远程服务器的根目录下,通过该程序可以自动遍历目录,列出文件变动,可以双向同步.需要注意的是,要有curl支持 怎么去掉后面的0 求 这个效果的 分页代码。 函数返回值问题 遇到难题了,如何完全准确的判断用户来自公网还是来自内网? 请教各位大大一个关于phpstrom工具的一个问题 没分了,问一个php+xml概念问题 显示问题? 为什么总是出现CGI Error 第一次发工资,想给父母买点礼物,大家给参谋参谋? 如何实现图片与文字的混合上传? 求解处理获取stdClass 的值 thinkphp写的验证码不显示
在本地check in.
在服务器update,就更新所有修改过的了.
现在就是想这样
使用shell编程,利用linux的文件查找命令找出修改时间为某个时间点以后的文件,然后把这些文件以cp或者比如scp之类的命令传出远程服务器去
一个成熟点的项目开发,即使只有一个人维护代码,不装上版本控制环境是不行的。
我是按照以前玩DOS系统的思维来考虑,比如:scp可以将文件用本地传输到远程
find命令可以查找指定时间点的所有文件
|可以做管道传输我现在只是不知道,如何利用管道命令,将一个命令的输出用作另一个命令的输入而已,如果按照这个思路可以实现的话,应该也是就是一条语句就搞定了.
这会很折腾?
1、我希望指定其中某些子目录不同步,不知道能否实现?
2、新增文件、修改文件都能同步没错,但是如何是删除某个文件呢,我希望某个文件在本地删除的话,同步后的远程服务下,相应目录也应删除某个文件,不知道能否实现?若能解决这两个问题,我可以再加分,谢谢了
另外rsync的删除同步问题已经解决了
应该有exclude功能的,man一下吧
国内好几个比较大(市值过百亿)的公司用rsync,应该没什么问题吧
#同步myweb目录(包括子目录和文件)到/var/bak/看下参数是不是还有调整的地方,大家可以一起来讨论下
定时一般放到crontab里,输入密码可以用expect解决
自己装一个吧,发行版不带这个很正常。
几乎所有情况,shell内部命令不能实现自动输入密码。
因为expect已经很好用了,所以程序本身一般不会考虑这个问题。如果可以的话,你可以试试看把ssh搞成其它方式登陆,然后rsync里使用ssh做传输。
设置下public key和privacy key,放到相应的目录下就可以了,不用输入密码就能登陆。别把key泄漏给不该看到key的人就没有安全问题了。
rsync里有个参数,表示在des机器上删除source机器没有的文件
有SVN不用要用SHELL?---------------------------用技术换广告,谢谢支持------------------------------------------------
Ventes Batteries PC Portable, Alimentation PC Portable, Batteries Camescope, Appareil Numerique, des Chargeurs
rolex watches, Replica Watches, Replica Watch
R4DS Cartes, Cartes R4, R4 DSi, R4 SDHC Pour Nintendo DS / DS, Dsi
baterias
R4DS Cartes, Cartes R4, R4 DSi, R4 SDHC Pour Nintendo DS / DS, Dsi
R4DS Cartes, Cartes R4, R4 DSi, R4 SDHC Pour Nintendo DS / DS, Dsi
R4DS Cartes, Cartes R4, R4 DSi, R4 SDHC Pour Nintendo DS / DS, Dsi
R4DS Cartes, Cartes R4, R4 DSi, R4 SDHC Pour Nintendo DS / DS, Dsi
不想用.svn这些多余的东西,使用svn做的到?如果可以做到,请帮忙解答一下,谢谢!
patch
两个命令结合也可以完成
# 同步目录spawn rsync -vazu -p --delete --exclude=.svn /var/www/html/myweb [email protected]:/var/www/html/
expect "password: "
send "mypassword\n"
expect eof
exit写了个expect脚本,可是执行不成功,也没报任何错误,不知道是什么原因?当脚本执行到spawn rsync -vazu -p --delete --exclude=.svn /var/www/html/myweb [email protected]:/var/www/html/这条语句时,并没有看到提示输入密码的文件,当后面的send "mypassword\n"还是执行了,不知道怎么会这样?
我想你在自己的电脑上有web服务器,把同步程序放到本地和远程服务器的根目录下,通过该程序可以自动遍历目录,列出文件变动,可以双向同步.需要注意的是,要有curl支持