如何将文件权限从一个文件夹转移到另一个文件夹?

如何将文件权限从一个文件夹转移到另一个文件夹?

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)选项。

相关内容