为什么Linux cp命令没有从软链接完全复制文件?

为什么Linux cp命令没有从软链接完全复制文件?

我有一个软链接,链接到一个嵌套的图像文件夹(数千张图像)

(DRS) xzhan@4daf823ea86f:~$ ls -l voc12_root
lrwxrwxrwx 1 xzhan aiml 30 Mar 16 15:20 voc12_root -> /mnt/Data/Datasets/voc12_root/

我想复制其某个子文件夹中的图像:

(DRS) xzhan@4daf823ea86f:~$ cp -r voc12_root/VOCdevkit/VOC2012/ ~/DRS_dataset

“cp”命令应该可以正常工作,但似乎在复制过程中丢失了一些图像,我无法解决此问题。有人能帮助我吗?

(DRS) xzhan@4daf823ea86f:~$ du -b voc12_root/VOCdevkit/VOC2012/
5341193450      voc12_root/VOCdevkit/VOC2012/superpixels
74008   voc12_root/VOCdevkit/VOC2012/ImageSets/Segmentation
2352400 voc12_root/VOCdevkit/VOC2012/ImageSets/Action
29596   voc12_root/VOCdevkit/VOC2012/ImageSets/Layout
7205056 voc12_root/VOCdevkit/VOC2012/ImageSets/Main
9665156 voc12_root/VOCdevkit/VOC2012/ImageSets
18642246        voc12_root/VOCdevkit/VOC2012/Annotations
9322572 voc12_root/VOCdevkit/VOC2012/SegmentationObject
1922590472      voc12_root/VOCdevkit/VOC2012/JPEGImages
9359317 voc12_root/VOCdevkit/VOC2012/SegmentationClass
8110414228      voc12_root/VOCdevkit/VOC2012/

(DRS) xzhan@4daf823ea86f:~$ du -b DRS_dataset/
1922565896      DRS_dataset/JPEGImages
7205056 DRS_dataset/ImageSets/Main
74008   DRS_dataset/ImageSets/Segmentation
2352400 DRS_dataset/ImageSets/Action
29596   DRS_dataset/ImageSets/Layout
9665156 DRS_dataset/ImageSets
1922565896      DRS_dataset/VOC2012/JPEGImages
7205056 DRS_dataset/VOC2012/ImageSets/Main
74008   DRS_dataset/VOC2012/ImageSets/Segmentation
2352400 DRS_dataset/VOC2012/ImageSets/Action
29596   DRS_dataset/VOC2012/ImageSets/Layout
9665156 DRS_dataset/VOC2012/ImageSets
5341172970      DRS_dataset/VOC2012/superpixels
9322572 DRS_dataset/VOC2012/SegmentationObject
9359317 DRS_dataset/VOC2012/SegmentationClass
18646342        DRS_dataset/VOC2012/Annotations
8110373268      DRS_dataset/VOC2012
5341172970      DRS_dataset/superpixels
9322572 DRS_dataset/SegmentationObject
9359317 DRS_dataset/SegmentationClass
18646342        DRS_dataset/Annotations
16220746536     DRS_dataset/

答案1

为了完整复制符号链接并将其保留为符号链接,除了 -r 标志外,您还可以使用 -H 标志。因此,您的命令如下:

cp -rH voc12_root/VOCdevkit/VOC2012/ ~/DRS_dataset

如果您不想保留符号链接,但想用它创建一个目录,则可以使用 -L 标志:

cp -rL voc12_root/VOCdevkit/VOC2012/ ~/DRS_dataset

希望有所帮助。:)

相关内容