试图创建$ now文件夹并复制.sql文件创建的文件夹

时间:2014-12-04 14:27:58

标签: mysql linux shell debian

我有一个shell脚本,我每隔几天就会尝试复制.sql数据库文件并将它们移动到一个指定的文件夹中,后面跟/ $ now /。该脚本执行完美,但我得到一个cp:无法创建常规文件' / path / to / dir / $ now /':没有这样的文件或目录。

我知道这些文件夹是存在的,因为当我出现这些文件夹时,它会出现。目录。

我的所有权限都是可执行和可写的。这一直困扰我一个星期左右,我只是不能指责它。

这是我的代码:

#!/bin/bash
BACKUP_DIR="/backups/mysql/"
FILE_DIR=/dbase/files/
now=$(date +"%Y_%m_%d")

# setting the input field seperator to newline
IFS=$'\n'

# find db backups and loop over
for file in $(find ${FILE_DIR} -maxdepth 1 -name "*.sql" -type f -exec basename {} \;); do
    # create backup directory:
    mkdir -p "${BACKUP_DIR}${file%.sql}/${now}"

    # copy file over        
    cp "${FILE_DIR}${file}" "${BACUP_DIR}${file%.sql}/${now}/"
done

提前致谢!

更新

我收到错误:

+ mkdir -pv /backups/mysql/health/2014_12_04
+ cp /dbase/files/health.sql health/2014_12_04/
cp: cannot create regular file 'health/2014_12_04/': No such file or directory

对于已经创建的所有9个目录都会发生这种情况

1 个答案:

答案 0 :(得分:0)

错误是错字。我错过了cp线上$ BACKUP_DIR中的'K'。这是正确的代码:

#!/bin/bash
BACKUP_DIR="/backups/mysql/"
FILE_DIR=/dbase/files/
now=$(date +"%Y_%m_%d")

# setting the input field seperator to newline
IFS=$'\n'

# find db backups and loop over
for file in $(find ${FILE_DIR} -maxdepth 1 -name "*.sql" -type f -exec basename {} \;); do
    # create backup directory:
    mkdir -p "${BACKUP_DIR}${file%.sql}/${now}"

    # copy file over        
    cp "${FILE_DIR}${file}" "${BACKUP_DIR}${file%.sql}/${now}/"
done