0

我正在创建一个自动备份系统。我计划运行一个 Cron 作业,每周一次,自动创建备份并将其通过电子邮件发送到安全电子邮件。(这样,即使服务器爆炸成一百万个,我也会对我的文件进行完整的最近备份,任何管理员都可以访问)

我发现了这个简单的方法:system('tar -cvzpf backup.tar.gz /path/to/folder');

它几乎完美地满足了我的需要。唯一的问题是我不想在备份中包含一个目录。在这个网站上,用户上传自己的头像,保存图片的目录在我要备份的目录中。因为我是通过电子邮件发送的,所以我必须保持文件夹相对较小,并且加起来有几千张图片。有什么办法可以告诉函数忽略这个目录并压缩其他所有内容吗?

4

3 回答 3

2

find /path/to/folder -not -ipath '*baddirectory*' -print | xargs tar -cvzpf backup.tar.gz尽管您可能会考虑将 PHP 传递给您使用的所有二进制文件的完整路径(在上面的命令中:find、xargs 和 tar)。

于 2013-01-02T23:52:14.843 回答
1

从焦油人:

 tar --exclude='/path/to/folder/bad' 

所以你会得到:

system('tar -czpf --exclude='/path/to/folder/bad'  backup.tar.gz /path/to/folder');

您可以忽略 v(详细),因为您没有看到正在执行的代码。

于 2013-01-03T00:17:18.517 回答
0

您可以像手动一样从 --exclude-tag-all PATTERN long 选项中排除某些内容。不幸的是,我没有找到一个关于模式的好例子。

我想以下排除将起作用:

--exclude-tag-all=/path/foldernotinclude/.

因为它应该匹配“目录”文件标签。

幸运的是,另一个用户将对要使用的模式发表评论。

于 2013-01-03T00:01:04.780 回答