linux cp命令参数及用法详解
- 格式:docx
- 大小:16.30 KB
- 文档页数:3
cp 高级用法CP(Copy)是Linux系统中的一个非常常用的命令,用于复制文件或目录。
除了基本的复制命令外,CP 还有很多高级用法,可以帮助用户更加高效地管理文件。
1. 复制目录及其内容如果要复制一个目录及其内容,可以使用 -r 参数。
例如,要将当前目录下的 data 目录复制到 /tmp 目录下,可以使用以下命令: cp -r data /tmp-r 参数表示递归复制,能够复制目录及其所有子目录和文件。
2. 保留原文件权限和时间戳有时候,我们需要在复制文件时保留原文件的权限和时间戳。
可以使用 -p 参数。
例如,要将当前目录下的 file1 复制到 /tmp 目录下,并保留原文件的权限和时间戳,可以使用以下命令:cp -p file1 /tmp-p 参数表示保留原文件的权限和时间戳。
3. 强制覆盖已存在的文件默认情况下,如果目标文件已经存在,CP 命令会提示用户是否覆盖。
如果要强制覆盖已存在的文件,可以使用 -f 参数。
例如,要将当前目录下的 file1 复制到 /tmp 目录下,并强制覆盖已存在的文件,可以使用以下命令:cp -f file1 /tmp-f 参数表示强制覆盖已存在的文件。
4. 交互式复制有时候,我们需要在复制文件时进行交互式操作,例如询问用户是否要覆盖已存在的文件。
可以使用 -i 参数。
例如,要将当前目录下的 file1 复制到 /tmp 目录下,并在覆盖已存在的文件时进行交互式操作,可以使用以下命令:cp -i file1 /tmp-i 参数表示交互式复制。
5. 复制多个文件如果要复制多个文件,可以在命令中列出所有要复制的文件。
例如,要将当前目录下的 file1 和 file2 复制到 /tmp 目录下,可以使用以下命令:cp file1 file2 /tmp6. 复制文件到其他目录如果要将文件复制到其他目录,可以在命令中指定目标目录。
例如,要将当前目录下的 file1 复制到 /home/user 目录下,可以使用以下命令:cp file1 /home/user7. 复制文件到另一个文件如果要将一个文件复制到另一个文件,可以在命令中指定目标文件名。
cp命令的用法举例cp命令是Linux系统中的常用命令,用于复制文件和目录。
它有多个选项和参数,可以用于不同的复制场景。
下面将介绍cp命令的用法举例,帮助您更好地掌握其使用技巧。
一、基本用法cp命令的基本语法如下:cp[选项]源文件目标文件其中,源文件是要复制的文件或目录,目标文件是复制后的文件将保存的位置。
例如,要复制名为example.txt的文本文件到当前目录下的backup文件夹中,可以使用以下命令:cpexample.txtbackup/二、常用选项和参数1.-i:在复制过程中进行增量式备份,即在目标文件已经存在的情况下,仅在最后添加一个时间戳后缀,而不是覆盖目标文件。
2.-b:在复制过程中为已存在的目标文件生成一个备份文件,并附带一个数字后缀(如backup1.txt),而不是覆盖目标文件。
3.-f:强制覆盖目标文件,不提示任何信息。
4.-r(或-recursive):递归复制目录和子目录中的文件。
5.-u:在复制过程中检测已存在的目标文件和源文件之间的差异,并在差异存在时提示警告信息。
三、用法举例1.复制单个文件假设有一个名为example.txt的文本文件需要复制到目标位置。
可以使用以下命令:cpexample.txt目标位置/2.递归复制目录和子目录中的文件如果要递归复制一个目录及其子目录中的所有文件,可以使用以下命令:cp-r源目录目标位置/3.增量式备份假设有一个名为oldfile.txt的文件需要备份到新位置,可以使用以下命令:cp-ibackup/oldfile.txt该命令会在backup文件夹中生成一个带有时间戳的后缀的备份文件oldfile(2).txt。
4.覆盖目标文件如果要强制覆盖目标文件,可以使用-f选项:cp-fexample.txt新位置/example.txt或cp-fexample.txt/new_location/example.txt5.检测差异并提示警告信息如果要检测已存在的目标文件和源文件之间的差异,并在差异存在时提示警告信息,可以使用-u选项:cp-uexample.txt新位置/或cp-usource_directory/*新位置/或cp-usource_directory/*target_directory/*(递归)该命令会在差异存在时显示警告信息。
linux 命令cp参数Linux命令是一种用于在Linux操作系统中执行各种任务的命令行工具。
cp命令是Linux中常用的一个命令,用于复制文件和目录。
它的语法如下:cp [选项]源文件目标目录/文件下面是cp命令支持的一些常用选项:-r或-R:递归复制,用于复制目录及其内容。
-a:复制文件时保留源文件的各种属性,包括所有者、组、权限和时间信息。
-f:强制复制,不给出提示。
-i:当目标文件已经存在时,提示用户是否覆盖目标文件。
-n:当目标文件已经存在时,不进行覆盖。
-u:仅在源文件比目标文件新或目标文件不存在时才进行复制。
-v:显示详细的复制过程。
这些选项可以根据需要进行组合使用。
下面是一些使用cp命令的示例:1.复制文件:cp file1.txt file2.txt这个命令将文件file1.txt复制到file2.txt。
2.复制目录:cp -r dir1/ dir2/这个命令将目录dir1及其所有内容复制到目录dir2。
3.复制目录并保留属性:cp -a dir1/ dir2/这个命令将目录dir1及其所有内容复制到目录dir2,并保留所有者、组、权限和时间信息。
4.强制复制:cp -f file1.txt file2.txt这个命令将文件file1.txt强制复制到file2.txt,如果file2.txt已经存在,则覆盖。
5.递归复制并显示详细信息:cp -rv dir1/ dir2/这个命令将目录dir1及其所有内容递归地复制到目录dir2,并显示复制的详细过程。
6.只复制新文件:cp -u file1.txt file2.txt这个命令将文件file1.txt复制到file2.txt,但只有当file1.txt比file2.txt新或file2.txt不存在时才进行复制。
总结:cp命令是Linux中常用的一个命令,可用于复制文件和目录。
通过使用不同的选项,可以进行递归复制、保留属性、强制复制、只复制新文件等不同的操作。
linux cp命令参数及用法详解cp (复制档案或目录)[root@linux ~]# cp [-adfilprsu] 来源档(source) 目的档(destination)[root@linux ~]# cp [options] source1 source2 source3 …. directory参数:a :相当于-pdr 的意思;d :若来源文件为连结文件的属性(link file),则复制连结文件属性而非档案本身;-f :为强制(force) 的意思,若有重复或其它疑问时,不会询问使用者,而强制复制;-i :若目的档(destination)已经存在时,在覆盖时会先询问是否真的动作!-l :进行硬式连结(hard link) 的连结档建立,而非复制档案本身;p :连同档案的属性一起复制过去,而非使用预设属性;r :递归持续复制,用于目录的复制行为;s :复制成为符号连结文件(symbolic link),亦即『快捷方式』档案;u :若destination 比source 旧才更新destination !最后需要注意的,如果来源档有两个以上,则最后一个目的文件一定要是『目录』才行!范例:范例一:将家目录下的 .bashrc 复制到/tmp 下,并更名为bashrc[root@linux ~]# cd /tmp[root@linux tmp]# cp ~/.bashrc bashrc[root@linux tmp]# cp -i ~/.bashrc bashrc: overwrite `basrhc’? n# 重复作两次动作,由于/tmp 底下已经存在bashrc 了,加上-i 参数,# 则在覆盖前会询问使用者是否确定!可以按下n 或者y 呢!# 但是,反过来说,如果不想要询问时,则加上-f 这个参数来强制直接覆盖!范例二:将/var/log/wtmp 复制到/tmp 底下[root@linux tmp]# cp /var/log/wtmp . <==想要复制到目前的目录,最后的 . 不要忘[root@linux tmp]# ls -l /var/log/wtmp wtmprw-rw-r–1 root utmp 71808 Jul 18 12:46 /var/log/wtmprw-r–r–1 root root 71808 Jul 18 21:58 wtmp# 注意到了吗?!在不加任何参数的情况下,档案的所属者会改变,连权限也跟着改变了~# 这是个很重要的特性!要注意喔!还有,连档案建立的时间也不一样了!#如果您想要将档案的所有特性都一起复制过来,可以加上-a 喔![root@linux tmp]# cp -a /var/log/wtmp wtmp_2[root@linux tmp]# ls -l /var/log/wtmp wtmp_2rw-rw-r–1 root utmp 71808 Jul 18 12:46 /var/log/wtmprw-rw-r–1 root utmp 71808 Jul 18 12:46 wtmp_2# 了了吧!整个资料特性完全一模一样ㄟ!真是不赖~这就是-a 的特性!范例三:复制/etc/ 这个目录下的所有内容到/tmp 底下[root@linux tmp]# cp /etc/ /tmp: omitting directory `/etc’<== 如果是目录,不能直接复制,要加上-r 的参数[root@linux tmp]# cp -r /etc/ /tmp# 还是要再次的强调喔!-r 是可以复制目录,但是,档案与目录的权限会被改变~#所以,也可以利用cp -a /etc /tmp 来下达指令喔!范例四:将范例一复制的bashrc 建立一个连结档(symbolic link) [root@linux tmp]# ls -l bashrcrw-r–r–1 root root 395 Jul 18 22:08 bashrc[root@linux tmp]# cp -s bashrc bashrc_slink[root@linux tmp]# cp -l bashrc bashrc_hlink[root@linux tmp]# ls -l bashrc*rw-r–r–2 root root 395 Jul 18 22:08 bashrcrw-r–r–2 root root 395 Jul 18 22:08 bashrc_hlink1 root root 6 Jul 18 22:31 bashrc_slink -> bashrc# 那个bashrc_slink 是由-s 的参数造成的,建立的是一个『快捷方式』,# 所以您会看到在档案的最右边,会显示这个档案是『连结』到哪里去的!# 至于那个bashrc_hlink 有趣了!建立了这个档案之后,bashrc 与bashrc_hlink# 所有的参数都一样,只是,第二栏的link 数改变成为2 了~而不是原本的1 喔!# 这两种连结的方式的异同,我们会在下一章里面进行介绍的!范例五:若~/.bashrc 比/tmp/bashrc 新才复制过来[root@linux tmp]# cp -u ~/.bashrc /tmp/bashrc# 这个-u 的特性,是在目标档案与来源档案有差异时,才会复制的。
linuxcp命令使用方法LinuxCP 是 Linux 中的一种端口转发工具,用于在不同的操作系统之间传输数据格式或虚拟机环境。
可以将使用不同语言开发的程序的输出通过该程序完成在不同的操作系统之间的跨操作系统通信。
LinuxCP 可以实现在Linux 主机上访问另外一些操作系统,例如Windows Serve系统 (IIS) 、Unix 系统等,不需要特殊软件设置,可以自动做好配置,使用起来更加方便。
LinuxCP 命令是一款针对 Linux 系统的命令行工具,用于连接多台机器并实现端口转发。
使用 LinuxCP 命令可以实现远程控制服务器,远程控制多台服务器,实现本地与远程机器之间的端口转发等功能。
一、查看LinuxCP 命令帮助信息LinuxCP 有详细的帮助信息可以查看,其使用格式如下:linuxcp --help其中可以看到 linuxcp 命令各个参数的使用说明,例如:--daemon 用于守护进程模式启动--list 显示当前正在运行的LinuxCP 进程--verbose 用于显示 linuxcp 命令的执行日志二、LinuxCP 服务器的启动linuxcp [--daemon] bindaddress bindport其中 bindaddress 代表 linuxcp 服务器监听的 ip 地址,bindport 代表 linuxcp 服务器监听的端口;--daemon 参数也可以不使用,这种情况下 linuxc服务器只能在前台运行,启动方式如下:linuxcp 127.0.0.1 3000其中 bindaddress 和 bindport 是服务器的 ip 地址和监听的端口,remoteaddress 和 remoteport 是要连接的客户端的 ip 地址和远程端口;上述命令表示将 linuxcp 服务器的 3000 端口转发到客户端 192.168.0.1 的 3300 端口,如果终端不支持端口转发,则可以使用 LinuxCP 命令实现本地端口转发。
cp的用法CP的用法CP是Linux中一个非常常用的命令,它的作用是将一个文件或目录从一个位置复制到另一个位置。
在本文中,我们将详细介绍CP命令的用法。
一、基本语法CP命令的基本语法如下:cp [选项] 源文件目标文件其中,源文件表示要复制的文件或目录,目标文件表示复制后生成的新文件或目录。
二、选项说明1. -r或-R:递归复制整个目录。
如果源文件是一个目录,则必须使用该选项才能将其复制到目标位置。
2. -i:交互式操作。
如果目标文件已经存在,则提示用户是否覆盖原有文件。
3. -f:强制覆盖已存在的目标文件,不进行询问。
4. -u:只复制源文件中比目标文件更新的部分。
5. -v:显示详细信息,包括正在复制哪些文件和已经完成了哪些操作等信息。
6. --preserve=[属性]:保留指定属性。
例如,--preserve=mode可以保留源文件的权限模式。
三、实例演示1. 复制单个文件要将单个文件从一个位置复制到另一个位置,请使用以下命令:cp file1 /home/user/这将把file1从当前工作目录复制到/home/user/目录下。
如果目标文件已经存在,则会覆盖原有文件。
2. 复制多个文件要将多个文件从一个位置复制到另一个位置,请使用以下命令:cp file1 file2 file3 /home/user/这将把file1、file2和file3从当前工作目录复制到/home/user/目录下。
3. 复制整个目录要将整个目录从一个位置复制到另一个位置,请使用以下命令:cp -r dir1 /home/user/这将把dir1目录及其所有子目录和文件从当前工作目录复制到/home/user/目录下。
4. 交互式操作如果您希望在复制时进行交互式操作,请使用-i选项。
例如,以下命令将提示您是否覆盖已存在的文件:cp -i file1 /home/user/5. 强制覆盖如果您希望强制覆盖已存在的文件而不进行询问,请使用-f选项。
linux中cp命令的常见用法摘要:一、cp命令简介二、cp命令的基本用法1.复制单个文件2.复制多个文件3.复制文件夹三、cp命令的选项与参数1.选项-r或--recursive2.选项-i或--interactive3.选项-v或--verbose4.选项-u或--update5.参数源文件或目录与目标文件或目录四、cp命令的实例应用1.复制文件夹及子文件夹2.复制文件并覆盖3.复制文件并显示详细信息4.复制文件并更新文件正文:在Linux系统中,cp命令是一个非常常用的命令,用于复制文件或文件夹。
下面将详细介绍cp命令的常见用法。
一、cp命令简介cp命令全称是“copy”,用于在Linux系统中复制文件或文件夹。
它有丰富的选项和参数,可以根据不同的需求进行各种复制操作。
二、cp命令的基本用法1.复制单个文件使用cp命令复制单个文件非常简单,只需在命令行中输入:```cp 源文件目标文件```其中,源文件和目标文件分别表示要复制的文件及其路径。
例如,要将文件“example.txt”复制到“/home/user/Documents”目录下,可以执行:```cp /home/user/Downloads/example.txt /home/user/Documents/ ```2.复制多个文件要复制多个文件,可以在cp命令后添加多个源文件或目录,用空格隔开。
例如:```cp 源文件1 源文件2 目标文件```3.复制文件夹复制文件夹的命令格式为:```cp -r 源文件或目录目标文件或目录```这里的-r选项表示递归复制,即复制文件夹及其子文件夹。
例如,要将“/home/user/Downloads”文件夹复制到“/home/user/Backup”目录下,可以执行:```cp -r /home/user/Downloads /home/user/Backup/```三、cp命令的选项与参数1.选项-r或--recursive该选项表示递归复制,用于复制文件夹及其子文件夹。
Linux系统复制文件夹命令cp使用详解Linux系统中复制文件夹要怎么做呢?下面由店铺为大家整理了Linux系统复制文件夹命令cp使用详解,希望对大家有帮助!Linux系统复制文件夹命令cp使用详解指令名称:cp(copy)功能介绍:将一个文件复制至另一个文件,或将数个文件复制至另一目录。
语法格式:cp [options] source destcp [options] source... directory常用参数说明:-a 尽可能将档案状态、权限等资料都照原状予以复制。
-r 若 source 中含有目录名,则将目录下之档案亦皆依序拷贝至目的地。
-f 若目的地已经有相同档名的档案存在,则在复制前先予以删除再行复制。
Linux复制文件夹命令cp使用实例1.将文件aaa 复制(已存在),并命名为bbb:cp aaa bbb2.将所有的C语言程序拷贝至 Finished 子目录中 :cp *.c Finished3. 复制指定目录的文件到当前目录,并重命名[root@rehat root]# cp ~/.bashrc bashrc_bak4. 强制复制指定目录的文件到当前目录,而不管当前目录是否含有该文件[root@rehat root]# cp -f ~/.bashrc bashrc5. 复制指定目录到当前目录[root@rehat root]# cp -r /root/test .[root@rehat root]# cp -r /root/test/ .两者效果一样,在复制目录时,会将源路径的最后一级目录全部复制过去,包括它本身。
6. 复制指定目录的文件到指定目录[root@rehat root]# cp ~/.bashrc /bak/.bashrc7. 在复制时将源文件的全部属性也复制过来。
若不指定参数,则目标文件与源文件属性可能不一致。
[root@rehat root]# cp -a ~/.bashrc /bak/.bashrc8. 若两个文件夹要保证同步,一个文件的改了,另一个文件也跟着改,但是要保证两个文件的文件都是最新的。
cp命令的使用cp命令是Linux系统中常用的一个命令,用于复制文件或目录。
下面将以cp命令的使用为主题,详细介绍其功能和常见用法。
一、cp命令的基本用法cp命令的基本语法为:cp [选项] 源文件目标文件(或目录)其中,选项为可选项,源文件为要复制的文件或目录,目标文件为复制后的文件或目录。
1. 复制文件要复制一个文件,只需要在命令中指定源文件和目标文件的路径即可。
例如,要将当前目录下的file1复制到tmp目录下,可以使用以下命令:cp file1 /tmp2. 复制目录要复制一个目录及其所有内容,可以使用-r或-R选项。
例如,要将当前目录下的dir目录复制到tmp目录下,可以使用以下命令:cp -r dir /tmp二、cp命令的常用选项除了基本用法外,cp命令还提供了一些选项,用于实现更多的功能。
1. -i选项当目标文件已存在时,会提示用户是否覆盖。
例如,要将file1复制到/tmp目录下,如果/tmp目录下已存在同名文件file1,则会提示是否覆盖。
2. -v选项显示详细的复制信息,包括源文件和目标文件的路径。
例如,使用cp -v file1 /tmp命令复制文件时,会显示出复制的详细过程。
3. -u选项只复制源文件中比目标文件新或不存在的文件。
如果目标文件已存在且比源文件新,则不会复制。
这对于更新文件非常有用。
4. -p选项保留源文件的属性,包括所有者、组、权限和时间戳等。
例如,使用cp -p file1 /tmp命令复制文件时,复制后的文件将保留源文件的属性。
5. -l选项创建硬链接而不是复制文件。
硬链接是指多个文件共享同一块物理存储空间,对其中一个文件的修改会影响其他文件。
使用此选项可以节省存储空间。
三、cp命令的常见用法除了基本用法和选项外,cp命令还有一些常见用法,用于满足不同的需求。
1. 复制多个文件要复制多个文件,只需要在命令中指定多个源文件和一个目标目录即可。
例如,要将file1、file2和file3复制到/tmp目录下,可以使用以下命令:cp file1 file2 file3 /tmp2. 复制文件到另一个文件名要将源文件复制到一个不同的文件名,可以在目标文件的路径中指定新的文件名。
Linux系统怎么使用cp命令cp 主要是用于在同一台电脑上,在不同的目录之间来回copy文件,那么Linux系统怎么使用cp命令呢?接下来大家跟着店铺一起来了解一下Linux系统使用cp命令的解决方法吧。
Linux系统使用cp命令方法关于cp的具体用法:命令基本格式:cp [OPTIONS] SOURCE DEST --- 从源路径copy文件到目的路径cp [OPTIONS] SOURCE... DIRECTORY --- 将多个源文件copy到指定的目录(多个源文件用空格分隔)OPTIONS:-a same as -dpR 尽可能将源文件状态、权限等资料都照原装予以复制,并且是递归copy;-r 表示递归copy,若source中含有目录名,则将目录下之档案亦皆依序拷贝至目的地;-f 表示force,若目的地已经有相同档名的档案存在,则在复制前先予以删除再行复制;范例:1. 将档案 aaa 复制(已存在),并命名为 bbb:cp aaa bbb2. 将所有的C语言程式拷贝至 Finished 子目录中:cp *.c Finished/关于scp的具体用法:不同的Linux之间copy文件常用有3种方法:第一种就是ftp,也就是其中一台Linux安装ftp Server,这样可以在另外一台机器使用ftp的client程序来进行文件的copy。
第二种方法就是采用samba服务,类似Windows文件copy 的方式来操作,比较简洁方便。
第三种就是利用scp命令来进行文件复制。
scp是有Security的文件copy,基于ssh登录。
命令基本格式:scp [OPTIONS] file_source file_targetOPTIONS:-v 和大多数 linux 命令中的 -v 意思一样 , 用来显示进度 . 可以用来查看连接、认证、或是配置错误-C 使能压缩选项-P 选择端口 . 注意 -p 已经被 rcp 使用从本地复制到远程scp/home/daisy/**********************.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 destcp [options] source... directory说明:将一个档案拷贝至另一档案,或将数个档案拷贝至另一目录。
cp (复制档案或目录)
[root@linux ~]# cp [-adfilprsu] 来源档(source) 目的档(destination)
[root@linux ~]# cp [options] source1 source2 source3 …. directory
参数:
-a :相当于-pdr 的意思;
-d :若来源文件为连结文件的属性(link file),则复制连结文件属性而非档案本身;
-f :为强制(force) 的意思,若有重复或其它疑问时,不会询问使用者,而强制复制;
-i :若目的档(destination)已经存在时,在覆盖时会先询问是否真的动作!
-l :进行硬式连结(hard link) 的连结档建立,而非复制档案本身;
-p :连同档案的属性一起复制过去,而非使用预设属性;
-r :递归持续复制,用于目录的复制行为;
-s :复制成为符号连结文件(symbolic link),亦即『快捷方式』档案;
-u :若destination 比source 旧才更新destination !
最后需要注意的,如果来源档有两个以上,则最后一个目的文件一定要是『目录』才行!
范例:
范例一:将家目录下的.bashrc 复制到/tmp 下,并更名为bashrc
[root@linux ~]# cd /tmp
[root@linux tmp]# cp ~/.bashrc bashrc
[root@linux tmp]# cp -i ~/.bashrc bashrc
cp: overwrite `basrhc’? n
# 重复作两次动作,由于/tmp 底下已经存在bashrc 了,加上-i 参数,
# 则在覆盖前会询问使用者是否确定!可以按下n 或者y 呢!
# 但是,反过来说,如果不想要询问时,则加上-f 这个参数来强制直接覆盖!
范例二:将/var/log/wtmp 复制到/tmp 底下
[root@linux tmp]# cp /var/log/wtmp . <==想要复制到目前的目录,最后的. 不要忘
[root@linux tmp]# ls -l /var/log/wtmp wtmp
-rw-rw-r– 1 root utmp 71808 Jul 18 12:46 /var/log/wtmp
-rw-r–r– 1 root root 71808 Jul 18 21:58 wtmp
# 注意到了吗?!在不加任何参数的情况下,档案的所属者会改变,连权限也跟着改变了~# 这是个很重要的特性!要注意喔!还有,连档案建立的时间也不一样了!
# 如果您想要将档案的所有特性都一起复制过来,可以加上-a 喔!
[root@linux tmp]# cp -a /var/log/wtmp wtmp_2
[root@linux tmp]# ls -l /var/log/wtmp wtmp_2
-rw-rw-r– 1 root utmp 71808 Jul 18 12:46 /var/log/wtmp
-rw-rw-r– 1 root utmp 71808 Jul 18 12:46 wtmp_2
# 了了吧!整个资料特性完全一模一样ㄟ!真是不赖~这就是-a 的特性!
范例三:复制/etc/ 这个目录下的所有内容到/tmp 底下
[root@linux tmp]# cp /etc/ /tmp
cp: omitting directory `/etc’<== 如果是目录,不能直接复制,要加上-r 的参数
[root@linux tmp]# cp -r /etc/ /tmp
# 还是要再次的强调喔!-r 是可以复制目录,但是,档案与目录的权限会被改变~
# 所以,也可以利用cp -a /etc /tmp 来下达指令喔!
范例四:将范例一复制的bashrc 建立一个连结档(symbolic link)
[root@linux tmp]# ls -l bashrc
-rw-r–r– 1 root root 395 Jul 18 22:08 bashrc
[root@linux tmp]# cp -s bashrc bashrc_slink
[root@linux tmp]# cp -l bashrc bashrc_hlink
[root@linux tmp]# ls -l bashrc*
-rw-r–r– 2 root root 395 Jul 18 22:08 bashrc
-rw-r–r– 2 root root 395 Jul 18 22:08 bashrc_hlink
lrwxrwxrwx 1 root root 6 Jul 18 22:31 bashrc_slink -> bashrc
# 那个bashrc_slink 是由-s 的参数造成的,建立的是一个『快捷方式』,
# 所以您会看到在档案的最右边,会显示这个档案是『连结』到哪里去的!
# 至于那个bashrc_hlink 有趣了!建立了这个档案之后,bashrc 与bashrc_hlink
# 所有的参数都一样,只是,第二栏的link 数改变成为2 了~而不是原本的 1 喔!
# 这两种连结的方式的异同,我们会在下一章里面进行介绍的!
范例五:若~/.bashrc 比/tmp/bashrc 新才复制过来
[root@linux tmp]# cp -u ~/.bashrc /tmp/bashrc
# 这个-u 的特性,是在目标档案与来源档案有差异时,才会复制的。
# 所以,比较常被用于『备份』的工作当中喔!^_^
范例六:将范例四造成的bashrc_slink 复制成为bashrc_slink_2
[root@linux tmp]# cp bashrc_slink bashrc_slink_2
[root@linux tmp]# ls -l bashrc_slink*
lrwxrwxrwx 1 root root 6 Jul 18 22:31 bashrc_slink -> bashrc
-rw-r–r– 1 root root 395 Jul 18 22:48 bashrc_slink_2
# 这个例子也是很有趣喔!原本复制的是连结档,但是却将连结档的实际档案复制过来了# 也就是说,如果没有加上任何参数时,复制的是源文件,而非连结文件的属性!
# 若要复制连结文件的属性,就得要使用-d 或者-a 的参数了!
范例七:将家目录的.bashrc 及.bash_history 复制到/tmp 底下
[root@linux tmp]# cp ~/.bashrc ~/.bash_history /tmp
# 可以将多个数据一次复制到同一个目录去!
这个cp 的功能很多,而由于我们常常在进行一些数据的复制,所以也会常常用到这个指令的。
一般来说,我们如果去复制别人的数据(当然,该档案您必须要有read 的权限才行啊!^_^) 时,总是希望复制到的数据最后是我们自己的,所以,在预设的条件中,cp 的来源档与目的档的权限是不同的,目的档的拥有者通常会是指令操作者本身。
举例来说,上面的范例二中,由于我是root 的身份,因此复制过来的档案拥有者与群组就改变成为root 所有了!这样说,可以明白吗?!^_^
由于具有这个特性,因此,当我们在进行备份的时候,某些需要特别注意的特殊权限档案,例如密码文件(/etc/shadow) 以及一些设定档,就不能直接以cp 来复制,而必须要加上-a 或者是-p 等等可以完整复制档案权限的参数才行!另外,如果您想要复制档案给其它的使用者,也必须要注意到档案的权限(包含读、写、执行以及档案拥有者等等),否则,其它人还是无法针对您给予的档案进行修订的动作喔!注意注意!
至于上面的范例当中,第四个范例是最有趣的,使用-l 及-s 都会建立所谓的连结档(link file),但是这两种连结档确有不一样的展现情况。
这是怎么一回事啊?那个-l 就是所谓的hard link ,至于-s 则是symbolic link ,鸟哥这里先不介绍,因为这个涉及i-node 的相关知识,我们还没有介绍到,下一章再来讨论这个link 的问题喔!总之,由于cp 有种种的档案属性与权限的特性,所以,在复制时,您必须要清楚的了解到:
•是否需要完整的保留来源档案的信息?
•来源档案是否为连结档(symbolic link file)?
•来源档是否为特殊的档案,例如FIFO, socket 等?
•来源文件是否为目录?
需要说明的是,为防止用户在不经意的情况下用cp命令破坏另一个文件,如用户指定的目标文件名已存在,用cp命令拷贝文件后,这个文件就会被新源文件覆盖,因此,建议用户在使用cp命令拷贝文件时,最好使用i选项。