如何压缩文件夹而不包括路径中的所有文件夹?

如何压缩文件夹而不包括路径中的所有文件夹?

我正在尝试压缩网站的主目录,但存档在到达要压缩的文件夹之前包含文件夹的完整路径。该命令zip -r compressed_data.zip /home/vivek/public_html导致 compressed_data.zip 包含 home->vivek->public_html,而不仅仅是 public_html 及其内容。

我可以在命令中添加什么开关来省略路径中的所有文件夹?

答案1

默认情况下,该zip过程将存储相对于当前目录的完整路径,因此如果您想要一个如下所示的存档:

/config
/files
/lib
.htaccess
index.html

然后你需要先登录public_html。也就是说,你可以用一行代码来解释这一点:

cd /home/vivek/public_html && zip -r ~/compressed_data.zip . * ; cd -

这将改变目录,压缩内容,然后返回到主目录。

如果您想将其作为通过 cronjob 或其他进程调用的脚本的一部分执行,请创建如下文件:

#!/bin/bash
dir=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
(cd "/home/vivek/public_html" && zip -r "${dir}/compressed_data.zip" ./*)

您可以zip它的手册页

相关内容