复制文件或目录;
命令格式 -
命令功能 - 将源文件复制至目标文件,或将多个源文件复制至目标目录;
命令参数 -
-a :为每个已存在的目标文件创建备份。即新文件与已存在的文件完全一样,保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合;
-b:类似 —backup 但不接收参数,在递归处理时复制特殊文件的内容;
-d :复制时保留链接。这里所说的链接相当于Windows里的快捷方式;
-f :覆盖已经存在的目标文件而不给出提示;
-i :与 -f 相反,覆盖目标文件之前给出提示;
-l :对源文件建立 硬链接 ,不复制文件,只是生成链接文件;
-p :除复制文件的内容外,还把修改时间和访问权限也复制到新文件中;
-R,-r :若给出的源文件是一个目录文件,此时也将复制该目录下所有的子目录和文件;
-s :对源文件建立 符号链接 ,而非复制文件;
关于 硬链接 和 符号链接 的区别:
命令实例 -
实例一:复制单个文件到目标目录,文件在目标文件中不存在
命令
xxxxxxxxxx11cp log1.log dir2输出
xxxxxxxxxx101Qs-MacBook-Pro:dir1 qiu$ ls -R2dir2 log1.log34./dir2:5Qs-MacBook-Pro:dir1 qiu$ cp log1.log dir26Qs-MacBook-Pro:dir1 qiu$ ls -R7dir2 log1.log89./dir2:10log1.log说明
没有带 -a 参数时,两个文件的时间是不一样的。在带了 -a 参数时,两个文件的时间是一致的;
实例二:目标文件存在时,会询问是否覆盖
命令
xxxxxxxxxx11cp -i log1.log dir2输出
xxxxxxxxxx181Qs-MacBook-Pro:dir1 qiu$ ls -lR2total 83drwxr-xr-x 4 qiu staff 128 4 10 11:47 dir24-rw-r--r--@ 1 qiu staff 9 4 10 10:03 log1.log56./dir2:7total 88-rw-r--r--@ 1 qiu staff 9 4 10 11:50 log1.log9Qs-MacBook-Pro:dir1 qiu$ cp -i log1.log dir210overwrite dir2/log1.log? (y/n [n]) y11Qs-MacBook-Pro:dir1 qiu$ ls -lR12total 813drwxr-xr-x 4 qiu staff 128 4 10 11:47 dir214-rw-r--r--@ 1 qiu staff 9 4 10 10:03 log1.log1516./dir2:17total 818-rw-r--r--@ 1 qiu staff 9 4 10 11:52 log1.log说明
实例三:复制整个目录
命令
xxxxxxxxxx21cp -a dir1 dir22cp -a dir1 dir3输出
xxxxxxxxxx311// 目标目录存在时2Qs-MacBook-Pro:dir1 qiu$ ls -lR3total 04drwxr-xr-x 4 qiu staff 128 4 10 11:47 dir15drwxr-xr-x 4 qiu staff 128 4 10 11:54 dir267./dir1:8total 89-rw-r--r--@ 1 qiu staff 9 4 10 11:52 log1.log1011./dir2:12total 813-rw-r--r--@ 1 qiu staff 9 4 10 11:52 log2.log14Qs-MacBook-Pro:dir1 qiu$ cp -a dir1 dir215Qs-MacBook-Pro:dir1 qiu$ ls -lR16total 017drwxr-xr-x 4 qiu staff 128 4 10 11:47 dir118drwxr-xr-x 5 qiu staff 160 4 10 11:57 dir21920./dir1:21total 822-rw-r--r--@ 1 qiu staff 9 4 10 11:52 log1.log2324./dir2:25total 826drwxr-xr-x 4 qiu staff 128 4 10 11:47 dir127-rw-r--r--@ 1 qiu staff 9 4 10 11:52 log2.log2829./dir2/dir1:30total 831-rw-r--r--@ 1 qiu staff 9 4 10 11:52 log1.logxxxxxxxxxx311// 目标目录不存在时2Qs-MacBook-Pro:dir1 qiu$ ls -lR3total 04drwxr-xr-x 4 qiu staff 128 4 10 11:47 dir15drwxr-xr-x 4 qiu staff 128 4 10 12:00 dir267./dir1:8total 89-rw-r--r--@ 1 qiu staff 9 4 10 11:52 log1.log1011./dir2:12total 813-rw-r--r--@ 1 qiu staff 9 4 10 11:52 log2.log14Qs-MacBook-Pro:dir1 qiu$ cp -a dir1 dir315Qs-MacBook-Pro:dir1 qiu$ ls -lR16total 017drwxr-xr-x 4 qiu staff 128 4 10 11:47 dir118drwxr-xr-x 4 qiu staff 128 4 10 12:00 dir219drwxr-xr-x 4 qiu staff 128 4 10 11:47 dir32021./dir1:22total 823-rw-r--r--@ 1 qiu staff 9 4 10 11:52 log1.log2425./dir2:26total 827-rw-r--r--@ 1 qiu staff 9 4 10 11:52 log2.log2829./dir3:30total 831-rw-r--r--@ 1 qiu staff 9 4 10 11:52 log1.log说明
目标目录存在时,复制源目录到目标目录 里面;
目标目录不存在时,创建新目录;
实例四:复制 log.log 建立一个 链接档 log_link.log
命令
xxxxxxxxxx11cp -s log.log log_link.log输出
xxxxxxxxxx91// Mac_Terminal 下该方法无效,-s 参数无效2[root@localhost test]# cp -s log.log log_link.log3[root@localhost test]# ll4lrwxrwxrwx 1 root root 7 10-28 15:18 log_link.log -> log.log5-rw-r--r-- 1 root root 0 10-28 14:48 log.log6drwxr-xr-x 6 root root 4096 10-27 01:58 scf7drwxrwxrwx 2 root root 4096 10-28 14:47 test38drwxrwxrwx 2 root root 4096 10-28 14:47 test49drwxr-xr-x 3 root root 4096 10-28 15:11 test5说明
那个 log_link.log 是由 -s 参数生成的,建立的是一个 "快捷方式" ,所以在文件的最右边,会显示这个文件是 "链接" 到哪去的!