如果我使用 运行该脚本,它会正常工作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
。