linux:cp

功能:拷贝文件或目录

说明:一般用来将一个文件或者目录复制到指定文件或者目录。它可以将单个源文件复制成一个指定文件名的文件,或者一个已经存在的目录下。也可支持同时复制多个文件,当复制多个文件时。目标参数必须是一个已经存在的目录,否则出错。

选项:

        -a:archive 此参数效果和同事指定“-doR”参数相同

        -b:backup 删除、覆盖目的文件先备份,备份的文件或者目录亦建立为符号连接,并指向源文件或者目录链接的源文件或目录。假如没有加上这个参数,在复制过程中若遇到符号连接,则会直接复制原文件或目录。

        -f:interactive 覆盖文件之前询问

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

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

        -P:parents 保留源文件或目录的路径,此路径可以是绝对路径或者相对路径,且目的目录必须已经存在

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

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

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

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

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

        -v:verbose 显示执行过程

        -V <备份方式>:version-control=<备份方式>指定当备份文件时,备份文件名的命名方式有三种:

                    1:numbered或 t 将使用备份编号,会在字尾加上~1~字符串,其数字编号依次递增

                    2:simp或 never 将使用简单备份,默认的备份字尾字符串~,也可通过-S来制定

                    3:existing或 nil 将使用当前方式,程序会先检查是否存在着备份编号,若有则采用备份编号,若无则采用简单备份

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

        --help 显示在线帮助

        --spatse=<使用机时> 设置保存稀疏声文件的机时

        -version:显示版本


示例

  1. -b的用法

    1
    2
    3
    4
    5
    6
    7
    8
    9
    sly@fskj-u-sly:~/stls 
    1.txt  2.txt
    sly@fskj-u-sly:~/stcp -b -S .bak 1.txt 2.txt 
    cp:是否覆盖"2.txt"? y
    sly@fskj-u-sly:~/stls -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. 创建硬链接

    1
    2
    3
    4
    5
    sly@fskj-u-sly:~/stcp -l 1.txt 2.txt 
    sly@fskj-u-sly:~/stls -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. 创建符号链接

    1
    2
    3
    4
    5
    sly@fskj-u-sly:~/stln -s 1.txt 2.txt
    sly@fskj-u-sly:~/stls -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. 将一个目录的文件复制到另一个目录

    1
    2
    3
    4
    5
    6
    7
    8
    9
    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. 如果目录已经存在不能使用上述方法

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    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用户的文件)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    sly@fskj-u-sly:~/stls -l
    总用量 0
    -rw-rw-r-- 1 www-data www-data 0  7月 21 17:02 1.txt
    sly@fskj-u-sly:~/stdate && sudo cp 1.txt 2.txt && sudo cp -p 1.txt 3.txt
    2015年 07月 21日 星期二 17:47:04 CST
    sly@fskj-u-sly:~/stls -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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值