Php phar在创建tar存档时排除目录
我想使用内置的Php phar在创建tar存档时排除目录,php,directory,tar,phar,Php,Directory,Tar,Phar,我想使用内置的PharData类在PHP脚本中创建一个tar存档 我希望tar归档文件表示一个目录,因此我想到使用PharData::buildFromDirectory()来实现这一点。不幸的是,该目录也是一个git存储库,其中有一个比目录本身大得多的.git文件夹 因此,我需要从存档中删除.git目录(理想情况下也是.idea目录…),因为它会不必要地膨胀 到目前为止我所尝试的: 使用正则表达式筛选出目录: $archive->buildFromDirectory("..", "@^
PharData
类在PHP脚本中创建一个tar存档
我希望tar归档文件表示一个目录,因此我想到使用PharData::buildFromDirectory()
来实现这一点。不幸的是,该目录也是一个git存储库,其中有一个比目录本身大得多的.git
文件夹
因此,我需要从存档中删除.git
目录(理想情况下也是.idea
目录…),因为它会不必要地膨胀
到目前为止我所尝试的:
- 使用正则表达式筛选出目录:
这没用$archive->buildFromDirectory("..", "@^(?!.git).+@");
- 使用
,但不幸的是,这似乎只删除了一个文件而不是一个目录PharData::delete()
那么,做我想做的事情的最佳方式是什么 正则表达式的问题在于,文件的完整路径得到匹配,而不仅仅是目录(basename)。因此,您无法过滤掉
.git
目录本身
使用字符类求反([^.][^g][^i][^t]
)也没有帮助,因为路径的某些部分确实与此正则表达式匹配,因此路径仍然匹配
这意味着您只能使用正匹配
您可以使用,然后使用筛选出文件。
在这里,您可以定义自己的匹配方法来正确过滤。我看到了以下使用负前瞻排除git目录的方法:
$phar->buildFromDirectory(uuu DIR_uuu,'/^((?!\.git)。*$/')代码>