---
title: "The Different Zip Engines"
url: https://phatdev.net/en/docs/sl-migrations/how-to-work-with-the-different-zip-engines
lang: en
updated: 2026-10-20
alternate:
  vi: https://phatdev.net/docs/sl-migrations/how-to-work-with-the-different-zip-engines
markdown: https://phatdev.net/en/docs/sl-migrations/how-to-work-with-the-different-zip-engines.md
---

# The Different Zip Engines

Part of the doc set: [SL Migrations](https://phatdev.net/en/docs/sl-migrations.md)

> Compare ZipArchive / DupArchive / Shell Zip and choose the right engine.

## Zip Engines

The plugin supports 3 engines for building the archive. Each has its own pros and cons.

## ZipArchive (PHP native)

**Pros**:
- Built into PHP, no system command needed
- Standard `.zip` format - opens with any tool

**Cons**:
- Memory heavy - reads many files into RAM
- Archive size limit of roughly 2-4 GB depending on the build
- Slow on sites with many small files

**When to use**: small sites (<2 GB), shared hosting that does not allow `exec()`.

## DupArchive (the plugin's own)

**Pros**:
- Chunked - does not load the whole archive into RAM
- Supports unlimited size
- Can resume after a timeout
- Verifies integrity automatically

**Cons**:
- Its own `.daf` format - can only be extracted with the installer (this build ships no command-line extraction tool)
- Slower than ZipArchive for very small sites

**When to use**: **the default for most sites**. Especially sites > 2 GB.

## Shell Exec (calls the system `zip`)

**Pros**:
- Fastest for large sites with many files
- Minimal memory (the zip CLI streams)
- Standard `.zip` format

**Cons**:
- Requires the PHP function `exec()` to be enabled
- Requires the `zip` binary to be installed on the server
- Does not support resume

**When to use**: a dedicated VPS where you have root, sites > 5 GB.

## Change the engine

**SL Migrations → Settings → Package → Archive Engine**:

| Engine | Setting |
|---|---|
| ZipArchive | `ZipArchive` |
| DupArchive | `DupArchive` (default) |
| Shell Exec | `ShellExec` |

The plugin falls back automatically if the chosen engine is unavailable (for example ShellExec when the server has no `zip`).

## Verify which engine is in use

Open the build log in **Packages → click the package → View Log**. Look for the line:

```
ARCHIVE Type=DUP Mode=DupArchive
```

`Mode` tells you which engine is in use.

## See also

- [The DAF file format](https://phatdev.net/en/docs/sl-migrations/how-to-work-with-daf-files-and-the-duparchive-extraction-tool)
- [File I/O issues](https://phatdev.net/en/docs/sl-migrations/how-to-resolve-file-io-related-build-issues)
