如何在Linux中复制目录树而不复制文件?


17

我想将200个目录和子目录从一个位置复制到另一个位置,但是我不想在这些目录中复制成千上万个文件。我在Linux上。

注意:我没有足够的空间来复制所有内容,然后删除所有文件。

Answers:




5

另一种方法是使用findmkdir

find SOURCE -type d -exec mkdir TARGET/{} \;

只要确保TARGET已经存在或使用mkdir的-p选项即可。


3

您也可以:

find inputdir -type d | cpio -pdumv destdir

简单的力量;)


1

同样,使用(GNU)tar:

find some/dir -type d -print |
tar --no-recursion -T- -c -p -f- |
(cd another/dir && tar -x -p -f-)

除非您具有包含换行符的文件名(可能,但极不可能),否则实际上并不需要-print0在find命令行或-0rsync命令行上使用。Tar(以及rsync和cpio)逐行读取文件名;使用NULL终止符通常对有用xargs,它通常读取由空格分隔的文件名(因此,如果不使用,则不能处理名称中带有空格的文件/目录-0)。



-1
cp -al 

将复制所有带有硬链接的文件。相同的结构,相同的权限。(注意:硬链接,因此不会丢失存储空间。)


无法跨文件系统边界创建硬链接
MountainX-for-Monica

是的,但这并不是说它跨文件系统……
SvennD

-1

ls -d * / @source:查找。-类型d -print0> dirs.txt @目标:xargs -0 mkdir -p

这将导致两个命令都使用空值而不是空格作为分隔符。注意,-type d和-print0的顺序很重要!


这还不清楚,似乎不正确。@source和似乎是对@destination读者的指示,但是即使如此,这仍然行不通。
Law29 '18 -10-2
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.