15
15
use RecursiveDirectoryIterator ;
16
16
use RecursiveIteratorIterator ;
17
17
18
+ /**
19
+ * Class to work with tar archives
20
+ */
18
21
class Tar extends \Magento \Framework \Archive \Tar
19
22
{
20
23
/**
@@ -25,8 +28,7 @@ class Tar extends \Magento\Framework\Archive\Tar
25
28
protected $ _skipFiles = [];
26
29
27
30
/**
28
- * Overridden \Magento\Framework\Archive\Tar::_createTar method that does the same actions as it's parent but
29
- * filters files using \Magento\Framework\Backup\Filesystem\Iterator\Filter
31
+ * Method same as it's parent but filters files using \Magento\Framework\Backup\Filesystem\Iterator\Filter
30
32
*
31
33
* @param bool $skipRoot
32
34
* @param bool $finalize
@@ -38,9 +40,8 @@ class Tar extends \Magento\Framework\Archive\Tar
38
40
protected function _createTar ($ skipRoot = false , $ finalize = false )
39
41
{
40
42
$ path = $ this ->_getCurrentFile ();
41
-
42
43
$ filesystemIterator = new RecursiveIteratorIterator (
43
- new RecursiveDirectoryIterator ($ path ),
44
+ new RecursiveDirectoryIterator ($ path, RecursiveDirectoryIterator:: FOLLOW_SYMLINKS ),
44
45
RecursiveIteratorIterator::SELF_FIRST
45
46
);
46
47
@@ -50,6 +51,10 @@ protected function _createTar($skipRoot = false, $finalize = false)
50
51
);
51
52
52
53
foreach ($ iterator as $ item ) {
54
+ // exclude symlinks to do not get duplicates after follow symlinks in RecursiveDirectoryIterator
55
+ if ($ item ->isLink ()) {
56
+ continue ;
57
+ }
53
58
$ this ->_setCurrentFile ($ item ->getPathname ());
54
59
$ this ->_packAndWriteCurrentFile ();
55
60
}
0 commit comments