自动压缩文件夹


Automatically compress folders

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

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

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

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

From tar man:

 tar --exclude='/path/to/folder/bad' 
所以你会得到:
system('tar -czpf --exclude='/path/to/folder/bad'  backup.tar.gz /path/to/folder');

您可以不使用v (verbose),因为您没有看到正在执行的代码。

您可以使用——exclude-tag-all PATTERN long选项从已包含的内容中排除。不幸的是,我没有找到一个关于模式的好例子。

我想下面的排除将工作:

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

因为它应该匹配"directory"文件标签。

幸运的是,另一个用户会评论使用的模式。