#独家
cp命令的-d选项和-P选项有何区别?

2023-06-10 0 4,083

使用cp命令的-d-P选项在创建符号链接的副本时,感觉效果一样,这两个选项的区别在哪里?

root@SEBIA:/home/meerkat# ls -l prog*
-rwxrwxr-x 1 meerkat meerkat 15960 Jun  2 23:12 prog
lrwxrwxrwx 1 root    root        4 Jun  8 22:25 prog1 -> prog
root@SEBIA:/home/meerkat# cp -d prog1 prog2 && cp -P prog1 prog3
root@SEBIA:/home/meerkat# ls -l prog*
-rwxrwxr-x 1 meerkat meerkat 15960 Jun  2 23:12 prog
lrwxrwxrwx 1 root    root        4 Jun  8 22:25 prog1 -> prog
lrwxrwxrwx 1 root    root        4 Jun  8 22:35 prog2 -> prog
lrwxrwxrwx 1 root    root        4 Jun  8 22:35 prog3 -> prog

-P 是 –no-dereference

-d 是 –no-dereference –preserve=links

所以 -d 比 -P 多了 –preserve=links。根据 unix.stackexchange上的这个回答,–preserve=links 不是针对软链接的,而是硬链接。就是一次 cp 的源文件中,如果有两个互为硬链接,那么在拷贝结果中,它使也互为硬链接。

$ date > file1
$ ln file1 file2
$ ls -1i file1 file2
6034008 file1
6034008 file2

file1, file2 inode 相同。(互为硬链接)

$ mkdir dir1
$ cp file1 file2 dir1
$ ls -1i dir1
total 8
6035093 file1
6038175 file2

拷贝后,它们的 inode 不再相同。

$ mkdir dir2
$ cp --preserve=links file1 file2 dir2
$ ls -1i dir2
total 8
6089617 file1
6089617 file2

加上 –preserve=links ,拷贝后它们的 inode 保持相同(互为硬链接)。注意它们与源文件的 inode 是不同的,也就是它们不是源文件原硬链接。

我来打破这个0回答的问题吧,同学你的感觉是没错的,如果源文件本身就是一个符号链接时(划重点:请注意特定环境),-P选项和-d选项之间效果上没有区别的。
当然,效果上没区别并不代表两个选项完全一样,所以这里我介绍一下:
-d选项用于复制符号链接本身,而不是它指向的文件。例如,如果源文件prog1是一个符号链接,则使用-d选项复制时,副本prog2将成为一个指向原始符号链接的新符号链接。
-P选项(或–no-dereference)用于保留符号链接的指向。在上面的示例中,使用-P选项创建了prog3的副本,因此它也是一个指向原始文件prog的新符号链接。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

1. JK下载官网所有资源来源于开发团队,加入会员即可下载使用!如有问题请联系右下角在线客服!
2. JK下载官方保障所有软件都通过人工亲测,为每位会员用户提供安全可靠的应用软件、游戏资源下载及程序开发服务。
3. JK开发团队针对会员诉求,历经多年拥有现今开发成果, 每款应用程序上线前都经过人工测试无误后提供安装使用,只为会员提供安全原创的应用。
4. PC/移动端应用下载后如遇安装使用问题请联系右下角在线客服或提交工单,一对一指导解决疑难。

JK软件下载官网 技术分享 cp命令的-d选项和-P选项有何区别? https://www.jkxiazai.com/1800.html

JK软件应用商店是经过官方安全认证,保障正版软件平台

相关资源

官方客服团队

为您解决烦忧 - 24小时在线 专业服务