cp
命令用于复制文件或目录。
基本语法:cp [选项] 源文件 目标文件
。“源文件”是要复制的文件或目录的路径和名称,“目标文件”是目标位置的路径和名称。
常用参数:
-r
(或-R
):递归复制整个目录及其子目录和文件。cp -r dir1/ dir2/
将dir1目录及其所有内容复制到dir2目录下。
-p
:保留文件原有属性,包括权限、所有者、时间戳等,如cp -p file1.txt file2.txt
。
-f
:强制复制,不询问是否覆盖目标文件,比如cp -f file1.txt file2.txt
,即使file2.txt已存在也会被覆盖。
-i
:提示用户确认是否覆盖已存在的目标文件,执行cp -i file1.txt file2.txt
时,若file2.txt存在,会提示用户确认是否覆盖。
-u
:仅在源文件比目标文件新或目标文件不存在时才执行复制操作,例如cp -u file1.txt file2.txt
。
-v
:显示详细的复制过程,包括正在复制的文件名等信息,如cp -v file1.txt file2.txt
。
复制文件:cp file1.txt file2.txt
将file1.txt复制并重命名为file2.txt,如果file2.txt已存在则覆盖。
复制目录:cp -r dir1/ dir2/
把dir1目录及其所有内容复制到dir2目录下,若dir2已存在则在目标目录中创建新的dir1子目录。
复制多个文件到同一目录:cp file1.txt file2.txt /path/to/directory/
将file1.txt和file2.txt复制到指定目录/path/to/directory/下。
复制目录下的所有文件到另一目录:cp -r dir1/* dir2/
可把dir1目录下的所有文件和子目录复制到dir2目录下,保持目录结构。
问题1:如何在复制文件时保留其符号链接属性?
答案:使用-P
参数(大写P),如cp -P source_link target_location
,会保留源文件的符号链接属性。
问题2:怎样只复制更新的文件?
答案:可以使用-u
参数,它只会在源文件比目标文件新或者目标文件不存在时才执行复制操作。
问题3:如何复制文件到远程服务器?
答案:需要使用scp或rsync命令,scp命令的用法为scp [参数] 源文件 用户名@目标服务器IP:/路径
,例如scp file.txt user@remote-server:/home/user/
;rsync命令更强大,支持增量同步,语法是rsync -avz source user@host:path
,如rsync -avz /local/path/ user@remote-server:/destination/path/
。