如何在Linux命令行中复制目录

时间:2020-03-05 15:26:21  来源:igfitidea点击:

如果我们不熟悉Linux命令行,则可能会想到以下问题:如何在Linux命令行中将目录及其中的文件复制到另一个目录?

以下是在Linux中复制目录的方法:

cp -r source_directory destination_directory

我们可能已经知道可以使用cp命令在Linux中复制文件。

我们知道我们可以使用相同的cp命令在Linux命令行中复制文件夹吗?

可能会遇到此错误:

cp: -r not specified; omitting directory 'test_dir'

让我向我们展示有关在Linux中复制目录的一两件事。

在Linux命令行中复制目录

我们绝对可以使用相同的cp命令,但使用递归选项-r将包含其内容的文件夹复制到另一个文件夹。
上面提到的错误还提示我们错过了-r选项。

我们要做的就是以这种方式使用命令:

cp -r source_directory destination_directory

现在,如果在目标目录上使用ls命令,则该目录中应包含整个源目录。

-r选项允许递归选项。
这意味着目录的全部内容包括其自己的子目录,目录中的所有内容都将复制到目标位置。

关于在Linux中复制目录的几点注意事项

这里有一些注意事项以及有关复制文件夹的提示。

目标目录不存在?它将被创建

如果目标目录不存在(但路径存在),则将最多创建一个目录(在下一节中说明)。
但是,它现在将复制源目录的内容,而不是源目录本身。

例如,如果我们这样做:

cp -r source_directory non_existing_directory

将使用source_directory的内容创建non_existing_directory,但其中不会包含source_directory。
仅source_directory的文件将被复制。
就像non_existing_directory将是source_directory的副本。

Hyman@theitroad:~$ls
test_dir
Hyman@theitroad:~$cp -r test_dir new_dir
Hyman@theitroad:~$tree
 .
 ├── new_dir
 │   ├── c.xyz
 │   ├── myzip1.zip
 │   └── myzip2.zip
 └── test_dir
     ├── c.xyz
     ├── myzip1.zip
     └── myzip2.zip
 2 directories, 6 files

复制时无法创建嵌套目录

我们不能使用以上命令来创建嵌套目录结构。

例如,如果我们尝试使用cp -r source_dir dir1/dir2/dir3但dir2和dir3不存在,它将不会创建嵌套目录结构,并且命令将失败。

保留原始文件属性

让事情简短的最后一个技巧。
如果将-a选项与-r方法一起使用,它将保留原始文件信息,例如文件许可权,文件时间戳等。

它将把目录归档到新位置,而不是重新创建。