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