复制并创建一个包含日期时间戳的目录,该目录不存在

时间:2015-11-30 10:21:02

标签: linux shell unix mkdir cp

背景

我有一个正在执行的Jenkins任务,在运行之前,我想要获取一个文件夹的副本并将其移动到另一个不存在的目录,并且是一个动态时间戳。

出于这个论点的目的,我无法创建存储任何东西的变量,它必须在没有它们的情况下完成。我在stackoverflow here上看到了另一个问题,这似乎证实了我的目标。

问题:

实现Linux / Unix的最佳方法是什么?

我有一个想法,但我想检查这是否是最好的方法。首先将目录mkdir -p与目录/tmp/backup/myapp/的位置和日期时间戳作为最终文件夹名$(date +%Y%m%d%H%M%S),然后调用递归副本cp -r并提供要复制的源目录/var/www/html/myapp然后传入原始位置网址作为目标$_

建议的答案

mkdir -p /tmp/backup/myapp/$(date +%Y%m%d%H%M%S) && cp -r /var/www/html/myapp $_

1 个答案:

答案 0 :(得分:1)

对我而言似乎是正确的,只是一些小修复:

mkdir -p "/tmp/backup/myapp/$(date +%Y-%m-%d-%H:%M:%S)" && cp -a "/var/www/html/myapp" "$_"

使用双引号来避免空间问题(在您的示例中不需要,但最好是谨慎)。

使用cp -a复制目录。它的作用是-r|-R但是它总是保留文件的符号链接和元数据,例如时间戳和所有权。