试图创建$ now文件夹并复制.sql文件创建的文件夹
问题描述:
我有一个shell脚本,我试图每隔几天运行一次复制.sql数据库文件并将它们移动到/ $ now /所附的指定文件夹中。脚本执行完美,但我得到一个cp:无法创建常规文件'/ path/to/dir/$ now /':没有这样的文件或目录。
我知道这些文件夹存在,因为它出现在我'ls -ltr'目录中。
我的所有权限都是可执行的和可写的。这让我困惑了大约一个星期,而我只是不能把它放在手指上。
这里是我的代码:
#!/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个目录是一个错字。我错过了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
+0
是的,这是正确的。 – Mark 2014-12-05 15:16:08
围绕该行的代码段是什么? (包括任何相关变量的赋值行。) – 2014-12-04 14:29:18
我已将代码添加到原始问题中。 – Mark 2014-12-04 14:35:44
如果你添加了'-v'到那个'mkdir'行,你会看到它输出它正在创建目录吗?将'set -x'添加到脚本的顶部,看看当它失败时显示您正在运行的是什么。 – 2014-12-04 14:41:13