Linux复制目录文件常用cp与rsync命令,基础操作中,cp -r 源目录 目标目录可递归复制整个目录,-p参数保留文件属性;rsync -av 源目录/ 目标目录/支持增量同步,适合大文件或远程传输,能保留权限、时间戳等,常见场景包括:系统备份(如cp -r /home/docs /backup/)、数据迁移(rsync -av /local/ /remote/)、配置同步(cp -r /etc/nginx/ /tmp/config/),需注意源目录末尾斜杠会复制内容而非目录本身,操作前建议确认路径准确性。
在Linux系统中,复制文件或目录是最常见的操作之一,无论是备份重要数据、迁移文件到其他位置,还是整理文件结构,掌握高效的复制方法都能提升工作效率,本文将详细介绍如何使用Linux命令将一个目录下的文件复制到另一个目录,涵盖基础命令、常用参数、常见场景及注意事项,帮助读者快速上手并灵活应对不同需求。
基础命令:cp——Linux复制的核心工具
cp(copy)是Linux系统中用于复制文件或目录的基本命令,其核心语法结构为:
cp [选项] 源文件/目录 目标路径
源文件/目录是要复制的文件或文件夹,目标路径是文件复制后存放的位置。

复制单个文件到目标目录
假设当前目录下有一个文件test.txt,需要将其复制到/home/user/docs目录下,命令为:
cp test.txt /home/user/docs
执行后,test.txt会被完整复制到/home/user/docs目录中,原文件保持不变。
复制目录下的所有文件到目标目录
若需要将当前目录下的所有文件(不包括子目录)复制到目标目录,可以使用通配符:
cp * /home/user/docs
注意:会匹配当前目录下的所有文件和目录,如果目标路径下已存在同名文件,cp默认会覆盖(需结合-i选项避免意外覆盖,后文会详述)。
关键选项:让复制更灵活、更安全
cp命令支持多种选项,通过组合选项可以实现更复杂的复制需求,如保留权限、递归复制、显示进度等,以下是常用选项的详解:
-r或-R:递归复制目录(核心选项)
如果要复制的源是一个目录,必须使用-r(递归)或-R选项,否则会报错“cp: omitting directory ‘dir1’”,将dir1目录及其所有子目录、文件复制到/home/user/backup:
cp -r dir1 /home/user/backup
执行后,/home/user/backup下会生成一个dir1目录,包含原目录的所有内容。
-p:保留文件属性
复制文件时,默认会丢失原文件的权限、时间戳(修改时间、访问时间)、所有者等信息,使用-p选项可保留这些属性:
cp -p test.txt /home/user/docs
适用于需要保持文件原始属性的场景,如系统配置文件的备份。
-a:归档模式(终极备份选项)
-a选项相当于-dpR的组合(-d:复制符号链接本身而非指向的文件;-p:保留属性;-R:递归复制),是目录备份的最佳选择:
cp -a dir1 /home/user/backup/dir1_backup
它会完整保留目录的结构、权限、所有者、时间戳等,适合系统迁移或重要目录的完整备份。
-v:显示复制过程
默认情况下,cp命令静默执行,不显示复制进度,使用-v(verbose)可实时显示复制的文件列表,便于确认操作是否成功:
cp -v *.txt /home/user/docs
输出示例:
'test1.txt' -> '/home/user/docs/test1.txt' 'test2.txt' -> '/home/user/docs/test2.txt'
-i:覆盖前提示(避免数据丢失)
如果目标路径已存在同名文件,cp默认会直接覆盖,使用-i(interactive)选项可在覆盖前提示用户确认:
cp -i test.txt /home/user/docs
若/home/user/docs/test.txt已存在,会提示:
cp: overwrite '/home/user/docs/test.txt'? y/n
输入y确认覆盖,n取消,适合新手或重要文件操作,避免误覆盖。
--exclude:排除特定文件
在复制目录时,若需排除某些文件(如临时文件、日志文件),可使用--exclude选项,复制dir1目录时排除所有.log文件:
cp -r --exclude='*.log' dir1 /home/user

