我如何 tar 一个由我的脚本命名的目录?

我如何 tar 一个由我的脚本命名的目录?

我正在编写一个脚本来打包一个目录,然后将该 tarball 上传到 S3。该目录以日期、月年命名。以下是我的尝试:

 TARNAME=`date --date="$(date +%Y-%m-15) -1 months" +' %B-%Y'`

 tar cvfz /tmp/$TARNAME.tar.gz  /Drive_E/drive_i_bu/monthly/$TARNAME
 /usr/local/bin/aws s3 mv /tmp/$TARNAME.tar.gz s3://test-roger/

如果我不进行变量替换,上述操作是可行的。有了变量,我得到:tar: July-2016.tar.gz: Cannot stattar (child): /tmp/: Cannot open: Is a directory

此外,tar 似乎试图深入目录。有什么想法吗?同样,上述操作无需变量替换即可工作。因此,问题不在于 AWS CLI 工具。

答案1

有一个空格插入到您的$TARNAME(见下文)。这导致tar 将/tmp/July-2016.tar.gz视为单独的参数

echo /tmp/$TARNAME.tar.gz
/tmp/ July-2016.tar.gz

如果你去掉它,事情就会按你预期的方式进行。这似乎是由于

' %B-%Y'

答案2

注意空白处:

tar cvfz /tmp/"${TARNAME}".tar.gz /Drive_E/drive_i_bu/monthly/"${TARNAME}" /usr/local/bin/aws s3 mv /tmp/"${TARNAME}.tar.gz" s3://test-roger/

相关内容