鸟哥的私房菜中关于 cp 命令由如下疑问:
[root@www ~]# cd /tmp [root@www tmp]# cp /var/log/wtmp . <==想要复制到目前的目录,最后的 . 不要忘 [root@www tmp]# ls -l /var/log/wtmp wtmp -rw-rw-r-- 1 root utmp 96384 Sep 24 11:54 /var/log/wtmp -rw-r--r-- 1 root root 96384 Sep 24 14:06 wtmp # 注意上面的特殊字体,在不加任何选项的情况下,文件的某些属性/权限会改变; # 这是个很重要的特性!要注意喔!还有,连文件创建的时间也不一样了! # 那如果你想要将文件的所有特性都一起复制过来该怎办?可以加上 -a 喔!如下所示: [root@www tmp]# cp -a /var/log/wtmp wtmp_2 [root@www tmp]# ls -l /var/log/wtmp wtmp_2 -rw-rw-r-- 1 root utmp 96384 Sep 24 11:54 /var/log/wtmp -rw-rw-r-- 1 root utmp 96384 Sep 24 11:54 wtmp_2 # 了了吧!整个数据特性完全一模一样ㄟ!真是不赖~这就是 -a 的特性!
但是实际上在 ubuntu 上得到的结果却不太一样:
royakon@UBUNTU-LLQ-0-212:~/temp$ cp /var/log/wtmp . royakon@UBUNTU-LLQ-0-212:~/temp$ ls -l /var/log/wtmp wtmp -rw-rw-r-- 1 root utmp 135168 2011-08-10 14:25 /var/log/wtmp -rw-r--r-- 1 royakon royakon 135168 2011-08-10 14:54 wtmp #到这里表现完全一样 royakon@UBUNTU-LLQ-0-212:~/temp$ cp -a /var/log/wtmp wtmp-a royakon@UBUNTU-LLQ-0-212:~/temp$ ls -l /var/log/wtmp wt* -rw-rw-r-- 1 root utmp 135168 2011-08-10 14:25 /var/log/wtmp -rw-r--r-- 1 royakon royakon 135168 2011-08-10 14:54 wtmp -rw-rw-r-- 1 royakon royakon 135168 2011-08-10 14:25 wtmp-a #当使用了 -a 选项后,实际表现和鸟哥例题中有些差别,备份文档的所有者和群组并没有能够备份过来,有了改变.
注意到鸟哥利用 root 身份进行的举例,做如下测试:
royakon@UBUNTU-LLQ-0-212:~/temp$ sudo cp -a /var/log/wtmp wtmp-b royakon@UBUNTU-LLQ-0-212:~/temp$ ls -l /var/log/wtmp wtmp-b -rw-rw-r-- 1 root utmp 135936 2011-08-10 16:01 /var/log/wtmp -rw-rw-r-- 1 root utmp 135936 2011-08-10 16:01 wtmp-b
是不是表示当使用 cp -a 时只有文件所有者才能进行完全属性的备份呢?
由於vbird的身份并不能随意修改文件的拥有者与群组,因此虽然能够复制wtmp的相关权限与时间等属性, 但是与拥有者、群组相关的,原本vbird身份无法进行的动作,即使加上 -a 选项,也是无法达成完整复制权限的!
看到了鸟哥的解释了!唉原来再这一章的最后才说明这一点。
cp -a 保留文件属性时受用户权限限制。
例如:要保留文件的所有者属性,你得有更改文件所有者的权限才行。要保留文件
的组属性,你必须得是文件所有者组的成员。总而言之,cp -a 只能在用户权限所允许的范围内尽可能多地保留文件原始属性。
权限越大,属性保留越完整。
Categories: ubuntu
I’m not esaliy impressed. . . but that’s impressing me! 🙂
太复杂了。看不懂。
我也接触 linux 不久,学习中。。。