公司的网站要不断的更新,不断上传文件,怎样才能提高效率? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
hellohacker
V2EX    程序员

公司的网站要不断的更新,不断上传文件,怎样才能提高效率?

  •  
  •   hellohacker 2013-08-06 09:15:57 +08:00 6828 次点击
    这是一个创建于 4467 天前的主题,其中的信息可能已经有所发展或是发生改变。
    这个问题困惑了好长时间,至今也没有解决。说下我的情况:
    我负责维护公司的3个网站,主要是网站功能的开发。几乎每天要修改代码,一次大概修改十几个甚至更多。起初我是现在本地调试完,然后上传到服务器。但是我发现,有时候修改的文件多了,再去找到底修改了哪些文件,是一件非常头疼的事情。
    我现在的做法是,把服务器的文件全部down到本地,然后修改一个上传一个,然后调试,这样虽然不用到最后找修改了哪些文件,但是修改一次上传一次,然后调试,这样的做法也挺慢。
    大家有没有这样的工作经历,是怎样解决的。在这里先谢过大家。

    ps:第一次发帖,有不当的地方 还请指正!
    55 条回复    1970-01-01 08:00:00 +08:00
    rwx
        1
    rwx  
       2013-08-06 09:18:20 +08:00
    git
    felix021
        2
    felix021  
       2013-08-06 09:19:23 +08:00
    目测楼主真的是没有听说过版本管理的概念。。。
    humiaozuzu
        3
    humiaozuzu  
       2013-08-06 09:20:54 +08:00
    版本管理+自动化部署
    welsonla
        4
    welsonla  
       2013-08-06 09:23:07 +08:00
    1你可以看看自动化部署,
    2.你把代码提交到git,每次修改先git commit,看看本地涉及到了哪些文件
    hellohacker
        5
    hellohacker  
    OP
       2013-08-06 09:23:35 +08:00
    git 和svn这些我了解过 但是这些不都也要提交吗。能否给我个详细的方案。
    lichao
        6
    lichao  
       2013-08-06 09:26:04 +08:00
    @hellohacker { 但是我发现,有时候修改的文件多了,再去找到底修改了哪些文件,是一件非常头疼的事情。 }

    用了 git,就不会有这个烦恼了
    ushuz
        7
    ushuz &nbs;
       2013-08-06 09:29:23 +08:00
    @hellohacker 既然了解过,何不试试看?
    williamx
        8
    williamx  
       2013-08-06 09:36:42 +08:00
    lz可能还不知道流程。我想大家的意思应该是,把修改push到git服务器,然后在网站服务器上pull代码。
    我对网站开发不熟,有知道的最好说多一点,好让lz google的时候也有关键字。
    Livid
        9
    Livid  
    MOD
    PRO
       2013-08-06 09:38:51 +08:00
    最快的方法:

    在本地机器和服务器上都安装 BTSync,然后就自动同步了。
    felix021
        10
    felix021  
       2013-08-06 09:40:51 +08:00
    @ushuz +1

    @williamx 我觉得提到git/svn/版本管理就足够了。大家都这么说,表示这是公认的解决方案,楼主需要做的事情就是真的去“了解”他以前“了解过”的东西。

    至于“给个详细的方案”这种要求,我就只能呵呵了。伸手党在各个地方一向都不太让人喜欢。
    vibbow
        11
    vibbow  
       2013-08-06 09:47:12 +08:00
    用GoodSync,关联本地目录和服务器目录,任何一边修改了,都可以同步到另一边。
    pythoner
        12
    pythoner  
       2013-08-06 09:48:06 +08:00
    git + fabric 世界会美好很多
    vibbow
        13
    vibbow  
       2013-08-06 09:49:43 +08:00
    GoodSync的强大之处就是支持各种连接方法,实属同步/备份利器。
    http://vsean.net/pic/di-YLQR.png
    vibbow
        14
    vibbow  
       2013-08-06 09:53:55 +08:00
    补充:GoodSync也可以设置排除,多线程同步,定时同步。
    还有一些其他的功能,比如说对于软连接,是同步为软连接,还是向下探寻;或者同步完成/失败后发送邮件,保留被删除的文件等等功能(反正我都没用)
    hellohacker
        15
    hellohacker  
    OP
       2013-08-06 10:06:43 +08:00
    谢谢大家的精彩回答 受益匪浅!
    wwqgtxx
        16
    wwqgtxx  
       2013-08-06 10:19:43 +08:00 via Android
    用git hook应该也可以,具体方法可以看看gitpro这本书
    wwqgtxx
        17
    wwqgtxx  
       2013-08-06 10:20:54 +08:00 via Android
    是progit,手滑了一下……
    BeijingBaby
        18
    BeijingBaby  
       2013-08-06 10:22:37 +08:00
    @wwqgtxx 滑了一下
    wwqgtxx
        19
    wwqgtxx  
       2013-08-06 10:23:55 +08:00 via Android
    Ricepig
        20
    Ricepig  
       2013-08-06 10:45:16 +08:00
    金山快盘百度网盘DBankEverBoxYunio等等等等
    phuslu
        21
    phuslu  
       2013-08-06 10:55:37 +08:00
    楼主你其实可以试下 winscp 的同步功能。。。
    vivianalive
        22
    vivianalive  
       2013-08-06 10:55:47 +08:00
    一个人维护三个网站...我很惊讶你竟然没有使用版本管理软件.
    试想一下,如果是三个人维护一个网站,你们要怎么追踪,记录,解决各自的改动和冲突呢?

    所以,你需要GIT/SVN/SourceAnywhere + 任意一款FTP工具.
    buru
        23
    buru  
       2013-08-06 10:57:36 +08:00
    我用svn,代码一次提交,然后show log,选择added 和 modified 的文件,export出来,然后ftp 上传至服务器,done
    buru
        24
    buru  
       2013-08-06 10:59:24 +08:00
    我对git不熟悉,我想问一下各位git有没类似svn的export功能,就是导出来目录结构都在的?
    xiaket
        25
    xiaket  
       2013-08-06 11:01:30 +08:00
    没人提rsync? 要比较可以先dry-run一次, 确认后再跑一次. 自动增量, 自动比较文件校验值, 多省心...
    aggron
        26
    aggron  
       2013-08-06 11:01:52 +08:00
    我现在的做法是,代码托管在bitbucket上(上面可以建免费的私有仓库)
    每次发布版本时,本地push到bitbucket,然后SSH到VPS,hg pull, hg update代码就拿过去了。

    你也可以不使用bitbucket的服务,直接在服务器上建hg/git server。
    chchwy
        27
    chchwy  
       2013-08-06 11:22:54 +08:00
    @hellohacker { 但是我发现,有时候修改的文件多了,再去找到底修改了哪些文件,是一件非常头疼的事情。 }

    用了git,知道源何何地何有修改,各修改版之的差,全都一清二楚。

    你要做的就是在服器上git/svn版本,然後始著用。本地端改完了就更推送版本,服器上再版本更新源。
    shierji
        28
    shierji  
       2013-08-06 12:18:14 +08:00
    亲。git欢迎你……
    nsa
        29
    nsa  
       2013-08-06 12:22:38 +08:00
    deploy, production, rsync, git
    terry
        30
    terry  
       2013-08-06 12:47:53 +08:00
    rsync over SSH, sshfs, NFS, btsync, continous integration 工具直接从 Git Repo 中 checkout 部署,很多不同的做法。
    undeadking
        31
    undeadking  
       2013-08-06 12:53:34 +08:00
    我负责的一个项目是服务器在客户那,我只有ftp的权限,无法在服务器上部署任何软件.于是只能用git diff --name-only 来查看修改过什么文件,然后再逐个上传.

    其他项目都是直接push到代码库,然后在服务器上执行pull

    @buru git archive -o update.zip HEAD $(git diff --name-only HEAD^)
    原贴见 http://ruby-china.org/topics/5312
    Nerrsoft
        32
    Nerrsoft  
       2013-08-06 13:14:30 +08:00
    git 不二选择
    revlis7
        33
    revlis7  
       2013-08-06 14:08:41 +08:00
    @undeadking 对于只能使用FTP的情况,我又要忍不住推荐BeyondCompare了,可通过FTP、SFTP比较本地和远程的文件,哪些文件被修改过一目了然。
    jevonszmx
        34
    jevonszmx  
       2013-08-06 14:11:07 +08:00
    最简单的方法不是版本控制+rsync嘛?
    公司是svn+rsync同步8台web服务器,毫无压力。

    楼主看来对版本控制毫无概念。。。
    mengzhuo
        35
    mengzhuo  
       2013-08-06 14:45:39 +08:00
    git + fabric + rsync + alias

    yoyo~
    pubby
        36
    pubby  
       2013-08-06 14:57:53 +08:00
    gxxa36d
        37
    gxxa36d  
       2013-08-06 15:01:09 +08:00
    版本控制
    lordong
        38
    lordong  
       2013-08-06 15:50:51 +08:00
    竟然没人提到dropbox?
    jpuyy
        39
    jpuyy  
       2013-08-06 16:17:22 +08:00
    你可外包给ls任何一位,问题解决。
    DoubleH
        40
    DoubleH  
       2013-08-06 16:48:17 +08:00
    Git真的就这么NB?
    rwx
        41
    rwx  
       2013-08-06 16:57:44 +08:00
    @DoubleH 能解决问题的工具而已
    asing
        42
    asing  
       2013-08-06 17:26:21 +08:00
    @aggron 请问SSH到VPS是什么意思?

    VPS上面需要配置什么么?

    bitbucket相当于FTP了吧?

    谢谢
    redtears
        43
    redtears  
       2013-08-06 17:46:50 +08:00
    其实,楼主可以通过文件修改时间这个属性来判断,多简单。
    hustlzp
        44
    hustlzp  
       2013-08-06 19:18:01 +08:00
    git push
    fab deploy:(1)cd /path/to/your/project/ (2)git pull(3)restart app
    likuku
        45
    likuku  
       2013-08-07 00:50:05 +08:00   1
    @hellohacker 「git 和svn这些我了解过 但是这些不都也要提交吗。能否给我个详细的方案」

    是的,一样要提交,但是以前你是改好就直接“提交”到线上服务器,无数次提交完全无迹可循,假若自己每次修改文件都另存一份新副本,则很快文件也凌乱到头昏脑胀了。

    git 和 svn 都能让你修改和提交后有机会追踪代码进化历史,并且随时可以取出/比对 任意提交过的版本。
    imzoke
        46
    imzoke  
       2013-08-07 01:52:35 +08:00
    @redtears +1
    如果修改的文件在不同文件夹,可以使用 Everything 列出网站目录下的所有文件,然后按更新日期排序。

    这些都是笨方法,一劳永逸还是 Git 吧。
    xdyl
        47
    xdyl  
       2013-08-07 06:42:10 +08:00
    1.楼主不是开发人员
    2.不是开发人员需要频繁更改源码来发布?
    3.推荐你需要的不是一个Git/Svn.而是一次代码上的重构.给你一个CMS的后台
    lerry
        48
    lerry  
       2013-08-07 09:12:35 +08:00 via Android
    GoodSync不错,我用来同步手机音乐和备份文件
    williamx
        49
    williamx  
       2013-08-07 10:05:57 +08:00
    @felix021 我很不赞同你的这种说法。一个工具针对不同的case有不同的用法。只提git,而不支持具体的方法,对提问者来说,没有实际的帮助。你当然可以就这样认为你已经“给了足够的帮助”,但我还是希望其他人可以更nice一些。
    felix021
        50
    felix021  
       2013-08-07 10:10:51 +08:00
    @williamx 见仁见智。LZ所说的问题“有时候修改的文件多了,再去找到底修改了哪些文件,是一件非常头疼的事情”,如果他真的“了解”过git/svn,用过哪怕只有一次"git/svn status",这就不会是问题,特别是,这个是最基础的命令之一。
    icanfork
        51
    icanfork  
       2013-08-07 10:12:22 +08:00
    @humiaozuzu 我没有用过自动化部署,起码还会版本管理。。。擦,突然感觉自己也挺好。
    williamx
        52
    williamx  
       2013-08-07 10:23:14 +08:00
    @felix021 嗯,真是看出了他对git没有很好的了解,才觉得更需要清晰明确的指导。毕竟对一个新手来说,git并不是那么简单。而git status找出了文件后,如果没有配套的命令/工具来收集这些文件,人工一个一个去处理,还是非常麻烦的一件事情,当然这就和他的具体如何用这些文件有关了,而他也没有说清楚。
    felix021
        53
    felix021  
       2013-08-07 15:14:38 +08:00
    @williamx 一个更清晰明确的指导不一定是好事,也许这次是你帮到了他,但是下次呢?我不知道你有没看过《提问的智慧》 (推荐 @hellohacker 看看),我一直是以这里的标准来要求自己和别人。好的问题才值得好的回答;而显然“能否给我个详细的方案”不是个好问题。
    wwqgtxx
        54
    wwqgtxx  
       2013-08-07 17:39:11 +08:00 via Android
    @williamx
    @felix021
    有你们两个讨论是时间,应该可以给楼主一个解决方案了,毕竟人家是来找答案的,不是来听争论提问与回答的艺术的
    felix021
        55
    felix021  
       2013-08-07 18:08:23 +08:00
    @wwqgtxx 不好意思,相比之下,我觉得后一个问题更重要;而且题主需要的答案,回答里已经有了,剩下的内容他应该而且也有能力去完成,关于这一点LZ在 15L 其实已经表态了。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3380 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 04:59 PVG 12:59 LAX 21:59 JFK 00:59
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86