我正在尝试从数据库创建备份,但是如果数据库文件低于一定的大小,我不希望它覆盖last.sql,这是我在启动时导入的文件项目
这是我的导出脚本
cd /app/builds/databasefiles/
echo -e "currently in directory $(pwd)"
# copy the new one to its own file with datetime information
filename_with_date=$(date +"%Y-%m-%d_%H:%M:%S").sql
_print "filename: " ${filename_with_date}
# Export database to location
docker-compose exec db mysqldump -ularavel -p"laravel" laravel > /app/builds/databasefiles/${filename_with_date}
_print "Wait for the database export to be complete"
sleep 5
minimumsize=200
actualsize=$(du -k "${filename_with_date}" | cut -f 1)
if [ $actualsize -ge $minimumsize ]; then
cp /app/builds/databasefiles/${filename_with_date} /app/builds/databasefiles/last.sql
else
RED='\033[0;31m'
NC='\033[0m' # No Color
printf "${RED}Could not backup your database.\n${NC}"
fi
但问题是我一直收到以下回复:
filename: 2017-03-03_10:49:29.sql
Wait for the database export to be complete
du: cannot access '2017-03-03_10:49:29.sql': No such file or directory
/usr/bin/vc: line 40: [: -ge: unary operator expected
当我检查数据库文件夹中的文件时,我确实看到了2017-03-03_10:49:29.sql文件。我想知道为什么剧本说它找不到文件,我需要改变什么才能确保它有效?
答案 0 :(得分:1)
如果您想要docker
命令创建的文件大小,则必须将正确的名称传递给du
。
actualsize=$(du -k "/app/builds/databasefiles/${filename_with_date}" | cut -f 1)