每天进步一点点——linux——cp

来源:互联网 发布:淘宝买ipad可靠吗 编辑:程序博客网 时间:2024/04/27 21:57

            简介

cp命令用来复制文件或者目录,是Linux系统中最常用的命令之一。一般情况下,shell会设置一个别名,在命令行下复制文件时,如果目标文件已经存在,就会询问是否覆盖,不管你是否使用-i参数。但是如果是在shell脚本中执行cp时,没有-i参数时不会询问是否覆盖。

 

[root@Nagios ~]# alias

alias cp='cp -i'

            命令格式

cp [选项]... [-T]  目的

或:cp [选项]... ... 目录

或:cp [选项]... -t 目录 ...

            常用参数

-a, --archive                等于-dR--preserve=all

          --backup[=CONTROL        为每个已存在的目标文件创建备份

 -i,--interactive             覆盖前询问(使前面的 -n 选项失效)

 -l,--link                    链接文件而不复制

 -L,--dereference             总是跟随符号链接

 -n,--no-clobber              不要覆盖已存在的文件(使前面的 -i 选项失效)

 -R,-r, --recursive           递归复制目录及其子目录内的所有内容

 

            不常用参数

-a, --archive                等于-dR --preserve=all

     --backup[=CONTROL        为每个已存在的目标文件创建备份

 -b                           类似--backup但不接受参数

     --copy-contents          在递归处理是复制特殊文件内容

 -d                           等于--no-dereference--preserve=links

 -f,--force                   如果目标文件无法打开则将其移除并重试( -n 选项

                                       存在时则不需再选此项)

 -i,--interactive             覆盖前询问(使前面的 -n 选项失效)

 -H                           跟随源文件中的命令行符号链接

 -l,--link                    链接文件而不复制

 -L,--dereference             总是跟随符号链接

 -n,--no-clobber              不要覆盖已存在的文件(使前面的 -i 选项失效)

 -P,--no-dereference          不跟随源文件中的符号链接

 -p                           等于--preserve=模式,所有权,时间戳

     --preserve[=属性列表     保持指定的属性(默认:模式,所有权,时间戳),如果

                                       可能保持附加属性:环境、链接、xattr

 -c                          sameas --preserve=context

     --sno-preserve=属性列表  不保留指定的文件属性

     --parents                复制前在目标目录创建来源文件路径中的所有目录

 -R,-r, --recursive           递归复制目录及其子目录内的所有内容

     --reflink[=WHEN]         控制克隆/CoW副本。请查看下面的内如。

     --remove-destination     尝试打开目标文件前先删除已存在的目的地

                                       文件 (相对于 --force选项)

     --sparse=WHEN            控制创建稀疏文件的方式

     --strip-trailing-slashes 删除参数中所有源文件/目录末端的斜杠

 -s,--symbolic-link           只创建符号链接而不复制文件

 -S,--suffix=后缀            自行指定备份文件的后缀

 -t, --target-directory=目录 将所有参数指定的源文件/目录

                                          复制至目标目录

 -T,--no-target-directory     将目标目录视作普通文件

 -u,--update                 copy only whenthe SOURCE file is newer

                                than thedestination file or when the

                                destination file is missing

 -v,--verbose                explain what isbeing done

 -x,--one-file-system        stay on thisfile system

 -Z,--context=CONTEXT        set securitycontext of copy to CONTEXT

     --help           显示此帮助信息并退出

     --version        显示版本信息并退出

            示例

5.1     复制单个文件到目录,文件目标不存在

[bzfys@Nagiost1]$ tree

.

├── t2

├── t3

??└── t2

└── t4
[bzfys@Nagios t1]$ cp t4 ./t3/

[bzfys@Nagiost1]$ tree

.

├── t2

├── t3

??├── t2

??└── t4

└── t4

5.1     复制单个文件到目录,文件目标存在,加-a与不加-a区别

[root@Nagiost1]# ll

总用量 8

drwxrwxr-x 2 bzfys bzfys 4096 6 18 09:16 t2

drwxrwxr-x 3 bzfys bzfys 4096 6 18 09:18 t3

-rw-rw-r-- 1 bzfys bzfys   0 6 18 09:17 t4

[root@Nagiost1]# cp t4 t3/

cp:是否覆盖"t3/t4" y

[root@Nagiost1]# ll t3/

总用量 4

drwxrwxr-x 2 bzfys bzfys 4096 6 18 09:16 t2

-rw-rw-r-- 1 bzfys bzfys   0 6 18 09:22 t4

[root@Nagiost1]# cp -p t4 t3/

cp:是否覆盖"t3/t4" y

[root@Nagiost1]# ll t3/

总用量 4

drwxrwxr-x 2 bzfys bzfys 4096 6 18 09:16 t2

-rw-rw-r-- 1 bzfys bzfys   0 6 18 09:17 t4

不难看出,如果有-p参数拷贝的文件时间戳等属性也不会变

5.2  复制目录

[root@Nagiost1]# cp t3 t5

cp:略过目录"t3"

[root@Nagiost1]# cp -a t3 t5

[root@Nagiost1]# tree

.

├── t2

├── t3

??├── t2

??└── t4

├── t4

└── t5

   ├── t2

   └── t4

 

5 directories, 3 files

可以看出如果要复制目录需要-a或者-r参数(-r参数后面演示)

5.3     复制一个目录到另一个目录

[root@Nagiost1]# cp t3 t6/

cp:略过目录"t3

[root@Nagiost1]# cp -r t3 t6

[root@Nagiost1]# tree

.

├── t2

├── t3

??├── t2

??└── t4

├── t4

├── t5

??├── t2

??└── t4

└── t6

   └── t3

       ├── t2

       └── t4

 

8 directories, 4 files

[root@Nagiost1]# cp -r t3/ t6/

cp:是否覆盖"t6/t3/t4" y

[root@Nagiost1]# tree

.

├── t2

├── t3

??├── t2

??└── t4

├── t4

├── t5

??├── t2

??└── t4

└── t6

   └── t3

       ├── t2

       └── t

我们可以看出,加不加/最后的结果是一样的

 

            参考资料

http://vbird.dic.ksu.edu.tw/

http://gnu.org/licenses/gpl.html

man手册


0 0
原创粉丝点击