Hello! 欢迎来到小浪云!


在Liunx服务器中复制文件并同时创建目标目录


avatar
小浪云 2024-06-07 83


我们通常使用cp、rsync和scp等命令将文件从一个位置复制到另一个现有位置。如果目标位置不存在,我们首先创建它,然后将文件复制到新创建的位置。到目前为止,我通常是这样从命令行将文件从一个位置复制到另一个位置的。你知道我们可以复制一个文件,并自动创建目标目录(如果目录不存在时),在本文中,我们将看到如何在Linux系统服务器中用一条命令同时复制文件和创建目标目录。

请注意,我说的不是将两个命令结合起来。例如,任何人都可以通过组合下面的两个命令来完成这个任务。

$ mkdir -p destination && cp source_file destination

这不是一个命令。这里我们用了两个命令,即mkdir和cp。这实际上是一个单行命令。现在让我来演示一下如何只用一条命令来完成同样的任务。

Linux中同时复制文件和创建目标目录的方法

我们可以使用三种不同的方法来做到这一点。首先,我们将看到如何使用install命令来做到这一点。

方法1 – 使用install命令

install命令将文件复制到Linux中你所选择的任何位置。它专门用于构建系统之类的系统,例如automake。它是GNU coreutils的一部分,因此您不需要安装它。

要使用 install 命令复制文件并同时创建目标目录,只需运行。

$ install -D source-file destination-Directory

例子:

以下命令将名为的文件复制到名为sk.txt的目标目录8a。请注意,目标目录不存在。我们将使用install以下命令同时复制文件并创建目标目录:

$ install -D sk.txt 8a/sk.txt

通过使用以下ls命令列出文件的内容,验证文件是否已复制到目录中:

$ ls 8a/

此方法有一些限制。您必须在目标位置的末尾提及源文件名。如果未指定文件名,则install命令将不会复制该文件名并显示以下错误:

$ install -D sk.txt 8a/

install: target ‘8a/’ is not a Directory: No such file or Directory

您一次只能复制一个文件。无法使用install命令将多个文件复制到多个目标。

我们还可以使用install以下指南中所述的命令同时复制文件并更改所有权,权限。

方法2-使用cp命令

通常,我们使用cp命令将文件从一个位置复制到另一位置。该cp命令具有一个名为的选项–parents,使我们能够复制源文件的整个目录结构并将其保存在目标位置。

比如说,sk.txt文件保存在~/Downloads目录下,你想把它复制到~/Documents目录下。如果你使用cp命令将文件从~/Downloads复制到~/Documents,文件将保存在这样的目录结构中 -> ~/Documents/Downloads/sk.txt。

实际操作命令

$ cp –parents Downloads/sk.txt ~/Documents/

现在运行tree命令以检查~/Documents目录的内容:

$ tree Documents/

请记住,我们并没有在 ~/Documents 位置内创建任何目录。cp命令的–parents选项保留了源文件的目录结构。

与install命令不同的是,你不需要在目标目录的最后指定文件名。

方法3-使用rsync命令

Rsync是在本地和远程目录之间复制和备份数据的理想解决方案。要使用rsync命令同时复制文件并创建目标目录,请运行:

$ rsync sk.txt 8a/

被调用的目录8a不必存在。Rsync将自动创建它并将源文件保存在其中。

在这三个命令中,我更喜欢该install命令。因为,我可以使用install命令创建嵌套目录(另一个目录内的目录)。据我所知,cp和rsync命令只能创建一个目录。

相关阅读