BASH找不到确实存在的文件

时间:2017-03-03 15:57:36

标签: bash

我正在尝试从数据库创建备份,但是如果数据库文件低于一定的大小,我不希望它覆盖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文件。我想知道为什么剧本说它找不到文件,我需要改变什么才能确保它有效?

1 个答案:

答案 0 :(得分:1)

如果您想要docker命令创建的文件大小,则必须将正确的名称传递给du

actualsize=$(du -k "/app/builds/databasefiles/${filename_with_date}" | cut -f 1)