使用Copy& amp;时取回文件通过命令行粘贴

时间:2018-03-06 07:25:34

标签: shell copy command

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

cp -ab <source>/* <destination>

您应该了解2个警告。

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

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

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

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