我正在使用 Windows 7 中的 cygwin 使用此命令将目录复制到 ubuntu 机器。
scp -rp -P 54322 /cygdrive/c/xampp/htdocs/. [email protected]:/home/user/somefolder/
复制所有文件后,它们都具有“无读取、无写入”权限。有人知道为什么吗?
或者,如果我复制 /cygdrive/c/xampp/htdocs/
到/cygdrive/c/Users/user
然后使用 scp 复制文件。权限是正确的。
---------- 1 user user 1273 Apr 21 16:32 about.html
---------- 1 user user 1707 Apr 21 16:33 contact.html
d--------- 2 user user 4096 Apr 21 04:14 images
---------- 1 user user 2259 Apr 21 22:27 index.html
---------- 1 user user 1252 Apr 21 16:33 projects.html
---------- 1 user user 823 Apr 22 22:03 style.css
drwx------ 6 user user 4096 Apr 21 02:11 xampp
答案1
我在使用 rsync/ssh 和 cygwin 时遇到了一些问题,下面是我设法解决的方法:
- 禁用 acl,因为它们无法正确映射到 Linux ACL
- 更改之前检查安装选项:
$ mount
D:/ProgramsVista/ICW/etc/terminfo on /usr/share/terminfo type ntfs (binary,noacl)
D:/ProgramsVista/ICW/bin on /usr/bin type ntfs (binary,noacl)
D:/ProgramsVista/ICW/lib on /usr/lib type ntfs (binary,auto)
D:/ProgramsVista/ICW on / type ntfs (binary,noacl)
C: on /cygdrive/c type ntfs (binary,posix=0,user,noumount,auto)
D: on /cygdrive/d type ntfs (binary,posix=0,user,noumount,auto)
E: on /cygdrive/e type iso9660 (binary,posix=0,user,noumount,auto)
- 更改 ACL 的设置
cp /etc/fstab /etc/fstab.install
echo "none /cygdrive cygdrive binary,posix=0,user,noacl 0 0" >> /etc/fstab
- 要激活新设置,请注销并重新登录
logout
ssh Adminstrator@hostname
- 检查“noacl”的新设置:
$ mount
D:/ProgramsVista/ICW/etc/terminfo on /usr/share/terminfo type ntfs (binary,noacl)
D:/ProgramsVista/ICW/bin on /usr/bin type ntfs (binary,noacl)
D:/ProgramsVista/ICW/lib on /usr/lib type ntfs (binary,auto)
D:/ProgramsVista/ICW on / type ntfs (binary,noacl)
C: on /cygdrive/c type ntfs (binary,noacl,posix=0,user,noumount,auto)
D: on /cygdrive/d type ntfs (binary,noacl,posix=0,user,noumount,auto)
E: on /cygdrive/e type iso9660 (binary,noacl,posix=0,user,noumount,auto)
(抱歉,今天早上似乎无法正确格式化。)
答案2
由于您是从 NTFS 驱动器(具有类似 Windows 的权限)复制的,因此 Cygwin 本质上是在“编造”一组类似 UNIX 的权限。当您将文件复制到真正的基于 UNIX 的系统时,这些权限就变得相关了。由于您-p
在 scp 上使用选项,因此您保留了 Cygwin“编造”的权限。接收系统要么没有具有该 UID 的用户,要么至少您的用户帐户不是具有该 UID 的帐户,因此您甚至无权查看权限。
解决此问题的最简单方法是获取 Linux 端文件的所有权。
chown $(whoami):$(whoami) ~/somefolder -R
chmod 750 -R ~/somefolder/
从 Linux 桌面,这将授予用户 rwx 权限、授予组 rx 权限,而其他用户则无权访问。或者-p
从 scp 中删除,它应该使用您的用户帐户的 UMASK 在 unix 端生成新的权限
答案3
使用附加标志。来自man scp
:
-p Preserves modification times, access times, and modes from the original file.