【已搞懂】cp: cannot create symbolic link XXX Operation not permitted + 用mount或 df -T可查得某个文件夹是什么文件系统的
【背景】
在Linux下,将某个目录及其下所有文件拷贝到另外一个目录,结果拷贝过程中出错:
cp: cannot create symbolic link `/mnt/linuxdev/Focus/carifan/kernel/2007R1/Bfin_425/linux-2.6.x/Focus/include/asm’: Operation not permitted
【解决过程】
网上搜了下,得知,此处不能创建符号链接,主要有两种可能,
1.没有权限
此处已经保证包括的源和目的地,都是由权限操作的,排除此原因。
2.目标文件系统不支持符号链接
此处经过去查看目标文件夹,是什么文件系统的,查得是smbfs:
[e516537@RD-Linux-2420 ~]$ ls /mnt/linuxdev/Focus/carifan/kernel/2007R1/Bfin_425 -l drwxr-xr-x 29 e516537 root 4096 Aug 23 23:39 linux-2.6.x drwxr-xr-x 66 e516537 root 4096 Aug 23 02:56 vendors [e516537@RD-Linux-2420 ~]$ ls /mnt/ -l |
即,源文件夹是 /usr/src/blackfin/ADI_release/kernel/2007R1/carifan_Bfin_425,属于/目录下面,对应的是ext3,因此本身是支持符号链接的,而目标文件夹是 /mnt/linuxdev/Focus/carifan/kernel/2007R1/Bfin_425 属于/mnt下面的linuxdev,即/mnt/beta/linuxdev,属于smbfs,是通过SMB共享出来的目录,那对应的原始文件夹//nj55w2572/LinuxDev,看来应该是从某个Windows服务器共享过来的,文件系统是FAT或NTFS的,所以不支持符号链接。
即,此处拷贝的源文件夹是支持符号链接,要拷贝到的目标文件夹,不支持符号链接,所以才会报错。但知道原因,也无法解决,因为此处又不能更换smbfs。。。。
【用mount或 df -T可查得某个文件夹是什么文件系统的】
从上面可知,通过mount或df -T 可以查得某个文件夹是什么文件系统的:
[e516537@RD-Linux-2420 ~]$ mount /dev/sda5 on / type ext3 (rw) none on /proc type proc (rw) none on /sys type sysfs (rw) none on /dev/pts type devpts (rw,gid=5,mode=620) usbfs on /proc/bus/usb type usbfs (rw) /dev/sda3 on /boot type ext3 (rw) none on /dev/shm type tmpfs (rw) /dev/sdb1 on /newdisk type ext3 (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw) //nj55w2572/LinuxDev on /mnt/beta/linuxdev type smbfs (0) nfsd on /proc/fs/nfsd type nfsd (rw) /dev/sdc1 on /mnt/USBext type ext2 (rw) [e516537@RD-Linux-2420 ~]$ df -T Filesystem Type 1K-blocks Used Available Use% Mounted on /dev/sda5 ext3 233918968 123418360 98618136 56% / /dev/sda3 ext3 194449 23555 160854 13% /boot none tmpfs 516604 0 516604 0% /dev/shm /dev/sdb1 ext3 307663800 177760488 114274880 61% /newdisk //nj55w2572/LinuxDev smbfs 1120894976 1046872064 74022912 94% /mnt/beta/linuxdev /dev/sdc1 ext2 961432072 961432072 0 100% /mnt/USBext |
即,知道你要查询的文件夹,比如
/usr/src/blackfin/ADI_release/kernel/2007R1/carifan_Bfin_425
很明显,其是属于根目录/下面的某个文件夹,
而根目录/对应的文件系统是ext3,所以,得知此文件夹是ext3的文件系统的。
一句话两个文件系统不一样,一个支持符号链接另一个不支持符号链接