复制文件权限,但不复制文件[关闭]
Posted
技术标签:
【中文标题】复制文件权限,但不复制文件[关闭]【英文标题】:Copy file permissions, but not files [closed] 【发布时间】:2013-02-21 02:44:02 【问题描述】:我有同一个目录树的两个副本。它们在两者中几乎都有相同的文件(一个版本可能有几个额外或丢失的文件)。但是,大多数文件对于两个目录都是通用的(具有相同的相对路径和所有内容)。
假设这些在目录中:
version1/
version2/
问题是 version1/ 中的权限搞砸了,我想复制 version2/ 中的权限,但不要替换 version1/ 中较新的文件。
是否有通过 bash 自动执行此操作的方法? (不一定是 bash,也可以是其他方法/编程语言)。
【问题讨论】:
我在ServerFault中创建了一个与该主题相关的新问题:Copy file permissions, but not files in Unix 我和其他人一样认为这是一个很好的问题,问题和答案的 100 多票就证明了这一点。如果您无法重新打开此问题,至少将其迁移到 Unix 和 Linux,这样会更受欢迎。我在这里没有足够的代表来提名重新开放,但希望 OP 可以。 【参考方案1】:您应该查看chmod
的--reference
选项:
chmod --reference version2/somefile version1/somefile
以合适的方式应用find
和xargs
,你应该没问题,即类似
~/version2$ find . -type f | xargs -I chmod --reference ../version1/
这甚至可以递归地工作,并且对于目标目录中丢失的文件很健壮(除了 No such file ... 错误,可以忽略)。当然它不会对只存在于目标目录中的文件做任何事情。
干杯,
【讨论】:
只是为了确认,在上面的命令中,它正在更改版本 2 以匹配版本 1,反之亦然正确吗?最后,这对丢失文件很有效吗? 否和否。 详细来说,它会将权限从当前目录复制到版本 1,如果目标目录中没有匹配的文件,我不确定xargs
是否会继续 - 您应该在实时运行之前进行测试FS。
请注意,--reference
是 GNU 功能,而不是 POSIX,因此 chmod
可能并非在所有系统中都有。
我可以通过从 live CD 复制权限来保存 Fedora 安装。 9个月后仍然有效。谢谢!【参考方案2】:
您可以使用此脚本(它会递归地更改每个文件/目录的权限)
#!/bin/sh
chmod --reference $1 $2
if [ -d $1 ]
then
if [ "x`ls $1`" != "x" ]
then
for f in `ls $1`
do
$0 $1/$f $2/$f
done
fi
fi
使用参数 version2 version1 运行脚本
【讨论】:
我知道这是五年前的事,但我想知道您是否还记得在发布它时测试它。我想试一试,但不想在没有事先确认的情况下按原样复制、粘贴和运行它。【参考方案3】:你可以试试:
chmod owner-group-other ./dir or ./file
除非权限细化并且从一个文件到另一个文件不同,否则您可以对目录执行递归 chmod 并统一权限。
请参阅 man chmod 以获取有关可能有用的选项的参考
【讨论】:
以上是关于复制文件权限,但不复制文件[关闭]的主要内容,如果未能解决你的问题,请参考以下文章