在Linux/Unix工作,复制文件和目录是您每天最常见任务之一。cp是用于在Unix/Linux系统复制文件和目录的命令行。

在本教程中,我们将解释如何在Linux使用cp命令复制文件与文件夹。cp命令的语法形式是cp [OPTIONS] SOURCE... DESTINATION

其中SOURCE是源文件,可以指定一个或多个文件或目录/文件夹作为源,DESTINATION目标可以是文件或目录。

当源和目标参数都是文件时,cp命令将源文件复制到目标文件。如果文件不存在,cp命令将会创建它。

当源由多个文件或目录作为参数时,目标参数必须是目录。在这种情况下,源文件和目录将移至目标目录。

当源和目标参数都是目录时,cp命令会将源目录复制到目标目录。

要复制文件和目录,您必须对源文件具有读取权限和对目标目录的写入权限。否则,您将收到一个Permission denied权限拒绝的错误。

cp 命令复制文件

cp命令在复制文件与目录时不会保留文件的权限,所有权和时间戳,而是归运行cp命令的用户所有。要保留原始权限,所有权和时间戳请指定-p选项。

要将文件复制到另一个目录,请指定目标目录的绝对或相对路径。复制的文件将与原始文件名称相同。

默认情况下,如果目标文件存在,它将被覆盖。如果要使用其他名称复制文件,则需在目标参数指定文件名。

如果你不想覆盖文件,可以使用cp命令的-n选项或者-i选项。-n选项会自动跳过复制,而-i选项则询问你是否重写文件cp: overwrite 'file1'。

cp命令还有一个非常好用的功能,那就是仅当复制的文件比目标文件更新时才复制。如需要使用此功能,请指定cp命令的-u选项。

使用cp命令最常见的案例备份文件。例如命令cp file{,_backup}复制file.txt件到file_backup.txt

cp -rfviu file.txt /backup

cp 命令复制目录/文件夹

如需要复制目录,包括其所有文件和子目录,请使用cp命令的-r选项,r是recursive首字母。

如果目标目录不存在,cp将创建一个新的目标目录,并递归地将所有文件和子目录从源目录复制到目标目录。

如果目标目录已存在,则源目录本身及其子目录的所有内容将复制到目标目录。如果你只需要复制文件和子目录,而不复目录本省,请组合使用cp命令的-T选项。

当然在复制目录时,你也可以使用复制文件时使用的选项。例如-iprv选项等。cp命令的-r选项是递归复制文件与目录时必须使用的选项。

在以下示例中,将目录Pictures复制到Pictures_backup

cp -R Pictures Pictures_backup
cp -RT Pictures Pictures_backup

cp 命令复制多个文件和目录/文件夹

要一次复制多个文件和目录,请指定其名称,并使用目录作为目标参数。多个文件时,目标参数必须是目录。

cp file.txt dir file1.txt  dir1

结论

使用该cp命令复制文件和目录是一个简单的任务。有关所有可用cp选项的信息,请man cp在终端中输入。如果要通过网络复制文件,请检查rsyncscp命令。