在Linux中,要将指定源文件复制到目标文件,但不覆盖原有文件时,需使用()命令。

【答案】:C本题考查Linux文件系统的基础知识。
在Linux系统上,文件复制命令cp。
cp命令的作用是将指定的源文件复制到目标文件或将多个源文件复制到目标目录。
就像DOS下的复制命令一样。
cp命令的一般格式为:cp[-option]sourcefileName|directorydestfileName|directory下面解释重要的选项参数。
?-a:复制整个目录。
它链接,递归复制文件子目录,保留文件属性。
?-f:不使用命令删除当前目标文件。
与?-i-f选项相反,在覆盖目标文件之前会发出提示,要求用户确认。
当你回答y时,它将覆盖目标文件,该文件是交互式副本。
?-p:除了复制源文件的内容之外;其修改时间和访问权限也被复制到新文件中。
?-R:如果给定的资源文件是目录文件;所有子目录和文件都将被一遍又一遍地复制。
此时目标文件必须是目录名。
?-l:不复制;链接文件。

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

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

长选项所需的参数也是短选项所需的。
-a,--archivess-dR--preserve=all--backup[=CONTROL为每个现有目标文件创建备份-b与--backup类似,但不接受参数--copy-content在递归处理期间复制特殊文件的内容-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=mode、ownership、timestamp--preserve[=列表属性保存指定的属性(默认:mode、ownership、timestamp)以及如果可能的话附加属性:environment、link、xattr,ETC。
csameas--preserve=context--sno-preserve=属性列表不保留指定的文件属性--parent在复制之前将源文件路径中的所有目录创建到目标目录-R,-r,--recursive递归复制目录及其内部的所有内容子目录--reflink[=WHEN]控制克隆/CoW复制。
请看下面的内容。
--remove-destination在尝试打开目标文件之前删除现有的目标文件(与--force选项结合使用)--sparse=WHEN控制稀疏文件的创建方式--strip-trailing-slashes删除文件夹中的所有源文件/斜杠-s参数在目录末尾,--symbolic-link创建只创建符号链接而不复制文件-S,--suffix=suffix自己指定备份文件后缀-t,--target-directory=directory将所有参数指定的源文件/目录复制到目标目录-T,--no-target-directory将目标目录视为普通文件-u,--仅当eSOURCE比目标文件新或文件目标时更新复制ismissing-v,--verboseexplainwhatisbeingdone-x,--one-file-systemstayonthisfilesystem-Z,--context=CONTEXTsetsecuritycontextofcopytoCONTEXT--help显示此帮助消息并退出--version显示版本信息并退出

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

当指定--reflink[=always]参数时,进行轻拷贝,即仅当数据块被修改时才进行拷贝。
如果复制失败或还指定了--reflink=auto,则恢复标准复制模式。

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

none,inactive没有编号的备份(即使使用了--backup选项),t按现有编号排序的备份文件,如果编号的备份文件已存在则为零,然后使用数字,否则正常使用简单备份,从不正常备份

有一种特殊情况:如果同时指定了--force和--backup选项,并且文件源文件和目标文件是相同的通用现有文件如果是这样,cp将备份源文件。

示例:

复制代码如下:[root@localhostwww]#cp-ptest.rb/home/test#复制test.rb到test目录下,保留原来的属性file[root@localhostwww]#cp-rDir//home/test#复制目录Dir到测试目录[root@localhostwww]#cp-frDir/*/home/test#强制复制Dir下的所有文件到test目录[root@localhostwww]#cptest.rb{,.bak}#备份test.rb并在末尾添加后缀.bak

scp命令SCP命令语法scp[-1245BCpqrv][-ccipher][fssh_config][-Identity_file][-llimit][-ossh_option][-Pport][-Sprogram][[user@]host1:]file1[...[[suer@]host2:]file2

SCCommandP告诉scp在主机之间复制文件。
它使用ssh(1)进行数据传输。
并具有相同的认证和保证。
scp将在身份验证期间要求输入密码所有文件可能需要特定于服务器和用户的描述来指示文件将复制到的服务器。
允许在两个远程连接的服务器之间复制文件。

SCP命令选项

-1强制scp使用协议1

-2强制scp使用协议2

-4scp使用IPV4URL协议

-6强制scp使用IPV6URL

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

-C允许压缩。
在ssh(1)中指定-C以启用压缩

-ccipher选择加密数据传输的密码。
此选项直接传递给ssh(1)

-fssh_config为ssh设置变量用户配置此选项直接传递给ssh(1)选项

-iidentity_file一个文件,该文件是通过RSA认证读取私有密码。
该选项可以直接传递给ssh(1)

-llimate限制传输带宽,即速度为Kbit/s

-ossh_option可以将配置格式传递给ssh_config在ssh中。
此模式对于描述没有独立SCP文件开关的SCP非常有用。
选项如下。
它们的值请参考ssh_config(5)

-Pport指定远程连接的端口。
注意该选项必须用大写字母书写。
因为-p已经预留了次数和模式

-Sprogram指定加密程序。
该程序必须能够读取所有ssh(1)选项。

-p指定原始文件的修改次数、链接数量和模式

-q禁用进度参数

-r递归复制所有文件

-Sprogram指定加密程序。
该程序必须能够读取所有ssh(1)选项。

-V冗余模式。
让scp和ssh(1)打印其故障排除信息。
这很有用用于连接解析、身份验证和配置。

示例:

复制代码如下:[root@localhostwww]#scp-rtank@192.16.1.108:/var/www/blog/home/www/blog#以用户身份登录Tank并将服务器文件夹复制到本地[root@localhostwww]#scp/home/www/blog/index.php192.16.1.108:/var/www/blog#复制本地文件到服务器填写用户默认当前用户

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

复制代码如下:[root@localhosttest]#scp-P20022-r../vhost/zhuqiang@192.168.0.200:/home/test/

Linux下如何使用cp命令复制文件及复制目录

Linux中使用cp命令主要用于复制文件。
通过设置,您还可以复制目录。
我们来看看linux下cp命令的具体用法。

一般情况下,shell在命令行下复制文件时会设置一个别名,如果目标文件已经存在,它会询问是否覆盖它,无论你是否使用了-i。
环境。
但如果cp在shell脚本中运行,如果不带-i参数,它不会询问是否覆盖它。
这表明命令行和shell脚本的执行方式有些不同。

1.命令格式:

用法:

cp[选项]。


[-T]源目标

或:cp[选项]。


来源。


目录

或者:cp[选项]。


-t目录源。


2、命令功能:

将源文件复制到目标文件或将多个源文件复制到目标目录。

3.命令参数:

<-a,--archive等于-dR--preserve=all

<--backup[=CONTROL为每个现有目标文件创建备份

-b与--backup类似,但不接受参数

--copy-contents在递归处理时复制特殊文件的内容

-d等于--no-取消引用--preserve=links

-f,--force如果目标文件无法打开,则将其删除并重试(使用-n选项时)如果存在,则不需要再次选择此项)

​-i,--interactive在覆盖之前询问(禁用之前的-n选项)

​-H跟随文件源命令行符号链接

<-l,--link链接文件而不复制

<-L,--dereference始终遵循符号链接

<-n,--no-clobber不覆盖现有文件(禁用以前的-i选项)

-P,--no-dereference不遵循源文件中的符号链接

-p等于--preserve=模式,property、timestamp

--preserve[=propertylist保留指定的属性(默认:mode、property、timestamp)如果

可以保留其他属性:environment、link、xattr、ETC。

-R、-r、--recursive复制目录及目录中的所有元素

4.示例命令:

示例1:仅复制a文件在目标目录中,文件在目标文件中不存在

命令:

cplog.logtest5

输出:

[root@localhosttest]#cplog.logtest5

[root@localhosttest]#ll

 -rw-r--r--1rootroot010-2814:48log.log

​drwxr-xr-x6rootroot409610-2701:58scf

drwxrwxrwx2rootroot409610-2814:47test3

drwxr-xr-x2rootroot409610-2814:53test5

【root@localhosttest】#cdtest5

【root@localhosttest5】#ll

 -rw-r--r--1rootroot010-2814:46log5-1.log

★-rw-r--r--1rootroot010-2814:46log5-2.log

★-rw-r--r--1rootroot010-2814:46log5-3.log

-rw-r--r--1rootroot010-2814:53log.log

​注意:

​不带-a参数,两个文件的时间不同。
当使用-a参数时,两个文件的时间一致。

示例2:当目标文件存在时,系统会询问您是否要覆盖它。

命令:

cplog.logtest5

输出:

【[root@localhosttest]#cplog.logtest5

cp:是否要覆盖“test5/log.log”?n

【[root@localhosttest]#cp-alog.logtest5

【cp:是否要覆盖“test5/log.log”?y

[root@localhosttest]#cdtest5/

【[root@localhosttest5]#ll

【-rw-r--r--1rootroot010-2814:46log5-1.log

★-rw-r--r--1rootroot010-2814:46log5-2.log

★-rw-r--r--1rootroot010-2814:46log5-3.log

-rw-r--r--1rootroot010-2814:48log.log

说明:

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

示例3:复制整个目录

命令:

输出:

当目标目录存在时:

[root@localhosttest]#cp-atest3test5

<[root@localhosttest]#ll

<-rw-r--r--1rootroot010-2814:48log.log

​drwxr-xr-x6rootroot409610-2701:58scf

drwxrwxrwx2rootroot409610-2814:47test3

drwxr-xr-x3rootroot409610-2815:11test5

[root@localhosttest]#cdtest5/

【root@localhosttest5】#ll

 -rw-r--r--1rootroot010-2814:46log5-1.log

-rw-r--r--1rootroot010-2814:46log5-2.log

-rw-r--r--1rootroot010-2814:46log5-3.log

-rw-r--r--1rootroot010-2814:48log.log

drwxrwxrwx2rootroot409610-2814:47test3

目标目录不存在不是:

[root@localhosttest]#cp-atest3test4

【[root@localhosttest]#ll

】-rw-r--r--1rootroot010-2814:48log.log

drwxr-xr-x6rootroot409610-2701:58scf

drwxrwxrwx2rootroot409610-2814:47test3

drwxrwxrwx2rootroot409610-2814:47test4

【drwxr-xr-x3rootroot409610-2815:11test5

【[root@localhosttest]#

【注意:

注意目标目录存在和不存在,结果是不一样的。
当目标目录存在时,将整个源目录复制到目标目录。

示例4:从复制的log.log创建链接文件log_link.log

命令:

cp-slog.loglog_link.log

<输出:

<[root@localhosttest]#cp-slog.loglog_link.log

【[root@localhosttest]#ll

〈lrwxrwxrwx1rootroot710-2815:18log_link.log-》log.log

〈-rw-r--r--1rootroot010-2814:48log.log

drwxr-xr-x6rootroot409610-2701:58scf

drwxrwxrwx2rootroot409610-2814:47test3

drwxrwxrwx2rootroot409610-2814:47test4

drwxr-xr-x3rootroot409610-2815:11test5

说明:

log_link.log是由-s参数引起的,创建的是一个“快捷方式”,因此您将看到在文件的最右侧它将指示文件“链接”的位置!

以上是Linux下cp命令的使用介绍。
您无法单独使用cp命令复制文件夹。
您需要添加-f参数。
你知道吗?有关mv命令的任何信息吗?