复制文件和目录是在使用命令行时最常见的任务之一。在Linux,有两个命令用于复制文件cp和rsync,但cp命令比rsync更受欢迎。
使用cp
命令复制文件,rsync
命令用于复制目录,是这两个命令一种常见的做法。为了能够复制文件和目录,您必须具有对源文件的读取权限和对目标目录的写入权限。
在本教程中,我们向您展示如何使用cp
命令和rsync
命令在Linux和基于Unix的系统复制文件和目录。
cp 命令复制文件
在Linux和Unix操作系统,cp
命令可用于复制文件和目录。最简单的用例是复制当前工作目录中的文件。
默认情况下如果目标文件存在,它将被覆盖。如需要提示确认信息。可以使用cp
命令的-i
选项,cp
命令将会询问你是否覆盖目标文件。
使用cp
命令复制文件时,新文件将由运行cp
命令的用户所有。使用-p
选项可保留文件权限模式,包括所有权和时间戳等。
如果你需要查看复制的文件进度,可以使用cp命令的-v
选项。使用此时选项,命令将打印正在执行的操作,这可以算是一个进度。
你也可以在cp
命令是使用多个选项,cp
命令将会整合多个选项功能。例如命令cp -ipv file.txt ~/
将会复制当前目录file.txt文件到家目录。
cp file.txt file_backup.txt
cp -i file.txt file_backup.txt
cp -p file.txt file_backup.txt
cp -v file.txt file_backup.txt
cp 命令复制文件到指定目录/文件夹
要将文件复制到另一个目录,您需要指定目标目录的绝对路径或相对路径。仅将目录作为目标时,复制的文件将与原始文件具有相同的名称。
如果在复制文件时要改变原始文件的名称,则需要指定目标文件名称。例如命令cp file.txt /backup/new_file.txt
将会复制文件file.txt
到/backup
目录。
cp file.txt /backup
cp file.txt /backup/new_file.txt
cp 命令复制多个文件
要一次复制多个文件和目录,请指定源文件和目录的名称,然后将目标目录作为最后一个参数。
复制多个文件时,目标必须是目录。cp
命令还允许您使用模式匹配,类似于正则表达式的方式复制文件。
例如命令cp *.png /backup
将会把当前目录的png文件复制到/backup
目录。
cp file.txt dir file1.txt file2.txt dir1
cp *.png /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
rsync 命令复制文件和目录/文件夹
rsync
是一种快速且通用的命令,可在两个目录之间同步文件和目录。也可以在本地与远程计算机之间进行复制。
rsync
包含许多控制其行为的选项。其中最常用的选项是-a
,递归复制目录,传输特殊设备文件和块设备文件,保留符号链接,修改时间,组,权限。
在使用rsync
命令复制文件与目录时,如果目标文件已存在,它将被覆盖。在复制目录时,如果在源目录添加尾部斜杠,它仅将源目录的内容复制到目标目录。
省略尾部斜杠时,rsync
命令将复制源目录到目标目录。最好的选择是始终在目标和源目录包含尾部斜杠/
。
命令rsync -a file.txt file_backup.txt
将file.txt文件复制到file_backup.txt。
rsync -a file.txt file_backup.txt
rsync -a /var/www/public_html/ /var/www/public_html_backup/ #在复制目录建议始终使用尾部/
结论
在本教程中,我们向您展示如何使用cp
和rsync
命令在Linux和基于Unix的系统中复制文件和目录。如果您有任何疑问,请在下面留言。