目前,我正在运行这两个命令来创建目录的快速备份。有没有一种方法可以将这两个命令合并为一个,以便我在一个命令中复制并重命名新目录?
#cp -R /tf/Custom_App /tf/Custom_App_backups/
#mv /tf/Custom_App_backups/Custom_App /tf/Custom_App_backups/Custom_App_2017-12-21
答案1
你应该能够做到
cp -R /tf/Custom_App /tf/Custom_App_backups/Custom_App_2017-12-21
然而,如果目标目录已经存在,这会将源路径的最后部分附加到目标路径,创建
/tf/Custom_App_backups/Custom_App_2017-12-21/Custom_App
,然后复制其中树的其余部分。
为了防止这种情况,请使用/tf/Custom_App/.
作为源。当然,在这种情况下,rm -r /tf/Custom_App_backups/Custom_App_2017-12-21
如果您不希望复制后旧文件躺在那里,您可能需要先这样做。
/some/dir
和之间的区别/some/dir/.
不久前已经讨论过当 时 cp 表现得很奇怪。 (点) 或 .. (点点) 是源目录
答案2
或者,您可以这样做:
mkdir /tf/Custom_App_backups/Custom_App_2017-12-21 # prepare the target location
cp -R /tf/Custom_app/. /tf/Custom_App_backups/Custom_App_2017-12-21 # copy only the contents
这将允许您预先指定您的自定义位置。另请注意,它使用后缀“/.
这”允许您仅复制内容并排除其包含的文件夹 - 在本例中为文件Custom_app
夹。
答案3
我偶然发现此页面寻找相同的建议。在我的 Ubuntu 20.04 (Focal Fossa) 系统上,我尝试了这个命令并使用了与 @ilkkachu 提供的相同的语法。除了我在 dest 文件夹中添加了一个尾部斜杠,例如 dest/ 。结果复制了源文件夹及其同级文件夹!当我在没有尾部斜杠的情况下重试时,得到了所需的结果。
因此,为了将来的参考,请注意,在 dest 文件夹中添加尾部斜杠也会复制源同级文件(.. 至少,这是我的经验)
答案4
您可以通过创建目标目录轻松继续:
mkdir Custom_App_2017-12-21
cd Custom_App_2017-12-21/
cp -R /tf/Custom_App/* .
最后一个命令会将所有相关文件复制到新建的目录中。