如何使用Cygwin中的cp.exe并保留权限

mli*_*ner 6 permissions acl cygwin cp

我正在使用Cygwin的cp.exe来复制Windows 7中的文件.不幸的是,当我对文件的权限进行更改时.

我尝试过使用:

cp --preserve=all
Run Code Online (Sandbox Code Playgroud)

但这也不起作用,当我检查原始文件与副本的安全性时,副本具有不同的权限.

显然,在使用Cygwin进行复制时必须有一种方法来保留权限,但我找不到它.

小智 9

我相信在/ etc/fstab中的/ cygdrive挂载点添加选项noacl会做你想要的.

$ cat fstab
# For a description of the file format, see the Users Guide   
# http://cygwin.com/cygwin-ug-net/using.html#mount-table

# This is default anyway:
# none /cygdrive cygdrive binary,posix=0,user 0 0
none /cygdrive cygdrive binary,posix=0,user,noacl 0 0
Run Code Online (Sandbox Code Playgroud)

请参阅cygwin邮件列表中的http://cygwin.com/cygwin-ug-net/using.html#mount-table讨论.


mli*_*ner 7

在询问上述问题后,我对此进行了更多调查.

根据与Cygwin开发人员之一的讨论,看来Cygwin并不关心Windows权限,只是坚持使用POSIX.

据我所知,POSIX权限与Windows的权限完全不同,所以是的,它们很受支持,但最终,Cygwin无法复制文件并维护正常的Windows权限.对我没用.使用Python或Ruby要好得多.

我很想被证明是错的.

  • 今天这让我很烦,非常令人失望.修复:`getfacl src-file.txt | setfacl -f - dest-file.txt`为什么Cygwin的`cp`不能为我做那个?!另一个选项可能是将`cp`别名化为等效的`rsync`命令,类似于[this answer](http://unix.stackexchange.com/a/44400). (3认同)