![如何将文件权限从一个文件夹转移到另一个文件夹?](https://linux22.com/image/1111062/%E5%A6%82%E4%BD%95%E5%B0%86%E6%96%87%E4%BB%B6%E6%9D%83%E9%99%90%E4%BB%8E%E4%B8%80%E4%B8%AA%E6%96%87%E4%BB%B6%E5%A4%B9%E8%BD%AC%E7%A7%BB%E5%88%B0%E5%8F%A6%E4%B8%80%E4%B8%AA%E6%96%87%E4%BB%B6%E5%A4%B9%EF%BC%9F.png)
我cp -r
在一个文件夹里(复制),然后删除了原始文件。我有一个包含大部分文件的备份。如何使用备份恢复副本上的文件和文件夹的权限?
进去做chmod XXX filename
里面的每一件事会非常繁琐。
答案1
您可以使用stat
它来查询备份文件的模式,并chmod
更新工作文件。循环执行此操作,并进行一些字符串操作,您就会得到解决方案。类似下面的操作应该可以复制权限:
# path to the top level of the backup
backup_dir=/path/to/backup/dir
# path to the directory of files that you want to restore
# permissions on.
dir=/path/to/working/dir
find "$backup_dir" |
while read backup_file
do
new_file="$dir${backup_file#$backup_dir}"
chmod --reference="$backup_file" "$new_file"
done
请注意,如果您的文件名包含换行符(但这种情况很少见),则此方法将无法正常工作。此外,该方法尚未经过测试,因此您可能需要通过将“chmod”更改为“echo chmod”来进行“试运行”,这样它只会打印其将执行的操作。
答案2
您使用的是什么备份系统?如果是 Ubuntu 备份,您可以使用 nautilus 恢复原始文件。右键单击父文件夹,然后从菜单中选择“恢复丢失的文件”。
答案3
使用cp -a
或更普遍地cp --preserve=all
来自手册页
--保留[=属性列表] 保留指定的属性(默认值:模式、所有者 ship、timestamps),如果可能的话,附加属性:context, 链接,xattr,全部
chmod
还有递归(-R
)选项。