自动压缩文件夹

时间:2013-01-02 23:48:29

标签: php

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

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

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

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

来自焦油人:

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

所以你会得到:

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

你可以保留v(详细),因为你没有看到你的代码被执行。

答案 2 :(得分:0)

您可以在手册中排除--exclude-tag-all PATTERN long选项中包含的内容。 不幸的是,我没有找到关于模式的好例子。

我猜以下排除将起作用:

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

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

幸运的是,另一位用户会对使用patern进行评论。