gpt4 book ai didi

regex - 用于备份服务器上传文件夹的 Bash 脚本

转载 作者:行者123 更新时间:2023-11-29 09:28:06 24 4
gpt4 key购买 nike

我有一台运行 WHM/cPanel 网站的 CentOS 服务器,其中很多网站都运行 WordPress。我想做一个自动备份,将任何包含“上传”文件夹的帐户压缩并移动到备份目录中。我知道还有其他解决方案,但大多数都希望您备份整个 WordPress 站点,但我只需要备份上传内容。

我不太擅长 .sh 脚本,并且已经花了很多时间试图解决这个问题,但我似乎找不到任何足以让我成功的相似示例。我遇到的主要问题是在帐户之后命名 zip。

大多数上传文件夹的位置(user1 是更改的帐户):

/home/user1/public_html/wp-content/uploads
/home/user2/public_html/wp-content/uploads
/home/user3/public_html/wp-content/uploads

脚本示例:

find/home/-type d -name uploads -exec sh -c 'zip -r/backup/uploads/alluploads.z​​ip `dirname $0`/`basename $0`' {}\;

这种方法的问题是它全部写入一个 zip 文件。我如何更改此设置以将每个用户上传的内容保存到自己的 user1-uploads.z​​ip 文件中?

我试过 exec 和 sed,但我似乎无法弄明白。这是我得到的最好的——只是想让它呼应这个名字——但这是不对的。抱歉,我对正则表达式很糟糕:

find/home/-type d -name uploads -exec sh -c 'string=`dirname $0` echo $string | sed `/\/home\/\(.*\)\/new\/wp-content\/uploads/`'{}\;

对于如何解决此问题的任何帮助或指示,我们将不胜感激。谢谢!

最佳答案

您可以使用 Bash 的通配符 * 来扩展所有不同的用户目录。

for uploads in /home/*/public_html/wp-content/uploads; do
IFS=/ read -r _ _ user _ <<<"$uploads"
zip -r /backup/uploads/${user}.zip "$uploads"
done

关于regex - 用于备份服务器上传文件夹的 Bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24813734/

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