服务器之家:专注于服务器技术及软件下载分享
分类导航

Linux|Centos|Ubuntu|系统进程|Fedora|注册表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服务器之家 - 服务器系统 - Linux - Linux系统中用于复制的cp和scp命令使用解析

Linux系统中用于复制的cp和scp命令使用解析

2019-06-27 13:5351yip张映 Linux

这篇文章主要介绍了Linux系统中用于复制的cp和scp命令使用解析,其中scp命令主要用于远程传输时的本地和服务器间的文件拷贝,需要的朋友可以参考下

cp命令
用法:cp [选项]... [-T] 源文件 目标文件
 或:cp [选项]... 源文件... 目录
 或:cp [选项]... -t 目录 源文件...
将源文件复制至目标文件,或将多个源文件复制至目标目录。


长选项必须使用的参数对于短选项时也是必需使用的。
  -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                           same as --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 when the SOURCE file is newer
                                 than the destination file or when the
                                 destination file is missing
  -v, --verbose                explain what is being done
  -x, --one-file-system        stay on this file system
  -Z, --context=CONTEXT        set security context of copy to CONTEXT
      --help  显示此帮助信息并退出
      --version  显示版本信息并退出


默认情况下,源文件的稀疏性仅仅通过简单的方法判断,对应的目标文件目标文件也
被为稀疏。这是因为默认情况下使用了--sparse=auto 参数。如果明确使用
--sparse=always 参数则不论源文件是否包含足够长的0 序列也将目标文件创文
建为稀疏件。
使用--sparse=never 参数禁止创建稀疏文件。


当指定了--reflink[=always] 参数时执行轻量化的复制,即只在数据块被修改的
情况下才复制。如果复制失败或者同时指定了--reflink=auto,则返回标准复制模式。


备份文件的后缀为"~",除非以--suffix 选项或是SIMPLE_BACKUP_SUFFIX
环境变量指定。版本控制的方式可通过--backup 选项或VERSION_CONTROL 环境
变量来选择。以下是可用的变量值:


  none, off       不进行备份(即使使用了--backup 选项)
  numbered, t     备份文件加上数字进行排序
  existing, nil   若有数字的备份文件已经存在则使用数字,否则使用普通方式备份
  simple, never   永远使用普通方式备份


有一个特别情况:如果同时指定--force 和--backup 选项,而源文件和目标文件
是同一个已存在的一般文件的话,cp 会将源文件备份。

例:

 

复制代码
代码如下:

[root@localhost www]# cp -p test.rb /home/test #将test.rb copy到test目录,并且保留原文件的属性
[root@localhost www]# cp -r Dir/ /home/test #将Dir目录copy到test目录下
[root@localhost www]# cp -fr Dir/* /home/test #将Dir下面的所有文件强制copy到test目录下
[root@localhost www]# cp test.rb{,.bak} #备份test.rb,并在尾部加上.bak后缀

 



scp命令
SCP 命令语法
scp [-1245BCpqrv] [-c cipher] [F ssh_config] [-I identity_file] [-l limit] [-o ssh_option] [-P port] [-S program] [[user@]host1:] file1 […] [[suer@]host2:]file2

SCP 命令说明
Scp在主机间复制文件。他使用 ssh(1)作为数据传输。而且用同样认证和安全性。 scp将在认证中请求输入密码所有的文件可能需要服务器和用户的特别描述来指明文件将被复制到/从某台服务器。两个远程登录的服务器间的文件复制是允许的。

SCP 命令选项

-1 强制scp 用协议1

-2 强制scp 用协议2

-4 强制scp用IPV4的网址

-6 强制scp用IPV6的网址

-B 选择批处理模式(防止输入密码)

-C 允许压缩。 标注-C到ssh(1)来允许压缩

-c cipher选择cipher来加密数据传输。这个选项直接传递到ssh(1)

-F ssh_config设定一个可变动的用户配置给ssh.这个选项直接会被传递到ssh(1)

-i identity_file选择被RSA认证读取私有密码的文件。这个选项可以直接被传递到ssh(1)

-l limit限制传输带宽,也就是速度 用Kbit/s的速度

