rsync 如何真正的同步文件?

rsync -aP --exclude '.git' ./ root@1.1.1.1:/var/www/ccc

我用这个方式可以同步本地的资料到远端去
只是有个问题
假设我在本地增加了某文件 shell 一次
之后我又把这某文件删除,再 shell 一次后
在远端并不会同步。。。。
可以怎么解?

阅读 3k
2 个回答

你要的是不是 rsync 加上参数 --delete

--delete                delete extraneous files from dest dirs

可以 man rsync 看看 rsync 的手册,给了一些用法示例。

EXAMPLES
       Here are some examples of how I use rsync.

       To backup my wife’s home directory, which consists of large MS Word files and mail folders, I use a cron job that runs

              rsync -Cavz . arvidsjaur:backup

       each night over a PPP connection to a duplicate directory on my machine "arvidsjaur".

       To synchronize my samba source trees I use the following Makefile targets:

           get:
                   rsync -avuzb --exclude '*~' samba:samba/ .
           put:
                   rsync -Cavuzb . samba:samba/
           sync: get put

       this allows me to sync with a CVS directory at the other end of the connection. I then do CVS operations on the remote machine, which saves a lot of time as the remote CVS protocol isn’t  very  effi‐
       cient.

       I mirror a directory between my "old" and "new" ftp sites with the command:

       rsync -az -e ssh --delete ~ftp/pub/samba nimbus:"~ftp/pub/tridge"

       This is launched from cron every few hours.

按你这样,每次其实是单独的执行一次rsync任务,所以所谓的同步是在rsync扫描到一个状态,并同步到远端为止,对此想要持续同步,其实你需要让rsync任务重复执行,一般是你要cron机制,定时同步,即把你的rsync任务加入到cron循环中去。

需要注意的是,rsync可能执行的时间比较长,为了安全有效,一般是让同一项(如针对同一规则)rsync的同步调度单例化,然后让该任务间隔时间短一些。
比如单例化任务 每隔1小时就执行一次,因为首次同步后,后面一般都是变量同步,就会比较快啦。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