linux常用命令—拷贝(cp\scp)

时间:2022-12-10 14:04:00

cp命令

1、文件的所有特性都一起复制过来(-a)

[root@loadhost home]# ll
drwxr-xr-x 3 mr users 4096 11月 2 15:40 test
[root@loadhost home]# cd test/
[root@loadhost test]# ll
drwxr-xr-x 2 mr users 4096 11月 2 16:47 111
[root@loadhost test]# cd 111
[root@loadhost 111]# ll
-rw-r--r-- 1 mr users 0 11月 2 16:47 222

[root@loadhost home]# cp -r /home/test test1      #/home/test下的东西拷到/home/test1里面
[root@loadhost home]# ll
drwxr-xr-x 3 mr users 4096 11月 2 15:40 test
drwxr-xr-x 3 root root 4096 11月 2 15:44 test1
[root@loadhost home]# cd test1
[root@loadhost test1]# ll #文件考过来了,但是文件的用户、群组、时间都变了

[root@loadhost home]# cp -ar /home/test test2
[root@loadhost home]# ll
drwxr-xr-x 3 mr users 4096 11月 2 15:40 test
drwxr-xr-x 3 root root 4096 11月 2 15:44 test1
drwxr-xr-x 3 mr users 4096 11月 2 15:40 test2
[root@loadhost home]# cd test2
[root@loadhost test2]# ll
drwxr-xr-x 2 mr users 4096 11月 2 15:40 111 #文件的用户、群组、创建时间都没变

2、递归复制(-r)

[root@loadhost home]# cp /home/test/111 test3
cp: 略过目录"/home/test/111" #111是一个目录,需要递归复制
[root@loadhost home]# cp -r /home/test/111 test3 #递归拷贝,拷贝过去也是一个文件夹

[root@loadhost home]# cp /home/test/111/222 test4   #222是一个文件,不需要递归
[root@loadhost home]# ll
drwxr-xr-x 3 mr users 4096 11月 2 15:40 test
drwxr-xr-x 3 root root 4096 11月 2 15:44 test1
drwxr-xr-x 3 mr users 4096 11月 2 15:40 test2
-rw-r--r-- 1 root root 0 11月 2 16:59 test4 #拷贝过来是一个文件

3、目的文件(目录)存在(-i/-f)

[root@loadhost home]# cp -a /home/test/111 test3
cp: 无法以目录"/home/test/111" 来覆盖非目录"test3" #源是目录,目的是文件,不可复制

[root@loadhost home]# cp  -a /home/test/111/222 test1     #源是文件,目的是目录,直接拷贝到目录下
[root@loadhost home]# cd test1
[root@loadhost test1]# ll
drwxr-xr-x 2 root root 4096 11月 2 15:44 111
-rw-r--r-- 1 mr users 0 11月 2 16:47 222

[root@loadhost home]# cp -ar /home/test/  test1   #源和目的都是目录,可拷贝,拷贝前询问是否覆盖
cp:是否覆盖"test1/test/111/222"? yes
[root@loadhost home]# cp -ari /home/test/ test1
cp:是否覆盖"test1/test/111/222"? yes

[root@loadhost home]# cp -arf /home/test/111  test1 #拷贝前不询问,直接覆盖

[root@loadhost home]# cp -ai /home/test/111/222 test4   #源和目的都是文件,可拷贝,拷贝前询问是否覆盖
cp:是否覆盖"test4"? yes

scp 命令

1、scp是用于主机间的文件拷贝(主机能ping通)

2、当目的主机的目录下已存在,会覆盖拷贝


命令格式:scp  user@host:source file   user@host:target file

1、本机到远程主机(user@host:source file中,可以只写本机文件路径)

scp -r /home/1102   root@10.9.233.21:/home


2、远程主机1到本机(user@host:target file中,可以只写本机文件路径)

scp -r  root@10.9.233.21:/home/1103   /home


3、远程主机1到远程主机2

scp -r  root@10.9.233.21:/home/1103   root@10.9.233.22:/home