在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
在终端中输入。如果要通过网络复制文件,请检查rsync
和scp
命令。