发布时间:2023-07-07 文章分类:Linux + 投稿人:李佳 字号: 默认 | | 超大 打印

我们在运维和处理Linux服务器的时候,交互文件的需要会用到拷贝文件和目录。当然,我们有些朋友不熟悉Shell命令脚本的是直接下载到本地后通过FTP上传文件的,实际上,如果我们会用到Shell常用的复制命令是可以高效率处理文件复制和目录复制的。比如,我们可以熟练运营cp命令。在这篇文章中,老蒋打算整理几个常见的用cp命令复制目录和文件的案例。

10+常用Linux命令行处理文件复制和目录复制
10+常用Linux命令行处理文件复制和目录复制

命令方法:

$ cp [OPTIONS] <SOURCE> <DEST>
$ cp [OPTIONS] <SOURCE-1> <SOURCE-2> ... <DIRECTORY>

这里,我们可以看到直接命令复制文件和目录的用法。具体实例如下。

1、拷贝一个文件

$ touch file-1.txt
$ cp file-1.txt file-2.txt

这里我们用touch创建一个文件,然后用cp命令进行复制拷贝一份file-2文件。

2、显示复制命令进度

如果我们拷贝复制的文件很多,我们是不是需要看到复制进度?

cp -v file-1.txt file-3.txt

这样用-v参数,可以看到拷贝进度。

3、复制多个文件到目录

比如我们需要将几个文件一起复制到一个目录,这个常用于文件的转移。

$ cp -v file-1.txt file-2.txt file-3.txt dir-1

这样可以将file-1-file-3复制到dir-1目录中。

4、避免覆盖文件

我们在复制文件的时候,有是重名的文件,不希望被覆盖。

$ cp -n -v file-1.txt file-2.txt

默认复制是直接覆盖的,这里我们可以用-n参数进行禁止覆盖。

5、可选是否覆盖

我们可以用参数来检测是否有重复文件,然后提示是否覆盖。

$ cp -i file-1.txt file-2.txt
cp: overwrite 'file-2.txt'?

如果有重复的,会提示是否覆盖。这里用到的-i参数。

6、覆盖之前如何备份文件

cp --backup=numbered -v file-1.txt file-2.txt

7、如何在复制前删除目标文件

 cp --remove-destination -v file-1.txt file-2.txt

在上面的输出中,我们可以看到cp命令首先删除目标文件,然后执行复制操作。

8、如何创建一个硬链接文件而不是复制

$ cp -l -v file-1.txt file-4.txt

我们可以创建一个硬链接,而不是创建源文件的新副本。当磁盘空间不足时,此选项将发挥重要作用。

所以,让我们使用-l选项来创建一个硬链接。

9、如何创建一个软链接文件而不是复制

$ cp -s -v file-1.txt file-5.txt

10、如何在复制时保存文件属性

$ cp -p -v file-1.txt file-6.txt

11、如何递归地执行复制操作

我们可以使用-r或-r选项来使用递归模式。

$ mkdir -p dir-1/dir-2
$ touch dir-1/file-1.txt dir-1/dir-2/file-2.txt

然后进行复制递归。

$ cp -r -v dir-1 dir-3

12、如何复制多个目录

$ cp -r -v dir-1 dir-3 dir-4

让我们使用以下命令将dir-1和dir-3目录复制到dir-4目录。

我们可以使用命令的-t选项来实现相同的结果。

$ cp -t dir-4 -r -v dir-1 dir-3

这样,我们常用的cp命令是用于复制文件和目录的,我们可以根据实例进行学习。

这里cp命令说明:

-a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。
-d:复制时保留链接。这里所说的链接相当于 Windows 系统中的快捷方式。
-f:覆盖已经存在的目标文件而不给出提示。
-i:与 -f 选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答 y 时目标文件将被覆盖。
-p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
-r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
-l:不复制文件,只是生成链接文件。