我必须继续从我的〜/ src复制文件到/ home / httpd目录,这是我做前端更改时的一个痛苦。 有没有办法,我可以改变文件自动同步? – 特别是只有当我正在开发 – 我可以打开和closures。
虽然不是自动的,但是一旦你完成修改,使用rsync:
$ rsync -r --delete /home/username/src/ /home/httpd
你甚至可以创build一个别名:
$ alias sync='rsync -r --delete /home/username/src/ /home/httpd'
正如我强调给大家,在使用这个之前,你应该检查出man rsync的其他选项。
此外,我强烈build议版本控制( svn或git也许)由于多种原因。
编辑:
我个人会做的是使用bash循环—特别是while sleep循环时。 在shell中input以下内容:
while true; do sleep 300 # Every 5 minutes rsync -r --delete /home/username/src/ /home/httpd done &
这将使它成为一个可以随时杀死的后台工作。 只需键入jobs即可查看jobs的索引,如果不再需要,请键入kill %(index) 。
或者,要将命令作为例如每10分钟的cron作业添加,请将以下内容附加到crontab中:
*/10 * * * * rsync -r --delete /home/username/src/ /home/httpd
编辑你的crontab:
$ crontab -e
我不完全确定你的目标是什么,但有几点build议可能会有一些用处:
即时,修改(保存):如果你希望一旦修改文件就立即更新,我可能会问为什么你不只是在/ home / httpd中进行修改,背部。 如果要立即复制更改,则保护工作目录的想法(或防止以不正确的编辑取消网站)被否决。
几乎瞬间,在修改:如果由于某种原因,你希望你的改变几乎立即应用,文件修改(即一旦保存一个文件,它被复制),那么我会build议看着incron 。 可以设置为在目录更改时触发脚本。
按需(不是即时):
如果你正在寻找完成所有的编辑,然后推动更改(这是我期望你正在寻找),那么你有几个select。 我认为,烦恼在于确定哪些文件被改变,并从各种不同的目录复制它们。
Shell脚本:一个简单的解决scheme是使用rsync 。 它将决定你的〜/ src目录相对于你的/ home / httpd目录所做的改变,并且做出你的/ home / httpd与源目录同步的改变。
版本控制:尽pipe比rsync复杂得多,但最有效的解决scheme是版本控制 – 例如Subversion。 基本上:
svn commit ) – 挂钩将自动更新/ home / httpd 虽然设置起来比较困难,但是最初这种方法允许最大程度的控制,并且可以轻松让您回滚更改,列出修改后的文件,并查看每次修订所做的更改(差异) – 还可以向更改添加说明与每个提交。
看看lsyncd 。 它使用inotify获取有关文件更改的信息,并通过rsync同步它们。