-o ssh_option 可以把ssh_config中的配置格式传到ssh中。这种模式对于说明没有独立的scp文件中断符的scp很有帮助。关于选项的如下。而他们的值请参看ssh_config(5)

-P port 指定连接远程连接端口。注意这个选项需要写成大写的模式。因为-p已经早保留了次数和模式

-S program  指定一个加密程序。这个程序必须可读所有ssh(1)的选项。

-p 指定修改次数,连接次数,还有对于原文件的模式

-q 把进度参数关掉

-r 递归的复制整个文件夹

-S program  指定一个加密程序。这个程序必须可读所有ssh(1)的选项。

-V   冗余模式。 让 scp 和 ssh(1) 打印他们的排错信息, 这个在排错连接,认证,和配置中非常有用。

例:
 

复制代码
代码如下:

[root@localhost www]# scp -r tank@192.16.1.108:/var/www/blog /home/www/blog #以tank用户登录并将服务器文件夹copy到本地
[root@localhost www]# scp /home/www/blog/index.php 192.16.1.108:/var/www/blog #将本地文件copy到服务器,添填写用户,默认当前用户

 

使用指定端口从本地拷到远程服务器
 

复制代码
代码如下:

[root@localhost test]# scp -P 20022 -r ../vhost/ zhuqiang@192.168.0.200:/home/test/ 

延伸 · 阅读

精彩推荐
  • Linux手把手教您在 Linux 上使用 GPG 加解密文件

    手把手教您在 Linux 上使用 GPG 加解密文件

    在本教程中,我将告诉你如何用 GPG 加密和解密文件。这是一个简单的教程,你可以在你的 Linux 系统上尝试所有的练习。这将帮助你练习 GPG 命令,并在你...

    Linux中国6962021-12-15
  • LinuxLinux常用的日志文件和常用命令

    Linux常用的日志文件和常用命令

    成功地管理任何系统的关键之一,是要知道系统中正在发生什么事。 Linux 中提供了异常日志,并且日志的细节是可配置的。Linux 日志都以明文形式存储,所...

    Linux教程网2632020-04-18
  • LinuxLinux lnmp下无法使用mail发邮件的两种解决方法

    Linux lnmp下无法使用mail发邮件的两种解决方法

    在配置了lnmp环境后,出现了mail函数不能发送邮件的问题,其实有两种方法,一是使用sendmail组件,而是使用postfix。下面为大家一一介绍下 ...

    Linux之家4042019-09-17
  • Linuxlinux中rmdir命令使用详解(删除空目录)

    linux中rmdir命令使用详解(删除空目录)

    今天学习一下linux中命令: rmdir命令。rmdir是常用的命令,该命令的功能是删除空目录,一个目录被删除之前必须是空的 ...

    linux命令大全5372019-11-19
  • Linux详解Linux系统下PXE服务器的部署过程

    详解Linux系统下PXE服务器的部署过程

    这篇文章主要介绍了Linux系统下PXE服务器的部署过程,包括对PXE的API架构作了一个基本的简介,需要的朋友可以参考下...

    运维之道9812019-07-04
  • LinuxLinux中环境变量配置的步骤详解

    Linux中环境变量配置的步骤详解

    Linux中环境变量包括系统级和用户级,系统级的环境变量是每个登录到系统的用户都要读取的系统变量,而用户级的环境变量则是该用户使用系统时加载的...

    Myths7882022-02-10
  • Linux确保Linux系统安全的前提条件 漏洞防护

    确保Linux系统安全的前提条件 漏洞防护

    Linux 作为开放式的操作系统受到很多程序员的喜爱,很多高级程序员都喜欢编写Linux操作系统的相关软件。这使得Linux操作系统有着丰富的软件支持,还有无...

    Linux之家2642020-04-11
  • LinuxLinux上设置用户通过SFTP访问目录的权限的方法

    Linux上设置用户通过SFTP访问目录的权限的方法

    这篇文章主要介绍了Linux上设置用户通过SFTP访问目录的权限的方法,SFTP可以理解为使用SSH协议进行FTP传输的协议,因而同时要对OpenSSH进行相关设置,需要的朋...

    OSChina10022019-06-19