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

[复制链接] |主动推送
查看23 | 回复0 | 2024-9-11 14:57:23 | 显示全部楼层 |阅读模式
我们通常使用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命令只能创建一个目录。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则