gpt4 book ai didi

php - Linux:将日志文件从安装的目录递归移动到本地目录,同时维护本地目录中的目录结构

转载 作者:太空宇宙 更新时间:2023-11-04 04:12:26 25 4
gpt4 key购买 nike

所以我已经做了相当多的谷歌搜索,但我还没有找到这个问题的答案。我有一台服务器需要实时运行并快速响应 - 我不希望我的访客/客户等待。然而,我已经遇到了足够多的服务器问题,知道我需要一个良好的备份,而不是现在的备份。

当我在这台服务器上尝试 mysqldump 和 tar 时,它可以工作,但会使服务器在几个小时内变得非常慢。它还可能导致硬盘驱动器被填满(如果我忘记删除旧备份太久),从而导致 MySQL 和我的网站瘫痪。减慢服务器速度是 Not Acceptable ,因此迄今为止我的备份仅在最常见的缓慢日期/时间每周进行一次。但是,我不喜欢这个解决方案。

所以我现在有另一台服务器,我已将其设置为我的主服务器的近实时备份。我正在设置 MySQL 复制和每日 rsync。然后,可以从此备份服务器运行每日 mysqldump 和 tar,而不会影响主服务器上的响应时间。很好,但我想更进一步。

我有许多全天捕获的数据文件 - 例如日志文件和基本访问者跟踪文件(IP、引荐来源网址、用户代理,没什么不好的) - 不需要实时处理,我决定最好让这个备份服务器处理这些文件,而不是占用我的主服务器的资源。但这给我带来了一个问题。我想将这些文件从主服务器上转移到我的备份服务器上进行处理。这些文件分散在许多目录中,并且该目录列表只会随着时间的推移而增长。所以我想避免现在在多个目录上运行 mv 并必须维护该列表 - 一些新目录最终会被忘记。

因此,我已将主服务器上的必要目录安装在备份服务器上的/media 文件夹下。如果我只是想复制文件,我会使用 scp 但我想移动它们。所以我想要一个执行以下操作的命令:

mv /media/primary/*.log /backup/.

其中 mv 命令递归地查找/media/primary 文件夹,并深入目录到每个子文件夹,查找任何带有 .log 扩展名的文件。然后将该文件从/media/primary/移动到/backup 上的等效文件夹。因此,例如,如果我在目录/media/primary/tool1/logs 和/media/primary/tool2/logs 中有日志文件,我希望它们分别移动到/backup/tool1/logs 和/backup/tool2/logs 。我希望(但不要求)该命令创建该文件夹(如果该文件夹丢失)。一旦正确移动,就可以在备份服务器上的本地硬盘驱动器上处理和重命名/删除文件。

我的两台机器都使用 Ubuntu 12.04 服务器。我主要使用 PHP 工作,因此我一直在为备份服务器创建一个每天执行的 PHP 脚本。该脚本可以通过 SSH (phpseclib) 执行系统命令。

CLI 的单个命令会很棒,但我知道这可能是不可能的。

谢谢

最佳答案

像这样的东西怎么样

rsync -azrR --include='*.log' -f 'hide,! */' /media/primary /backup

如果您使用 man rsync 并输入 2343g,它应该会将您带到解释此过滤器的行。基本上,它会在模式匹配中隐藏除目录之外的所有内容(每个文件);但是,由于我也使用了 --include='*.log' 标志,它将覆盖该标志,并且该模式将仅匹配 .log 文件。您还可以使用 -nv 标志进行试运行,看看会发生什么。

关于php - Linux:将日志文件从安装的目录递归移动到本地目录,同时维护本地目录中的目录结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18432488/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com