rsync window linux权限,Windows上的Rsync:创建的目录的权限错误

我正在尝试使用rsync通过Windows上的ssh(cygwin)将更改推送到我的服务器。我使用的命令是:

rsync -rvz -e ssh /cygdrive/c/myfolder/ rsyncuser@192.168.1.110:/srv/www/prj112/myfolder/

/srv/www/prj112/myfolder/属于rsyncuser所有。我的问题是,尽管rsync的子目录在发布时被创建,但每个目录都被分配了d---------的默认权限,因此rsync无法复制其中的任何文件。

我该怎么解决这个问题?

您可以发布您的Windows和Cygwin版本以及以下命令的输出:ls-la/srv/www/prj112/myfolder吗?

在Cygwin 1.7版中,忽略NTFS权限的选项已更改。这可能是导致问题的原因。

尝试将"noacl"标志添加到c:cygwinetcfstab中的cygwin挂载,例如:

none /cygdrive cygdrive user,noacl,posix=0 0 0

您可以使用"chmod"选项通过rsync传递自定义权限:

rsync -rvz --chmod=ugo=rwX -e ssh source destination

-杜rwx chmod = = = =,dgo RX,是fgo RW=R,(755dirs 644files,the默认)

如果你是独立运行在Cygwin的安装使用的工具来确定的,cygpathto the the location of the fstabto write to与cygpath -w /etc/fstab。这将usually好或者相关%TMP%or to the current目录。

总的来说这noaclof the above or for --chmod挤压我的政策建议。但--no-perms加工使用。

如果从Windows部署站点(例如,octopress使用rsync),可以将权限设置为775,添加多个chmod命令:

rsync -avz --chmod=ug=rwx --chmod=o=rx -e ssh

这似乎也说明to s not just 755文件,目录,which is not for generally advised Web主机。

您的问题源自这样一个事实:该目录上的Unix权限实际上是0。所有访问信息都存储在单独的ACL中,rsync不会复制这些ACL。因此,它将远程副本上的权限设置为0,并且很明显,之后无法写入该目录。你可以跑

chmod -R 775

在那个目录上,这将解决您的rsync问题。

查看手册页后,我可以知道chmod参数在rsync中从2.6.8版开始就可用。但是你必须把--chmod=ugo=rwX和rsync -av结合起来使用。

您还应该尝试以下命令:

rsync -av rsyncuser@192.168.1.110:/srv/www/prj112/myfolder

它至少可以在Linux上工作。注意rsync不需要提到ssh——至少在Linux上是这样。

但是,如果所有操作都失败了,并且只是给出一个选项,那么您可以看看这个现成的打包工具cwrsync。

要从Windows同步到Unix/Linux,您应该提供如下命令

SET BACKUP_SERVER=my.backup.server

SET SSH_USER=theUnixUserName

SET STORAGEPATH=/home/%SSH_USER%/Backup/

SET STORAGEURI=%BACKUP_SERVER%:%STORAGEPATH%

SET SSH_ID=/cygdrive/c/Users/theWindowsUserName/Documents/keyfiles/id_dsa

SET EXCLUDEFILE=backup_excludes.txt

SET BACKUPLOGFILE=/cygdrive/c/Users/theWindowsUserName/Backuplogs/backup-%DATE%-%TIME::=-%.log

ssh命令是

SET BACKUP=rsync -azvu --chmod=Du=rwx,Dgo=rx,Fu=rw,Fgo=r --rsh="ssh -l %SSH_USER% -i '%SSH_ID%'" --exclude-from=%EXCLUDEFILE% --delete --delete-excluded --log-file="%BACKUPLOGFILE%"

使用backup_Excludes.txt,包含忽略元素行,如

.git

.svn

.o

\Debug

elease

然后在脚本中使用

%BACKUP% /cygdrive/c/mySensibleData %STORAGEURI%

%BACKUP% /cygdrive/c/myOtherSensibleData %STORAGEURI%

%BACKUP% /cygdrive/c/myOtherSensibleData2 %STORAGEURI%

等等。这将备份目录mysensibledata、myothersensiledata和myothersensiledata2,目录的权限为755,文件的权限为644。您还可以在每个备份的%backuplogfile%中获取备份日志。

当某个进程打开目标文件时,cygwin rsync将报告权限被拒绝。下载并运行进程资源管理器,查看是否有其他内容正在锁定该文件,或者只需尝试重命名该文件,然后查看是否收到有关打开该文件的其他进程的Windows错误信息。

此外,还可以尝试创建(全局)环境变量CYGWIN并将其值设置为nontsec。

does not work with Cygwin版本> = 1.7

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值