【发布时间】:2015-03-11 19:27:25
【问题描述】:
我在备份脚本中使用了查找和复制命令的组合。 它用于相当大量的数据,
- 首先,它需要在 25 个文件中找到所有超过 60 分钟的文件
- 然后将这些文件复制到一个临时目录 - 每个文件的大小为 1.52GB 到 2GB
-
这 25 个文件中的一个将连续追加数据。
我从谷歌上了解到,如果对尝试 tar 的文件进行更新,则 Tarring 操作将失败,查找和复制是否也一样? 我正在尝试这样的事情,
/usr/bin/find $logPath -mmin +60 -type f -exec /bin/cp {} $logPath/$bkpDirectoryName \; -
在此之后我有一个步骤,我将文件复制到上面提到的临时目录(&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