日更第2天:Linux常用命令之cp用法

记得有一次,在办公室里,一位同事突然遇到了一个问题。
他需要将重要的文件夹“project_backup”从服务器上的一个目录复制到另一个目录,但由于某种原因,复制总是失败。
我走过去一看,发现他在命令行直接写的是“cp project_backup /path/to/destination/”,自然不行。
我告诉他Linux下的cp命令要加上-r递归选项,这样就可以复制一个文件夹中的所有内容。
他意识到了,而且他成功了。
等等,我记得当时他问我一个问题:“如果你想复制多个文件而不是文件夹怎么办?”我告诉他多文件目标必须是一个目录,而不是单个文件。
例如“cp file1 .txt file2 .txt /path/to/destination/”会报错,因为目标不是目录。
当时他问我,如果目标文件已经存在怎么办?我教它使用 -i 选项,这样在覆盖之前会有提示。
想来,当时他的电脑里大概有好几个同名的文件吧,哈哈。

Linux中使用cp命令进行强制覆盖的方法

你说的让我有点困惑。
我必须告诉你当时发生的那些时刻。

让我告诉你,当我想强制覆盖时,我在 Linux 上的 cp 命令上真的遇到了困难。
我记得有一年我在北京的一台服务器上运行。
复制文件时,他们总是询问是否要写更多。
这真的很烦人。

第一种方法是去掉别名;我已经尝试过了。
使用alias cp 查看是否设置了别名。
有时系统或软件会设置它。
使用 unalias cp 删除它;是的,它暂时有效;但下次你必须再做一次。
当时我复制了几个配置文件。
我不想一一确认。
所以我必须先解析名称,然后复制后重新上传。

第二个选项是使用绝对路径;我知道这一点。
/bin/cp 绕过别名,直接执行。
我在旧系统上运行,并且别名已损坏,因此我将直接使用 /bin/cp 源目标覆盖它,这将缓解问题。
就用了这个方法。
但你需要记住字面路径;否则,如果找不到该文件,你就会遇到麻烦。

第三种方法是使用管道自动输入 yes。
我也用过这个。
yes|cp 源目的地;好人无论有多少个文件。
无论有多少个文件。
连续输入yes。
它们将被直接覆盖。
我复制了几个备份文件,但是懒得一一点击,所以就用这个文件,一键搞定。
但要注意不要覆盖重要文件。
这个方法太严厉了。

入坑的时候,我简单提了一下这三种方法。
如今许多 Linux 用户都在使用它,这些技巧仍然有效。
但是,请求覆盖时应小心。
有时,文件丢失后将无法恢复。
让我告诉你,你仍然必须知道你必须做什么。
不用担心。

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

哈,Linux下的cp命令确实非常好用。
我以前用它来复制文件和目录。
下面我就详细的给大家讲一下我的使用感受。

上周一位客户问我如何将文件复制到另一个目录。
我直接告诉它使用这个命令:cp源文件目标文件。
例如,如果他有一个名为log.log的文件,并且想将其复制到test5 目录并将其命名为log.log,那么他应该这样做:cp log.log test5 /log.log。

但是,有时目标文件已经存在,系统会询问您是否要覆盖它。
我以前也遇到过这种情况,所以要特别注意。
你可以使用-i参数强制查询,这样系统就会提示你。

如果他不想覆盖原始文件,但想保留该文件,他可以使用-b参数创建备份副本。
例如,如果执行以下操作:cp -b log.log test5 /log.log,将在覆盖之前创建备份。

有时,您可能不想问问题,只是复制文件。
这时候使用-f参数强制覆盖就方便多了。

复制目录时,必须使用-r或-R参数,以便递归复制整个目录及其内容。
我上次使用此命令是复制整个目录:cp -r test3 test5 如果test5 目录不存在,则创建;如果存在,则 test3 的内容将复制到那里。

如果希望复制的文件保留其原始属性,例如时间戳和权限,可以使用-a参数。
我已经尝试过几次并且效果很好。

此外,如果您不想覆盖现有文件,可以使用 -n 参数。
这样,复制过程中现有文件就不会被覆盖。

最后,如果您只想创建符号链接而不是复制文件内容,可以使用 -s 参数。
例如,如果执行以下操作: cp -s log.log log_link.log,将创建一个名为 log_link.log 的符号链接,指向 log.log。

无论如何,这取决于你。
这些参数非常实用且易于使用。
我仍然认为这些命令在不同的Linux发行版中可能略有不同,但基本用法是相同的。