复制文件和目录cp
- cp [OPTION]…[-T] SOURCE DEST
- cp [OPTION]…SOURCE…DIRECTORY
- cp [OPTION]…-t DIRECTORY SOURCE…
- cp SRC DEST
SRC是文件:
如果目标不存在:新建DEST,并将SRC中内容填充至DEST中
如果目标存在:
如果DEST是文件:将SRC中的内容覆盖至DEST中
基于安全,建议为cp命令使用-i选项
如果DEST是目录:在DEST下新建与原文件同名的文件,并将SRC中内容填充至新文件中
源\目标 | 不存在 | 存在且为文件 | 存在且为目录 |
---|---|---|---|
一个文件 | 新建DEST,并将SRC中内容填充至DEST中 | 将SRC中的内容覆盖至DEST中 注意数据丢失风险!建议用-i选项 |
在DEST下新建与原文件同名的文件,并将SRC中内容填充至新文件中 |
多个文件 | 提示错误 | 提示错误 | 在DEST下新建与原文件同名的文件,并将原文件内容复制进新文件中 |
目录 须使用-r选项 |
创建指定DEST同名目录,复制SRC目录中所有文件至DEST下 | 提示错误 | 在DEST下新建与原目录同名的目录,并将SRC中内容复制至新目录中 |
- cp SRC…DEST
SRC…:多个文件
DEST必须存在,且为目录,其他情况均会出错
- cp SRC DEST
SRC是目录:此时使用选项: -r
如果DEST不存在:则创建指定目录,复制SRC目录中所有文件至DEST中
如果DEST存在:
如果DEST是文件:报错
如果DEST是目录:在DEST下新建与原目录同名的目录,并将SRC中内容复制至新目录中
- OPTION选项:
- -i:覆盖前提示 -n:不覆盖,注意两者顺序
- -r,-R:递归复制目录及内部的所有内容
- -a:归档,相当于-dR —preserv=all
- -d: —no-dereference —preserv=links 不复制原文件,只复制链接名
- —preserv[=ATTR_LIST]
mode:权限
ownership:属主属组
timestamp:
links
xattr
context
all
- -p:等同—preserv=mode,ownership,timestamp
- -v:—verbose
- -f:—force
- -u:—update 只复制源比目标更新的文件或目标不存在的文件
- -b:目标存在,覆盖前先备份
- —backup=numbered 目标存在,覆盖前先备份加数字后缀
cp f0 file1 —backup 在覆盖前将file1做备份
cp -r /etc/sysconfig/ /data/ -r 可以复制文件夹-i 覆盖前提示
-d 保留它的连接属性(复制软链接文件 还是软连接)
-v verbose 显示详细的过程
-f force 强制,先删除源文件在复制
-a —archive 归档
-p 等同于 保留 属性,所有者,时间
练习
1、定义别名命令bacetc,每天将/etc/目录下所有文件,备份到/data独立的子目录下,并要求子目录格式为backupYYYY-mm-dd,备份过程可见
alias baketc=’cp -av /etc/ /data/backupdate +%F
‘
2、创建/data/rootdir/目录,并复制/root下所有文件到该目录内,要求保留原有
cp -rp /root/ /data/rootdir
移动和重命名文件
- mv [OPTION]… [-T] SOURCE DEST
- mv [OPTION]…SOURCE… DIRECTORY
- mv [OPTION]…-t DIRECTORY SOURCE…
常见选项:
-i:交互式
-f:强制
-b:目标存在,覆盖前先备份
删除
- rm [OPTION]… FILE…
- 常见选项:
-i 交互式
-f 强制删除
-r 递归
- 示例:
rm -rf /*
尽量用mv代替rm
执行此命令 rm file
相当于执行mv file /data/
alias rm=’mv -t /data’