Linux中cp与scp的区别和使用方法

一、cp复制文件与文件夹

1、功能介绍:将一个文件复制至另一个文件,或将数个文件复制至另一目录。 
2、语法格式:
  cp [options] source dest 
  cp [options] source... directory 
3、常用参数说明:
  -a 尽可能将档案状态、权限等资料都照原状予以复制。 
  -r source 中含有目录名,则将目录下之档案亦皆依序拷贝至目的地。 
  -f 若目的地已经有相同档名的档案存在,则在复制前先予以删除再行复制。
指令使用实例:
1.将文件aaa 复制(已存在),并命名为bbb: 
 #cp aaa bbb 


2.

将所有的 C 语言程序拷贝至 Finished 子目录中
 # cp *.c Finished


3.
复制指定目录的文件到当前目录,并重命名

 # cp ~/.bashrc bashrc_bak

 

4. 强制复制指定目录的文件到当前目录,而不管当前目录是否含有该文件

#cp -f ~/.bashrc bashrc

 

5. 复制指定目录到当前目录

# cp -r /root/test .

#cp -r /root/test/ .

 两者效果一样,在复制目录时,会将源路径的最后一级目录全部复制过去,包括它本身。

 

6. 复制指定目录的文件到指定目录

#cp ~/.bashrc /bak/.bashrc

 

7. 在复制时将源文件的全部属性也复制过来。若不指定参数,则目标文件与源文件属性可能不一致。

#cp -a ~/.bashrc /bak/.bashrc

 

8. 若两个文件夹要保证同步,一个文件的改了,另一个文件也跟着改,但是要保证两个文件的文件都是最新的。

#cp -u /src/.bashrc /bak_src/bashrc

 

二、cp和scp命令的使用方法

1、说明:

        Linux为我们提供了两个用于文件copy的命令,一个是cp,一个是scp,但是他们略有不同,cp 主要是用于在同一台电脑上,在不同的目录之间来回copy文件 scp 主要是在不同的Linux系统之间来回copy文件

    Linux为我们提供了两个用于文件copy的命令,一个是cp,一个是scp,但是他们略有不同。

cp -- 主要是用于在同一台电脑上,在不同的目录之间来回copy文件 

scp  --  主要是在不同的Linux系统之间来回copy文件 

2、关于cp的具体用法: 
1.命令基本格式: 

cp [OPTIONS] SOURCE DEST --- 从源路径copy文件到目的路径 
cp [OPTIONS] SOURCE... DIRECTORY ---
将多个源文件copy到指定的目录(多个源文件用空格分隔) 

 OPTIONS 

-a same as -dpR 尽可能将源文件状态、权限等资料都照原装予以复制,并且是递归copy 
-r
表示递归copy,若source中含有目录名,则将目录下之档案亦皆依序拷贝至目的地; 
-f
表示force,若目的地已经有相同档名的档案存在,则在复制前先予以删除再行复制; 


3、范例: 

1. 将档案 aaa 复制(已存在),并命名为 bbb 
cp aaa bbb 
2.
将所有的C语言程式拷贝至 Finished 子目录中: 
cp *.c Finished/ 

4、关于scp的具体用法: 

不同的Linux之间copy文件常用有3种方法:

第一种就是 ftp ,也就是其中一台 Linux 安装 ftp Server ,这样可以在另外一台机器使用 ftp client 程序来进行文件的 copy

 
第二种方法就是采用samba服务,类似Windows文件copy 的方式来操作,比较简洁方便。 

第三种就是利用 scp 命令来进行文件复制。  

scp
是有 Security 的文件 copy ,基于 ssh 登录。  

命令基本格式:  
scp [OPTIONS] file_source file_target 
OPTIONS
 
-v
和大多数 linux 命令中的 -v 意思一样 , 用来显示进度 . 可以用来查看连接、认证、 或是配置错误  
-C
使能压缩选项  
-P
选择端口 . 注意 -p 已经被 rcp 使用  

本地 复制到 远程  
scp /home/daisy/full.tar.gz root@172.19.2.75:/home/root
(然后会提示你输入另外那台 172.19.2.75 主机的 root 用户的登录密码,接着就开始 copy 了),复制目录加参数 -r 即可  

远程 复制到 本地  
scp root@/172.19.2.75:/home/root/full.tar.gz /home/daisy/full.tar.gz
以下是补充:
命令: cp 
使用权限:所有使用者  

