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

问题描述 投票:1回答:2

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

shell copy command
2个回答
1
投票

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

cp -ab <source>/* <destination>

您应该了解2个警告。

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

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

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

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


2
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.