【问题标题】:Trying to create $now folder and copy .sql files created folders尝试创建 $now 文件夹并复制 .sql 文件创建文件夹
【发布时间】:2014-12-04 14:27:58
【问题描述】:

我有一个 shell 脚本,我尝试每隔几天运行一次,它会复制 .sql 数据库文件并将它们移动到附加了 /$now/ 的指定文件夹中。该脚本执行完美,但我得到一个 cp: cannot create regular file '/path/to/dir/$now/': No such file or directory。

我知道这些文件夹存在,因为当我“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 个目录都会发生这种情况

【问题讨论】:

  • 那行代码的 sn-p 是什么? (包括任何相关变量的赋值行。)
  • 我已将代码添加到原始问题中。
  • 如果您将-v 添加到该mkdir 行,您是否看到它输出它正在创建目录?将set -x 添加到脚本的顶部,看看当它失败时你正在运行什么。
  • 好的,所以当我添加 -v 时它告诉我它无法访问 *.sql:没有这样的文件或目录。我把 .sql 从通配符中去掉,现在它只是从每个 .txt 或 .isi 中创建一个文件,并在其中放置一个带有日期的子目录。没有文件被复制到 $now 目录中。
  • 我现在已经创建了目录,但是仍然没有 .sql 文件被复制到 $now 目录中。没有这样的文件或目录;即使它列出了它创建的目录。

标签: mysql linux shell debian


【解决方案1】:

错误是一个错字。我在 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-22
    • 1970-01-01
    • 2020-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-03
    相关资源
    最近更新 更多