cp/rcp/scp

cp 命令用来复制文件或者目录

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

命令格式:

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[=属性列表 保持指定的属性(默认:模式,所有权,时间戳),如果可能保持附加属性:环境、链接、attr 等
  • -R, -r, --recursive 复制目录及目录内的所有项目

命令实例:

1. 复制单个文件到目标目录,文件在目标文件中不存在

  • 命令:cp log.log test5

    在没有带-a 参数时,两个文件的时间是不一样的。在带了-a 参数时,两个文件的时间是一致的。

2. 目标文件存在时,会询问是否覆盖

  • 命令:cp log.log test5

    目标文件存在时,会询问是否覆盖。这是因为 cp 是 cp -i 的别名。目标文件存在时,即使加了-f 标志,也还会询问是否覆盖。

3. 复制整个目录

  • 命令:cp -a test3 test5

    注意目标目录存在与否结果是不一样的。目标目录存在时,整个源目录被复制到目标目录里面。

4. 复制的 log.log 建立一个连结档 log_link.log

  • 命令:cp -s log.log log_link.log

    那个 log_link.log 是由 -s 的参数造成的,建立的是一个『快捷方式』,所以您会看到在文件的最右边,会显示这个文件是『连结』到哪里去的!

rcp 命令用于复制远程文件或目录

rcp 指令用在远端复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到该目录中。

命令格式:

rcp [-pr][源文件或目录][目标文件或目录]

参数:

  • -p  保留源文件或目录的属性,包括拥有者,所属群组,权限与时间。
  • -r  递归处理,将指定目录下的文件与子目录一并处理。

实例

rcp [email protected]:./testfile testfile

scp 命令用于 Linux 之间复制文件和目录

scp 是 secure copy 的缩写, scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。

命令格式:

scp [可选参数] file_source file_target

参数:

  • -1: 强制 scp 命令使用协议 ssh1
  • -2: 强制 scp 命令使用协议 ssh2
  • -4: 强制 scp 命令只使用 IPv4 寻址
  • -6: 强制 scp 命令只使用 IPv6 寻址
  • -B: 使用批处理模式(传输过程中不询问传输口令或短语)
  • -C: 允许压缩。(将-C 标志传递给 ssh,从而打开压缩功能)
  • -p:保留原文件的修改时间,访问时间和访问权限。
  • -q: 不显示传输进度条。
  • -r: 递归复制整个目录。
  • -v:详细方式显示输出。scp 和 ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。
  • -c cipher: 以 cipher 将数据传输进行加密,这个选项将直接传递给 ssh。
  • -F ssh_config: 指定一个替代的 ssh 配置文件,此参数直接传递给 ssh。
  • -i identity_file: 从指定文件中读取传输时使用的密钥文件,此参数直接传递给 ssh。
  • -l limit: 限定用户所能使用的带宽,以 Kbit/s 为单位。
  • -o ssh_option: 如果习惯于使用 ssh_config(5)中的参数传递方式,
  • -P port:注意是大写的 P, port 是指定数据传输用到的端口号
  • -S program: 指定加密传输时所使用的程序。此程序必须能够理解 ssh(1)的选项。

实例

  1. 从本地复制到远程 scp local_file remote_username@remote_ip:remote_folder
  2. 从远程复制到本地 scp [email protected]:/root/aegis_install.sh .

results matching ""

    No results matching ""