您的位置:首页 > 其它

windows 2003 server 使用cwrsync同步文件夹的权限问题

2010-05-21 00:00 656 查看
windows 2003 server 使用cwrsync 3 同步文件夹后,权限和安全属性不能同步,直接导致无法使用,查阅资料后发现必须在运行命令前使用SET CYGWIN=nontsec参数
将以下内容保存成.bat批处理文件后即可运行。
@ECHO OFF
SET CYGWIN=nontsec
"c:\Program Files\cwRsync\bin\rsync" -avrr /cygdrive/c/srcdir/ /cygdrive/d/dstdir/

于cwrsync 3.0.7以后及cwrsync
4.0以后的版本,由于cygwin已经从1.5升级到1.7,而且cygwin1.7的mount点从注册表改成了/etc/fstab
,cwrsync
4.0.4版本使用CYGWIN=nontsec参数无效,仍然存在目录权限问题,解决方法如下,在rsync.exe的上一级目录新建一个etc目录,
然后在etc目录用写字板新建一个fstab文件,不带扩展名,文件内容为
#edit by gaodi
#none /cygdrive cygdrive ntfs override,binary,noacl 0 0
none /cygdrive cygdrive binary,posix=0,user,noacl 0 0
C:/Program\040Files/cwrsync / ntfs override,binary,noacl 0 0
C:/Program\040Files/cwrsync/bin /usr/bin ntfs override,binary,noacl 0 0
#C:/Program\040Files/cwrsync/etc/terminfo /usr/share/terminfo ntfs override,binary,noacl 0 0

