首页 文章

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

提问于
浏览
0

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

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

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

这是我的代码:

#!/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

    错误是一个错字 . 我错过了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
    

相关问题