rsync修改远程文件权限

把《Rainbird的在线安装系统》的代码拷到本地重构了一下,准备回传的时候考虑到会经常更新里面的下载文件,于是决定采用rsync的方式从本地同步到远程。前面有提到《Mac OS X上使用rsync》的问题,当时是图省事没在服务端起rsync服务,后来才发现这么一同步把远程服务器的文件权限都重写了,有些要写入的文件写不了,于是又研究了半天怎么通过rsync同步代码的同时还能保存远程权限不变。
其实如果起服务的话,很简单,直接服务用远程的www帐号运行就保证了权限问题,但是懒,非想在基于ssh的情况下弄出个所以然来。于是各种google,先是各种资料说可以指定远程的帐号–owner=www –group=www,而实际操作的过程中发现根本不管事儿,不知道是不是因为我本地是osx系统的问题,后来查到一个牛x的参数–numeric-ids,加上他以后,发现远程文件不是本地用户所有了,却变成了root,真纠结为嘛好不容易不是本地帐号了却变成了root呢?郁闷了半天,悄然大悟,因为我是通过root帐号的ssh过去的啊!改成www用户不就成了嘛!哎,把自己绕进去了。
错误答案1:

rsync -rzv --owner=www --group=www --delete -e ssh --exclude '.DS_Store' --exclude 'data.txt' /Users/rainbird/Sites/ota/* mli:/data/ufw.me

错误答案2:

rsync -rzv --no-perms --delete -e ssh --exclude '.DS_Store' --exclude 'data.txt' /Users/rainbird/Sites/ota/* mli:/data/ufw.me

错误答案3:

rsync -urzv --numeric-ids --delete -e ssh --exclude '.DS_Store' --exclude 'data.txt' /Users/rainbird/Sites/ota/* mli:/data/ufw.me

Bingo,正确答案:

rsync -azv --delete -e ssh --exclude '.DS_Store' --exclude 'data.txt' /Users/rainbird/Sites/ota/* www@mli:/data/ufw.me

that’a all

转载请注明: 转自Rainbird的个人博客
   本文链接: rsync修改远程文件权限


相关博文

    分享到:

About rainbird

IOS攻城狮
This entry was posted in linux系统运维, Mac使用技巧 and tagged , , , , , . Bookmark the permalink.

发表评论