在Linux上如何将一个文件的权限复制到另一个文件

时间:2019-11-20 08:53:46  来源:igfitidea点击:

在Linux中,如何从一个文件中拷贝它的用户,组所有权和权限到另一个文件?
如何只复制文件的权限,而不复制文件?

在Linux上复制文件权限的语法

语法如下,使用RFILEs模式而不是MODE值:

chmod --reference=RRFILE FILE
chmod [options] --reference=RRFILE FILE

示例:复制文件权限,但不复制文件

让我们列出两个文件:

ls -l anaconda.cfg initial-setup-ks.cfg

输出示例:

-rw-rw-rw- 1 libvirt-qemu kvm 230862848 Aug 16  2015 anaconda.cfg
-rw-r--r-- 1 libvirt-qemu kvm 786432000 Mar 14 02:01 initial-setup-ks.cfg

将anaconda.cfg的文件权限复制到anaconda.cfg :

chmod --reference=anaconda.cfg initial-setup-ks.cfg

检查一下:

ls -l anaconda.cfg initial-setup-ks.cfg

输出示例:

-rw-rw-rw- 1 libvirt-qemu kvm 230862848 Aug 16  2015 anaconda.cfg
-rw-rw-rw- 1 libvirt-qemu kvm 786432000 Mar 14 02:01 initial-setup-ks.cfg

还可以指定多个文件:

chmod --reference=file.txt dest1.txt dest2.txt dest3.conf

并且结合find和xargs一起使用:

find /path/to/dest/ -type f -print0 | xargs -O -I {} chmod --reference=/path/to/rfile.txt {}

在Linux上复制文件所有者的语法

使用RRFILEs所有者和组而不是指定OWNER:GROUP值的语法如下

chown --reference=RRFILE FILE
chown [options] --reference=RRFILE FILE

示例:复制文件的所有权,但不复制文件

将文件hdparm-9.56.tar的所有权复制到cryptsetup.tar.gz:

chown --reference=hdparm-9.56.tar cryptsetup.tar.gz