通过命令行使用“复制”和“粘贴”时备份文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过命令行使用“复制”和“粘贴”时备份文件相关的知识,希望对你有一定的参考价值。

我使用命令cp -a <source>/* <destination>复制和粘贴一个特定目标内的文件。在目标中,上述命令仅替换源中存在的文件夹内的文件。如果目标中存在其他文件,则该命令将不执行任何操作并保持原样。现在,在进行粘贴之前,我想要备份将要用复制粘贴替换的文件。 cp命令中有一个选项可以执行此操作吗?

答案

如果要备份将从源复制的这些文件,请使用GNU cp中提供的-b选项

cp -ab <source>/* <destination>

您应该了解2个警告。

  • 据我所知,这个命令在非GNU系统(如BSD系统)中不可用
  • 它将要求确认目标中的每个现有文件。我们可以使用-u选项减少问题,但这在脚本中是不可用的。

在我看来,你正在尝试进行备份(将文件复制到另一个位置,不要擦除它们,不要覆盖已存在的那些),你可能想看一下rsync命令。将编写相同的命令

rsync -ab --suffix=".bak" <source>/ <destination>

并且rsync命令可以更灵活地处理这类事情。

另一答案

cp命令中没有这样的选项。在这里,您需要创建一个shell脚本。首先在目标目录中执行ls命令,并将输出存储在history.txt等文件中。现在就在cp命令执行grep命令之前,该命令包含要在history file中复制的文件,以检查该文件是否已在历史文件中可用。如果文件在目标目录中可用(即history file中可用的文件),则首先使用todays datestamp备份目标目录中的文件,然后将相同的文件名从源复制到目标。

以上是关于通过命令行使用“复制”和“粘贴”时备份文件的主要内容,如果未能解决你的问题,请参考以下文章

vim 下粘贴复制,如何做到最快

求大神告知 linux系统下,JAVA如何操作mysql备份和还原。求源代码~~~~测试通过的加分。

在linux中的代码块中复制/粘贴功能

一个PHP文件备份脚本

使用Bat自动打包并通过FTP发送到备份服务器——实战测试

复制并粘贴已修改的文件,同时备份目标中的旧文件