将 tar 存档输出到 bash 脚本中的特定路径

Output A tar archive into a specific path in a bash script

我的脚本中有一部分使用 tar 来归档一些文件夹。它应该将存档结果输出到指定的文件夹。

以下 tar 命令将文件输出到正确的文件夹,但使生成的存档与通向它的完整路径嵌套。

例如 在我的 tar 文件中,我有以下文件夹: full/path/to/file

文件夹结构不应该看起来应该是相对于父文件夹而不是根文件夹。

代码如下:

...
local PROJECTS=(~/path/to/folder/*)
...
local PROJECT_PATH="${PROJECTS[$i]}"
local BACKUP_NAME=`date +%d%b%y`.tar.gz
echo Making folder "${PROJECT_PATH}"/backups
tar -czvf $PROJECT_PATH/backups/$BACKUP_NAME $PROJECT_PATH --exclude="${PROJECT_PATH}"/node_modules --exclude="${PROJECT_PATH}"/backups

如果您希望tar保存相对于某个目录的路径,请使用-C切换到该目录并提供相对路径:

tar -czvf "$PROJECT_PATH/backups/$BACKUP_NAME" -C "$PROJECT_PATH" . --exclude=./node_modules --exclude=./backups

-C "$PROJECT_PATH"告诉tar切换到$PROJECT_PATH目录,后面的.告诉它归档当前目录。