保存退出。
重新运行rsync.exe 执行同步后目录就不会出现"权限顺序不正确"的提示了。
(主要是第三行起作用,如果只加这一行一定要在最后加一个回车符)
附fstab文件的使用方法:
The Cygwin Mount Table
The
/etc/fstab file is used to map Win32 drives and network shares into
Cygwin's internal POSIX directory tree. This is a similar concept to the
typical UNIX fstab file. The mount points stored in /etc/fstab are
globally set for all users. Sometimes there's a requirement to have user
specific mount points. The Cygwin DLL supports user specific fstab
files. These are stored in the # #directory /etc/fstab.d and the name of
the file is the Cygwin username of the user, as it's stored in the
/etc/passwd file. The content of the user specifc file is identical to
the system-wide fstab file.
The file fstab contains descriptive
information about the various file systems. fstab is only read by
programs, and not written; it is the duty of the system administrator to
properly create and maintain this file. Each filesystem is described on
a separate line; fields on each line are separated by tabs or spaces.
Lines starting with '#' are comments.
The first field describes
the block special device or remote filesystem to be mounted. On Cygwin,
this is the native Windows path which the mount point links in. As path
separator you MUST use a slash. Usage of a backslash might lead to
unexpected results. UNC paths (using slashes, not backslashes) are
allowed. If the path contains spaces these can be escaped as '\040'.
The
second field describes the mount point for the filesystem. If the name
of the mount point contains spaces these can be escaped as '\040'.
The
third field describes the type of the filesystem. Cygwin supports any
string here, since the file system type is usually not evaluated. The
notable exception is the file system type cygdrive. This type is used to
set the cygdrive prefix.
The fourth field describes the mount
options associated with the filesystem. It is formatted as a comma
separated list of options. It contains at least the type of mount
(binary or text) plus any additional options appropriate to the
filesystem type. Recognized options are binary, text, nouser, user,
exec, notexec, cygexec, nosuid, posix=[0|1]. The meaning of the options
is as follows.
acl - Cygwin uses the filesystem's access control lists (ACLs) to
implement real POSIX permissions (default). This flag only
affects filesystems supporting ACLs (NTFS) and is ignored
otherwise.
auto - Ignored.
binary - Files default to binary mode (default).
cygexec - Treat all files below mount point as cygwin executables.
exec - Treat all files below mount point as executable.
noacl - Cygwin ignores filesystem ACLs and only fakes a subset of
permission bits based on the DOS readonly attribute. This
behaviour is the default on FAT and FAT32. The flag is
ignored on NFS filesystems.
nosuid - No suid files are allowed (currently unimplemented).
notexec - Treat all files below mount point as not executable.
nouser - Mount is a system-wide mount.
override - Force the override of an immutable mount point (currently "/").
posix=0 - Switch off case sensitivity for paths under this mount point.
posix=1 - Switch on case sensitivity for paths under this mount point
(default).
text - Files default to CRLF text mode line endings.
user - Mount is a user mount.
While
normally the execute permission bits are used to evaluate
executability, this is not possible on filesystems which don't support
permissions at all (like FAT/FAT32), or if ACLs are ignored on
filesystems supporting them (see the aforementioned acl mount option).
In these cases, the following heuristic is used to evaluate if a file is
executable: Files ending in certain extensions (.exe, .com, .bat, .btm,
.cmd) are assumed to be executable. Files whose first two characters
begin with '#!' are also considered to be executable. The exec option is
used to instruct Cygwin that the mounted file is "executable". If the
exec option is used with a directory then all files in the directory are
executable. This option allows other files to be marked as executable
and avoids the overhead of opening each file to check for a '#!'. The
cygexec option is very similar to exec, but also prevents Cygwin from
setting up commands and environment variables for a normal Windows
program, adding another small performance gain. The opposite of these
options is the notexec option, which means that no files should be
marked as executable under that mount point.
A correct root
directory is quite essential to the operation of Cygwin. A default root
directory is evaluated at startup so a fstab entry for the root
directory is not necessary. If it's wrong, nothing will work as
expected. Therefore, the root directory evaluated by Cygwin itself is
treated as an immutable mount point and can't be overridden in
/etc/fstab... unless you think you really know what you're doing. In
this case, use the override flag in the options field in the /etc/fstab
file. Since this is a dangerous thing to do, do so at your own risk.
/usr/bin
and /usr/lib are by default also automatic mount points generated by
the Cygwin DLL similar to the way the root directory is evaluated.
/usr/bin points to the directory the Cygwin DLL is installed in,
/usr/lib is supposed to point to the /lib directory. This choice is safe
and usually shouldn't be changed. An fstab entry for them is not
required.
nouser mount points are not overridable by a later call
to mount. Mount points given in /etc/fstab are by default nouser mount
points, unless you specify the option user. This allows the
administrator to set certain paths so that they are not overridable by
users. In contrast, all mount points in the user specific fstab file are
user mount points.
The fifth and sixth field are ignored. They are so far only specified to keep a Linux-like fstab file layout.
Note
that you don't have to specify an fstab entry for the root dir, unless
you want to have the root dir pointing to somewhere entirely different
(hopefully you know what you're doing), or if you want to mount the root
dir with special options (for instance, as text mount).
Example entries:
Just a normal mount point:
c:/foo /bar fat32 binary 0 0
A mount point for a textmode mount with case sensitivity switched off:
C:/foo /bar/baz ntfs text,posix=0 0 0
A mount point for a Windows directory with spaces in it:
C:/Documents\040and\040Settings /docs ext3 binary 0 0
A mount point for a remote directory without ACL support:
//server/share/subdir /srv/subdir smbfs binary,noacl 0 0
This is just a comment:
# This is just a comment
Set the cygdrive prefix to /mnt:
none /mnt cygdrive binary 0 0
Whenever
Cygwin generates a Win32 path from a POSIX one, it uses the longest
matching prefix in the mount table. Thus, if C: is mounted as /c and
also as /, then Cygwin would translate C:/foo/bar to /c/foo/bar. This
translation is normally only used when trying to derive the POSIX
equivalent current directory. Otherwise, the handling of MS-DOS
filenames bypasses the mount table.
If you want to see the current
set of mount points valid in your session, you can invoking the Cygwin
tool mount without arguments:
Example 3.1. Displaying the current set of mount points
bash$ mount
f:/cygwin/bin on /usr/bin type system (binary,auto)
f:/cygwin/lib on /usr/lib type system (binary,auto)
f:/cygwin on / type system (binary,auto)
e:/src on /usr/src type system (binary)
c: on /cygdrive/c type user (binary,posix=0,user,noumount,auto)
e: on /cygdrive/e type user (binary,posix=0,user,noumount,auto)

You
can also use the mount command to add new mount points, and the umount
to delete them. However, since they are only noted in memory, these
mount points will disappear as soon as your last Cygwin process ends.
See the section called 搈ount?and the section called 搖mount?for more
information.
Note
When you upgrade an existing older Cygwin
installation to Cygwin 1.7, your old system mount points (stored in the
HKEY_LOCAL_MACHINE branch of your registry) are read by a script and the
/etc/fstab file is generated from these entries. Note that entries for
/, /usr/bin, and /usr/lib are never generated.
The old user mount
points in your HKEY_CURRENT_USER branch of the registry are not used to
generate /etc/fstab. If you want to create a user specific
/etc/fstab.d/${USER} file from your old entries, there's a script
available which does exactly that for you, bin/copy-user-registry-fstab.
Just start the script and it will create your user specific fstab file.
Stop all your Cygwin processes and restart them, and you can simply use
your old user mount points as before.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: