在不存在的地方复制并创建一个带有日期时间戳的目录

Copy and create a directory with date timestamp where it does not exist

背景:

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

出于此论点的目的,我无法创建变量来存储任何内容,必须在没有它们的情况下完成。我在 Whosebug here 上看到了另一个问题,这似乎证实了我要采用的方法。

问题:

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

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

建议的答案

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 -a "/var/www/html/myapp" "$_"

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

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