我有一个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个目录都会发生这种情况
答案 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