Components | All | New | MacOS | Windows | Linux | iOS | ||||
Examples | Mac & Win | Server | Client | Guides | Statistic | FMM | Blog | Deprecated | Old |
Archive.Compress
Compresses files to an archive.
Component | Version | macOS | Windows | Linux | Server | iOS SDK |
Archive | 9.0 | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes |
Parameters
Parameter | Description | Example | Flags |
---|---|---|---|
Format | The format to use. Formats: ar, arbsd, argnu, arsvr4, bsdtar, cd9660, cpio, gnutar, iso, iso9660, mtree, mtree-classic, newc, odc, oldtar, pax, paxr, posix, raw, rpax, shar, shardump, ustar, v7tar, v7, warc, xar, zip. |
"zip" | |
Filter | The filter to use. For zip format can be store or deflate. Filters: b64encode, bzip2, compress, grzip, gzip, lrzip, lz4, lzip, lzma, lzop, uuencode, xz, zstd. Not all filters can be combined with all formats. |
"deflate" | |
Destination | The native file path to the destination archive. Or file name for container. |
"C:\test.zip" | |
BasePath | The bath path to the folder where to look for files. | "C:\test" | |
List | the list of files and folders to add to archive. If empty, we compress base path as item. |
"test.txt" | Optional |
Options | The options to pass to writer. This is a comma-separated list of options. Option names can be prefixed with module name. Sample options: compression-level=9 zip:encryption=zipcrypt zip:encryption=aes128 zip:encryption=aes256 zip64 gzip:compression-level=9 hdrcharset=UTF-8 |
"zip:encryption=zipcrypt" | Optional |
Password | The passphrase to use for password protection. | "secret" | Optional |
Result
Returns OK, container or error.
Description
Compresses files to an archive.Supports various compression algorithms and encryption.
The archive usually should not contain the absolute paths of the files, so we need a base path and relative to that base path the list of files and folders to zip.
Examples
Compression examples:
# list of files in the folder to archive
Set Variable [ $list ; Value: "minitar.c¶simplebar.rbp¶test/other.txt" ]
# write zip file with password
Set Variable [ $r ; Value: MBS( "Archive.Compress"; "zip"; "deflate"; "/Users/cs/Desktop/minitar.zip"; "/Users/cs/Desktop/"; $list; "zip:encryption=zipcrypt"; "secret password" ) ]
# Write bzip2 compress tar file:
Set Variable [ $r ; Value: MBS( "Archive.Compress"; "ustar"; "bzip2"; "/Users/cs/Desktop/minitar.tar"; "/Users/cs/Desktop/") ]
# and write zip with aes encryption to container file:
Set Variable [ $r ; Value: MBS( "Archive.Compress"; "zip"; "deflate"; "minitar.zip"; "/Users/cs/Desktop/"; $list; "zip:encryption=aes128"; "secret password" ) ]
Set Field [ Archive Read::Container ; $r ]
Compress with UTF-8 file names:
MBS( "Archive.Compress"; "zip"; "deflate"; "C:\Users\Christian\Desktop\test.zip"; "C:\Users\Christian\Desktop"; "Bücher"; "hdrcharset=UTF-8" )
Compress content of logs folder on server:
# the path to logs folder
Set Variable [ $folder ; Value: "/opt/FileMaker/FileMaker Server/Logs" ]
# query list of files
Set Variable [ $list ; Value: MBS( "Files.List"; $folder) ]
# where to store the zip file:
Set Variable [ $ZipPath ; Value: MBS( "Path.AddPathComponent"; "/tmp"; "test.zip") ]
# and now zip these files:
Set Variable [ $archive ; Value: MBS( "Archive.Compress"; "zip"; "deflate"; $ZipPath; $folder; $list; "compression-level=9¶hdrcharset=UTF-8") ]
Compress a file in a let statement:
Let([
filename = "test.jpg";
SourcePath = MBS("Folders.UserDesktop");
DestPath = MBS("Path.AddPathComponent"; MBS("Folders.UserTemporary"); "test.zip");
r = MBS( "Archive.Compress"; "zip"; "deflate"; DestPath; SourcePath; filename; "zip:encryption=zipcrypt¶hdrcharset=UTF-8"; "12345" )
];r)
Compress with hashed password:
Let([
filename = "test.jpg";
password = MBS( "Hash.SHA256"; "testing" ) ;
SourcePath = MBS("Folders.UserDesktop");
DestPath = MBS("Path.AddPathComponent"; MBS("Folders.UserTemporary"); "test.zip");
r = MBS( "Archive.Compress"; "zip"; "deflate"; DestPath; SourcePath; filename; "zip:encryption=zipcrypt¶hdrcharset=UTF-8"; password)
];r)
Compress whole folder:
MBS( "Archive.Compress"; "zip"; "deflate"; "/Users/cs/Temp.zip"; "/Users/cs"; "Temp"; "hdrcharset=UTF-8" )
See also
- Archive.CompressContainer
- Archive.CompressText
- Files.List
- Folders.UserDesktop
- Folders.UserTemporary
- Hash.SHA256
- Path.AddPathComponent
- ZipFile.CompressFiles
- ZipFile.CreateFile
- ZipFile.Open
Release notes
- Version 15.2
- Fixed Archive.Compress to better compress folder itself if file list is empty.
- Improved Archive.Compress to compress folder itself if file list is empty.
- Version 14.3
- Added Archive.CompressText function.
- Version 11.1
- Added Archive.CompressContainer function.
- Version 9.1
- Fixed bug with Archive.Compress not writing file on Windows.
Blog Entries
- MBS FileMaker Plugin, version 15.2pr3
- MBS FileMaker Plugin, version 15.2pr1
- MBS FileMaker Plugin, version 9.1pr4
FileMaker Magazin
This function checks for a license.
Created 17th December 2018, last changed 25th March 2025
