码迷,mamicode.com
首页 > 其他好文 > 详细

cp命令

时间:2015-07-21 18:54:22      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:linux   拷贝   cp   copy   


  1. 命令格式

    cp [OPTION]... [-T] SOURCE DEST

    cp [OPTION]... SOURCE... DIRECTORY

    cp [OPTION]... -t DIRECTORY SOURCE...

  2. 命令描述

    拷贝文件和目录

  3. 参数说明

    -a, --archive : 等同于-dR --preserve=all

    --backup[=CONTROL] :对每个现有文件进行备份 CONTROL为可选参数,其值为

         none, off:从不备份(即使给出 --backup)

         numbered, t:用编号备份

         existing, nil :如果编号备份存在则使用编号备份,否者用简易备份[译注:也就是用波浪号]

         simple, never :总是使用简易备份

    -b : 等同于--backup ,不带值

    -f 或 --force : 强行复制文件或目录, 不论目的文件或目录是否已经存在

    -i 或 --interactive : 覆盖文件之前先询问用户

    -l 或 --link : 对源文件建立硬链接,而非复制文件

    -p 或 --preserve : 保留源文件或目录的属性,包括所有者、所属组、权限与时间

    -P 或 --no-dereference : 从不继承源文件的符号链接* (这里我测试,cp一个符号链接文件后,新文件也是一个符号链接文件)

    -r : 递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理

    -R 或 --recursive : 递归处理,将指定目录下的文件及子目录一并处理

    -s 或 --symbolic-link :对源文件建立符号链接,而非复制文件

    -S <备份字尾字符串> 或 --suffix=<备份字尾字符串> : 用"-b"参数备份目的文件后,备份文件的字尾会被加上一个备份字符串。默认的备份字尾符串是符号"~"

    -u 或 --update : 使用这项参数之后,只会在源文件的修改时间(Modification Time)较目的文件更新时,或是名称相互对应的目的文件并不存在,才复制文件

    -v 或 --verbose : 显示执行过程

    --version : 显示版本

    -x 或 --one-file-system复制的文件或目录存放的文件系统,必须与cp指令执行时所处的文件系统相同,否则不复制,亦不处理位于其他分区的文件

    --help显示在线帮助

    --sparse=<使用时机>设置保存希疏文件的时机,可选参数
                 auto:源文件的稀疏性仅仅通过简单的方法判断,对应的目标文件目标文件也被为稀疏
                 always : 不论源文件是否包含足够长的0 序列也将目标文件创建为稀疏件。
                 never: 禁止创建稀疏文件。


  4. 示例

    1. -b的用法

      sly@fskj-u-sly:~/st$ ls 
      1.txt  2.txt
      sly@fskj-u-sly:~/st$ cp -b -S .bak 1.txt 2.txt 
      cp:是否覆盖"2.txt"? y
      sly@fskj-u-sly:~/st$ ls -l
      总用量 0
      -rw-rw-r-- 1 sly sly 0  7月 21 17:02 1.txt
      -rw-rw-r-- 1 sly sly 0  7月 21 17:36 2.txt
      -rw-rw-r-- 1 sly sly 0  7月 21 17:35 2.txt.bak
    2. 创建硬链接

      sly@fskj-u-sly:~/st$ cp -l 1.txt 2.txt 
      sly@fskj-u-sly:~/st$ ls -li    #这个参数i是查看inode号,可以看到,两个文件的inode一样
      总用量 0
      1834184 -rw-rw-r-- 2 sly sly 0  7月 21 17:02 1.txt
      1834184 -rw-rw-r-- 2 sly sly 0  7月 21 17:02 2.txt
    3. 创建符号链接

      sly@fskj-u-sly:~/st$ ln -s 1.txt 2.txt
      sly@fskj-u-sly:~/st$ ls -l
      总用量 0
      -rw-rw-r-- 1 sly sly 0  7月 21 17:02 1.txt
      lrwxrwxrwx 1 sly sly 5  7月 21 17:26 2.txt -> 1.txt
    4. 将一个目录的文件复制到另一个目录

      sly@fskj-u-sly:~$ cp -R st st2
      sly@fskj-u-sly:~$ ls -l st2/
      总用量 0
      -rw-rw-r-- 1 sly sly 0  7月 21 17:28 1.txt
      lrwxrwxrwx 1 sly sly 5  7月 21 17:28 2.txt -> 1.txt
      sly@fskj-u-sly:~$ ls -l st
      总用量 0
      -rw-rw-r-- 1 sly sly 0  7月 21 17:02 1.txt
      lrwxrwxrwx 1 sly sly 5  7月 21 17:26 2.txt -> 1.txt
    5. 如果目录已经存在不能使用上述方法

      sly@fskj-u-sly:~$ ls -ld st2 st/
      drwxrwxr-x 2 sly sly 4096  7月 21 17:26 st/
      drwxrwxr-x 2 sly sly 4096  7月 21 17:30 st2
      sly@fskj-u-sly:~$ cp -R st st2    
      sly@fskj-u-sly:~$ ls -l st2/    # 你会发现将整个目录拷贝过去了
      总用量 4
      drwxrwxr-x 2 sly sly 4096  7月 21 17:31 st
      sly@fskj-u-sly:~$ cp -R st/* st2
      sly@fskj-u-sly:~$ ls -l st2/
      总用量 0
      -rw-rw-r-- 1 sly sly 0  7月 21 17:33 1.txt
      lrwxrwxrwx 1 sly sly 5  7月 21 17:33 2.txt -> 1.txt
    6. 使用-p参数保留源文件的属性(这里使用sudo是为了有权限创建www-data用户的文件)

      sly@fskj-u-sly:~/st$ ls -l
      总用量 0
      -rw-rw-r-- 1 www-data www-data 0  7月 21 17:02 1.txt
      sly@fskj-u-sly:~/st$ date && sudo cp 1.txt 2.txt && sudo cp -p 1.txt 3.txt
      2015年 07月 21日 星期二 17:47:04 CST
      sly@fskj-u-sly:~/st$ ls -l     #可以看出,加了-p参数后,目标文件的权限和时间信息都没用修改
      总用量 0
      -rw-rw-r-- 1 www-data www-data 0  7月 21 17:02 1.txt
      -rw-r--r-- 1 root     root     0  7月 21 17:47 2.txt
      -rw-rw-r-- 1 www-data www-data 0  7月 21 17:02 3.txt


本文出自 “木木的博客” 博客,请务必保留此出处http://slyadm.blog.51cto.com/6223864/1676814

cp命令

标签:linux   拷贝   cp   copy   

原文地址:http://slyadm.blog.51cto.com/6223864/1676814

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!