Shell 脚本压缩文件夹,但如果从 cron.daily 运行,则排除参数不起作用

Shell 脚本压缩文件夹,但如果从 cron.daily 运行,则排除参数不起作用

如果我使用 运行该脚本,它会正常工作sh filename,但--exclude如果通过 cron 运行它,它会忽略所有参数:

#!/bin/sh
TIMESTAMP=$(date +%u)

WEEK=`date +"%V"`
if [ $(($WEEK%2)) -eq 0 ];
then
    echo "even";
    BACKUP_DIR="/mnt/backup/2_$TIMESTAMP"
    mkdir -p "$BACKUP_DIR/www"

else
    echo "odd";
    BACKUP_DIR="/mnt/backup/1_$TIMESTAMP"
    mkdir -p "$BACKUP_DIR/www"  
fi

if [ $(date +%u) -gt 6 ];
then
    zip -r -y $BACKUP_DIR/www/web.zip /var/www/ --exclude='var/www/\.opcache/*' --exclude='var/www/utils/phpThumb/cache/*'
else
    zip -r -y $BACKUP_DIR/www/web.zip /var/www/ --exclude='var/www/mycompany/files/*' --exclude='var/www/\.opcache/*' --exclude='var/www/mycompany/szamlazz/xml_szamlak/*' --exclude='var/www/mycompany/files_admin/szamlazz/*' --exclude='var/www/mycompany/files_admin/chatFiles/*' --exclude='var/www/mycompany/utils/phpThumb/cache/*' --exclude='*/backup-guard/*' --exclude='var/www/mycompany/mailer/*' --exclude='var/www/mycompany/attachments/*'
fi

exit 0

上述脚本应该在周日创建一个更大的备份,并在工作日创建一个部分备份,但它只是压缩所有内容。

答案1

如果 zip 文件存在,您的zip命令将更新它。您以循环方式写入目录,它们最终会被重复使用。如果您创建了一个没有排除项的旧 zip 文件,则更新不会删除您想要从存档中排除的文件的旧版本。

简单的解决方案:运行之前删除旧的 zip 文件zip

相关内容