我正在编写一个脚本来打包一个目录,然后将该 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/