【问题标题】:Linux - Find command and tar command FailureLinux - 查找命令和 tar 命令失败
【发布时间】:2015-03-11 19:27:25
【问题描述】:

我在备份脚本中使用了查找和复制命令的组合。 它用于相当大量的数据,

  1. 首先,它需要在 25 个文件中找到所有超过 60 分钟的文件
  2. 然后将这些文件复制到一个临时目录 - 每个文件的大小为 1.52GB 到 2GB
  3. 这 25 个文件中的一个将连续追加数据。

    我从谷歌上了解到,如果对尝试 tar 的文件进行更新,则 Tarring 操作将失败,查找和复制是否也一样? 我正在尝试这样的事情,

    /usr/bin/find $logPath -mmin +60 -type f -exec /bin/cp {} $logPath/$bkpDirectoryName \;
    
  4. 在此之后我有一个步骤,我将文件复制到上面提到的临时目录(&bkpDirectoryName),这里我使用如下所述,

    /bin/tar -czf $bkpDir/$bkpDirectoryName.tgz $logPath/$bkpDirectoryName
    

    这也失败了。

过去很多天都在运行相同的备份脚本,但突然它开始失败并让我头疼!有人可以帮我吗?

【问题讨论】:

  • 这到底是哪一部分失败了?它是如何失败的?你从失败中得到什么错误? (你应该顺便引用你的变量扩展。)
  • 我在 if 循环中使用 exec cp 运行问题中提到的 find 命令,如果成功则继续,如果失败则转到 else 部分,当前命令失败并移至 else 部分。关于变量,它只是文件和目录的路径
  • 我觉得你可能误解了我的意思。我的意思是在你的脚本中你应该使用"$logPath/$bkpDirectoryName" 而不是$logPath/$bkpDirectoryName 等。
  • 您可能不需要引号,但添加它们并没有什么坏处,并且 在事情发生变化时使您免于错误,以至于您确实需要它们(例如 @987654326 的值@ 开始包含一个空格,例如)。
  • 根据定义,find -mmin +60不会找到仍在积极增长的文件,因为该命令仅返回最后一次修改的文件一个小时之前。所以如果你真的是说-mmin +60,那么文件增长的问题就无关紧要了。如果您仍然遇到问题,请edit your original post 提供您的代码的完整副本以及您看到的所有错误。仅仅说“它失败了”不足以帮助我们帮助您。

标签: linux bash tar cp find-util


【解决方案1】:

你能试试这些步骤吗

  1. 不要复制超过 60 分钟的文件,而是移动它们。
  2. 对移动的文件运行 tar

如上,连续追加的文件不会被移动。

如果您的其他 24 个文件中的任何一个可能在 60 分钟后更新,您可以执行以下操作

  1. 移动文件后,请触摸同名文件,以防出现不连续的异步更新。
  2. 在对文件进行 tar 处理时,为 tar 文件指定一个时间戳名称。这样您就有了一个滚动日志的 tar

如果由于您的某些自定义要求而无法正常工作,请尝试执行 rsync,然后对 rsync 文件执行相同的操作(即查找和 tar 或仅 tar)

【讨论】:

    【解决方案2】:

    试试这个

    output=`find $logPath -mmin 60 -type f`
    if [ "temp$output" != "temp" ];then
      cp -rf $output $other_than_logPath/$bkpDirectoryName/
    else 
       echo sorry
    fi
    

    我认为,您使用的是 +60 而不是 60。

    我也想知道,你的脚本在什么时间间隔被调用。

    【讨论】:

    • 我希望所有超过 1 小时的文件都被 tarred,所以我使用 _60
    • 脚本每 24 小时调用一次
    【解决方案3】:
    #!/bin/bash
    for find in `find / -name "*" -mmin 60`
    do
     cp $find / ## Choose directory
    done
    

    这基本上就是你需要的,我猜的只是改变目录//

    猜你喜欢
    • 2016-11-28
    • 2022-12-16
    • 2012-09-13
    • 1970-01-01
    • 2019-05-09
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    • 2011-07-25
    相关资源
    最近更新 更多