我正在使用命令cp -a <source>/* <destination>
来复制和粘贴一个特定目标内的文件。在目标中,上述命令仅替换源中存在的文件夹内的文件。如果目标中存在其他文件,则该命令将不执行任何操作并保持原样。现在,在进行粘贴之前,我想要备份将要用复制粘贴替换的文件。 cp命令中有一个选项可以执行此操作吗?
答案 0 :(得分:2)
cp
命令中没有此选项。在这里,您需要创建一个shell脚本。首先在目标目录中执行ls
命令,并将输出存储在history.txt
之类的文件中。现在就在cp
命令执行grep
命令之前,要在history file
中复制要复制的文件,以检查该文件是否已在历史文件中可用。如果文件在目标目录中可用(即history file
中可用的文件),则首先使用今天的日期戳记备份目标目录中的文件,然后将相同的文件名从源复制到目标。
答案 1 :(得分:1)
如果要备份将从 source 复制的文件,请使用-b选项,GNU cp中提供
cp -ab <source>/* <destination>
您应该了解2个警告。
在我看来,您正在尝试进行备份(将文件复制到另一个位置,不要擦除它们,不要覆盖已存在的那些),您可能需要查看rsync命令。将编写同样的命令
rsync -ab --suffix=".bak" <source>/ <destination>
并且rsync命令可以更灵活地处理这类事情。