如何排除`.git`然后备份和恢复文件夹和文件的所有者和权限?
How to exclude `.git` then backup and restore folders and files owner and permission?
我更喜欢使用bash脚本,因为getfacl,setfacl
有很大的问题(错误)。
在问这个问题之前,我也搜索了一种纯bash
脚本备份和恢复owner and permission
的方法。可惜没有人承认完美的答案。
然后我用一个简单的方法来备份和恢复所有者和权限:
getfacl -R . >permissions.facl
setfacl --restore=permissions.facl
如果我想从.
中排除.git
,怎么办?
是的,你可以。
比如我的目录是这样的
[root@967dd7743677 test]# ls -la
total 20
drwxr-xr-x 4 root root 4096 Jan 11 06:37 .
drwxr-xr-x 1 root root 4096 Jan 2 11:08 ..
drwxr-xr-x 8 root root 4096 Jan 2 12:56 .git
drwxr-xr-x 2 root root 4096 Jan 11 06:37 1one
-rw-r--r-- 1 root root 19 Jan 2 12:55 testfile
[root@967dd7743677 test]#
通过使用 find
你可以排除你想要的任何目录
find . -type f -not -path '*/\.git/*' -exec getfacl -R {} \;
所以我们通过 -exec
调用 getfacl -R
。
你可以重定向输出
find . -type f -not -path '*/\.git/*' -exec getfacl -R {} \; > permissions.facl
希望对您有所帮助。
我更喜欢使用bash脚本,因为getfacl,setfacl
有很大的问题(错误)。
在问这个问题之前,我也搜索了一种纯bash
脚本备份和恢复owner and permission
的方法。可惜没有人承认完美的答案。
然后我用一个简单的方法来备份和恢复所有者和权限:
getfacl -R . >permissions.facl
setfacl --restore=permissions.facl
如果我想从.
中排除.git
,怎么办?
是的,你可以。
比如我的目录是这样的
[root@967dd7743677 test]# ls -la
total 20
drwxr-xr-x 4 root root 4096 Jan 11 06:37 .
drwxr-xr-x 1 root root 4096 Jan 2 11:08 ..
drwxr-xr-x 8 root root 4096 Jan 2 12:56 .git
drwxr-xr-x 2 root root 4096 Jan 11 06:37 1one
-rw-r--r-- 1 root root 19 Jan 2 12:55 testfile
[root@967dd7743677 test]#
通过使用 find
你可以排除你想要的任何目录
find . -type f -not -path '*/\.git/*' -exec getfacl -R {} \;
所以我们通过 -exec
调用 getfacl -R
。
你可以重定向输出
find . -type f -not -path '*/\.git/*' -exec getfacl -R {} \; > permissions.facl
希望对您有所帮助。