使用方式:  
cp [options] source dest 

cp [options] source... directory 

说明:将一个档案拷贝至另一档案,或将数个档案拷贝至另一目录。  

-a 尽可能将档案状态、权限等资料都照原状予以复制。  

-r
source 中含有目录名,则将目录下之档案亦皆依序拷贝至目的地。  

-f
若目的地已经有相同档名的档案存在,则在复制前先予以删除再行复制。  

范例:  

将档案 aaa 复制 ( 已存在 ) ,并命名为 bbb : 

cp aaa bbb 

将所有的 C 语言程式拷贝至 Finished 子目录中

cp *.c Finished 

命令: scp 

不同的 Linux 之间 copy 文件常用有 3 种方法:  

第一种就是 ftp ,也就是其中一台 Linux 安装 ftp Server ,这样可以另外一台使用 ftp client 程序来进行文件的 copy  

第二种方法就是采用 samba 服务,类似 Windows 文件 copy 的方式来操作,比较简洁方便。  

第三种就是利用 scp 命令来进行文件复制。  

scp
是有 Security 的文件 copy ,基于 ssh 登录。操作起来比较方便,比如要把当前一个文件 copy 到远程另外一台主机上,可以如下命令。  

scp /home/daisy/full.tar.gz root@172.19.2.75:/home/root 

然后会提示你输入另外那台 172.19.2.75 主机的 root 用户的登录密码,接着就开始 copy 了。  

如果想反过来操作,把文件从远程主机 copy 到当前系统,也很简单。  


172.19.2.75:/home/root/full.tar.gz home/daisy/full.tar.gz 

linux
scp 命令 可以 linux 之间复制 文件 目录;  

scp
命令  

scp
可以在 2 linux 主机间复制文件;  

命令基本格式:  
scp [
可选参数 ] file_source file_target 

本地 复制到 远程  

*
复制文件:  
*
命令格式:  
scp local_file remote_username@remote_ip:remote_folder 
或者  
scp local_file remote_username@remote_ip:remote_file 
或者  
scp local_file remote_ip:remote_folder 
或者  
scp local_file remote_ip:remote_file 

1,2 个指定了用户名,命令执行后需要再输入密码,第 1 个仅指定了远程的目录,文件名字不变,第 2 个指定了文件名;  
3,4 个没有指定用户名,命令执行后需要输入用户名和密码,第 3 个仅指定了远程的目录,文件名字不变,第 4 个指定了文件名;  
*
例子:  
scp /home/1.txt root@xnnet.blog.51cto.com:/home/root/ 
scp /home/1.txt root@xnnet.blog.51cto.com:/home/root/001.txt
scp /home/1.txt xnnet.blog.51cto.com:/home/root/
scp /home/1.txt xnnet.blog.51cto.com:/home/root/001.txt


*
复制目录: 
*
命令格式: 
scp -r local_folder remote_username@remote_ip:remote_folder 
或者 
scp -r local_folder remote_ip:remote_folder 
1个指定了用户名,命令执行后需要再输入密码; 
2个没有指定用户名,命令执行后需要输入用户名和密码; 
*
例子: 
scp -r /home/txt/  root@xnnet.blog.51cto.com:/home/root
scp -r /home/txt/  xnnet.blog.51cto.com:/home/root/
上面命令本地 music 目录复制远程 others 目录下,即复制后有远程 ../others/music/ 目录 
远程复制到本地 


远程复制到本地,只要将本地复制到远程的命令2个参数调换顺序即可; 

例如: 
scp xnnet.blog.51cto.com:/home/root/1.txt /home/1.txt/
scp -r  xnnet.blog.51cto.com:/home/root/txt /home/txt

最简单的应用如下
scp
本地用户名 @IP 地址 : 文件名 1 远程用户名 @IP 地址 : 文件名

[
本地用户名 @IP 地址 :] 可以不输入 , 可能需要输入远程用户名所对应的密码
可能有用的几个参数
-v
和大多数 linux 命令中的 -v 意思一样 , 用来显示进度 . 可以用来查看连接 , 认证 , 或是配置错误
-C
使能压缩选项
-P
选择端口 . 注意 -p 已经被 rcp 使用
-4
强行使用 IPV4 地址
-6
强行使用 IPV6 地址