显然时光倒流使用rsync,不仅可以在恢复文件时恢复权限,还可以将它们单独保存到数据中。是否可以仅恢复特定目录/文件的权限?我不想恢复任何文件,只想恢复文件之前的权限。
这有可能吗?
如果不是最好的方法可能是通过将文件与备份进行比较并手动执行来创建权限更改列表(相关问题)。
我正在使用 Debian 9.1 和 KDE。
答案1
GNUchmod
可以拿一个参考文件:
--reference=RFILE
use RFILE's mode instead of MODE values
如果您背部的文件夹结构保持不变,您可以执行以下操作:
cd /path/to/backup
find . -exec chmod --reference={} --changes /source/of/{} \;
/source/of
是完成备份的路径。
现在您可以使用find
的测试仅对所需的文件/目录进行操作。
既然你说它使用rsync
,我认为应该保留目录结构,并且你应该可以使用 SSHFS 等在本地挂载远程系统,所以原则上这应该可行。
答案2
我们可以通过 rsync -ani 获取权限改变的文件列表
rsync -ani newFile new/ | awk {'print $2'}
然后我们可以将输出传递给 chmod 并使用输出作为参考文件从备份到权限已更改的原始文件:
rsync -ani newFile new/ | awk {'print $2'} | xargs -I@ chmod --reference=new/@ @
我尝试通过创建文件来重现实例,并对新目录执行 rsync,然后更改原始文件的权限:
[pijain@kuliza370 testing]$ ll
total 0
drwxrwxr-x. 2 pijain pijain 21 Aug 29 16:56 new
-rwxrwxrwx. 1 pijain pijain 0 Aug 29 16:56 newFile(origial file with 777)
[pijain@kuliza370 testing]$ ll new
total 0
-rw-rw-r--. 1 pijain pijain 0 Aug 29 16:56 newFile(backup with 644)