Tag Archives: rsync

一些win下无法删除的长路径

这些路径在资源管理器里一路点下去,最终提示找不到路径,在cmd下提示 system cannot find the specified path;此外雪上加霜的是这些路径可能还有权限的问题,通过资源管理器里的security下的advance将安全传播到子目录,会提示 cannot enumerate objects in the container类似的提示,cmd下的takeown等也类似有找不到specified path的问题而无法起作用。用我此前开发的removelongpath也无法删除,会提示 access is denied (因为权限不对)。

我天才的试了一下rsync里的sync功能,居然可行!通过 rsync (如deltac)里的sync (即client上没有的server端文件要被删除)来实现删除这些长路径。长路径放到server端。为了解决windows下的权限问题,把deltas的服务设为管理员权限。在客户端使用 –perms选项。

原因大概是因为rsync是个mingw的仿win环境,可以绕过win本身设置的一些限制,比如max path这些。

DeltaCopy 在两个Windows机器上copy时文件权限问题

因为Cygwin迁移到ntfs时存在人文件权限问题,在win平台上会导致文件权限问题。rsync后每个文件和文件夹都被添上几个<not inherit>的用户及当前用户被deny掉。因此当前用户就无法访问虚拟目录对应的目录。

以下解决方法可以解决当前用户被deny的问题。但<not inherit>的用户仍然被添加。

  1. 在DeltaC端添加 –perms (两个英文短横线)
  2. DeltaC的Options里将 Change permissions on server to read/write 打上勾。

如果已经有部分目录已经被deny访问。采用以下方法:

  1. DeltaS的虚拟目录右击,选择fix file permission,如果文件多,需要耐心等待一些时间。
  2. 在上一级可以访问的目录上选择合适的权限,并将权限传播到下级文件和目录。文件多的时候,这个操作也会花一些时间。

支持rsync的Windows客户端DeltaCopy

DeltaCopy是不错的支持rsync同步协议的Windows客户端,支持增量同步,甚至支持二进制级别的增量。速度很不错。但由于cygwin的限制,不支持中文名,也不支持长路径。

我做了一个repack,修正上述问题。下载链接如下。不足的是,窗口里不能显示中文,显示的类似于base64,但不妨碍使用。

支持x86, x64平台。

https://skydrive.live.com/embedicon.aspx/Public/DeltaCopyRaw_repack_nzt.rar?cid=0ea641a5a7f665a1&sc=documents