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
MBS( "Archive.Compress"; Format; Filter; Destination; BasePath; List { ; Options; Password } )   More

Parameters

Parameter Description Example Flags
Format The format to use.
Formats: 7zip, 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 destinaton 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. "test.txt"
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)

See also

Release notes

Blog Entries

This function checks for a license.

Created 17th December 2018, last changed 13th December 2023


Archive.Close - Archive.CompressContainer