Star is the fastest tar archiver for UNIX Star has many improvements compared to other tar implementations (including gnu tar). See below for a short description of the highlight of star. Star is located on: ftp://ftp.berlios.de/pub/star Since Summer 2012, star offers more than 30 years of maintained service Note that this project includes a stripped down version of libschily. Do not try to link star dynamically against this library. If you like to link dynamically, get the "schily" project bundle from: ftp://ftp.berlios.de/pub/schily/ that includes a complete libschily. Changes since star-1.5.2: /*--------------------------------------------------------------------------*/ - The Schily makefilesystem now supports CC++_COM for all platforms to allow to overwrite the low level command for the C++-compiler. - Fixed a problem in star with "star --xattr -find relative_path ..." Thanks to Philip Spencer for the patch. - libschily::fexecv() now allows to use the parameter "ac" with the value -1 to indicate that the arg count is to be determined by the NULL pointer at the end of the arg list. - include/schily/stat.h now contains macros to set the nanoseconds in timestamps in a OS independent way - New autoconf tests for sys/capability.h and cap_*() functions from Linux -lcap WARNING: If you do not see this: checking for sys/capability.h... yes ... checking for cap_get_proc in -lcap... yes checking for cap_get_proc... yes checking for cap_set_proc... yes checking for cap_set_flag... yes checking for cap_clear_flag... yes your Linux installation is insecure in case you ever use the command "setcap" to set up file capabilities for executable commands. Note that cdrtools (as any other command) need to be capabylity aware in order to avoid security leaks with enhanced privileges. In most cases, privileges are only needed for a very limited set of operations. If cdrtools (cdrecord, cdda2wav, readcd) are installed suid-root, the functions to control privileges are in the basic set of supported functions and thus there is no problem for any program to control it's privileges - if they have been obtained via suid root, you are on a secure system. If you are however on an incomplete installation, that supports to raise privileges via fcaps but that does not include developer support for caps, the programs get the privileges without being able to know about the additional privileges and thus keep them because they cannot control them. WARNING: If you are on a Linux system that includes support for fcaps (this is seems to be true for all newer systems with Linux >= 2.6.24) and there is no development support for capabilities in the base system, you are on an inherently insecure system that allows to compile and set up programs with enhanced privileges that cannot control them. In such a case, try to educate the security manager for the related Linux distribution. Note that you may turn your private installation into a secure installation by installing development support for libcap. - Allow to compile without Linux libcap using "smake COPTX=-DNO_LINUX_CAPS LIB_CAP=" - The autofconf tests for broken Linux kernel headers now avoid to warn for /usr/src/linux/include if this directory is missing. - include/schily/priv.h now includes sys/capabilitiy.h if available. - Trying to support suid-root-less installation of librmt users on Linux. librmt now understands that a non-root program may be able to create sockets for a privileged port. - WARNING: the include structure of include/schily/*.h and several sources has been restructured to cause less warnings with older OS platforms. If you see any new problem on your personal platform, please report. - New includefiles: schily/poll.h Support poll() schily/stdarg.h An alias to schily/varargs.h (but using the std name) schily/sunos4_proto.h Missing prototypes for SunOS-4.x to make gcc quiet schily/timeb.h Needed for users of ftime() - Many minor bug-fixes for the files include/schily/*.h - Added #include to libdeflt - Added #include to libschily/fnmatch.c - Added #include to libedc - Updated README.compile: Some typo patches from Jan Engelhardt Documented the "LINKMODE=" macro to explain how to create dynamically linked bynaries. - include/schily/archconf.h now defines __SUNOS5 for easier coding - include/schily/priv.h now defines platform independent fine grained privileges - include/schily/stdio.h now implements #ifndef NO_SCHILY_STDIO_H to avoid including stdio.h from wchar.h - The Schily Makefilesystem no longer uses CC= for internal tasks. People who now set $CC to a different value will fail in a similar way as they would fail with other build systems. - Allow "static" compilation (a compilation that does not use the dynamic defines from the Schily Makefilesystem) on Linux x86 - Make sure that all schily include files except the primary wrappers include schily/*.h instead of including the system include files directly. - Added automatic support for ARMv5 and ARMv6. This makes compilation on the RaspberryPI also possible with the non-automake aware gmake. - Allow "static" compilation (a compilation that does not use the dynamic defines from the Schily Makefilesystem) on Linux ARMv6 (which is used by RaspberryPI). - Star (spax) no longer extracts files with the original UID/GID if run by root unless the option -po or -pe was in use. Thanks to a hint from Pavel Raiskup - Many sources have been modified to deal __CYGWIN32__ like __CYGWIN__ This is neded as newer Cygwin versions that run in 64 Bit mode do no longer define __CYGWIN32__ but __CYGWIN__ - Support for NT-6.2 (Win-8) and NT-6.3 (Win-8.1) was aded to the makefile system - The makefile system now includes support for ppc64-linux-*cc to allow to compile using non automake-aware make programs like gmake. - New option -xcopy to star is an alias for -copy -sparse -acl - "star" and "mt" now need libcap on Linux as librmt is aware of Linux capabilities - "defltsect" was added as exported global function to libdeflt. - libfind now calls closedir() with -empty even on empty directories. - New autoconf test on whether includes struct timespec - New autoconf tests check whether some functions (such as clock_gettime()) are in libc or need a separate library - New: struct timespec in schily/time.h is granted to exist on all platforms - New functions getnstimeofday() and setnstimeofday() have been added to libschily. - Star now supports to extract time stamps with nanosecond granularity on platforms that support utimensat(). - Star now also supports to extract time stamps for symlinks using utimensat(AT_FDCWD, name, tp, AT_SYMLINK_NOFOLLOW). Note that star could (on some platforms) also permit to set the file permission for symlinks using fchmodat() but this is already done using umask() since a long time and the only platform that is known to support different permissions on symlinks seems to be HP-UX. On a recent Solaris, you will not be able to set the file permissions for symlinks. - Star was converted to be completely timespec based. This offers nanosecond granularity for all times on platforms that support a nanosecond clock. - Star now may be told to modify the path name (in case of -s/o/n/ or interactive change -w) before the time stamp is compared to existing files in the filesystem. This is done by using the new option -uncond-rename /*--------------------------------------------------------------------------*/ TODO: - Complete the man page for spax - Implement multi volume continuation headers that work for files > 8 GB where the last tar header (a POSIX.1-2001 'x'-header) was split across volumes. In this case, if only POSIX compliant TAR features are allowed, the extracting TAR would not be able to correctly skip the large file as it does not know the content of the POSIX.1-2001 'x'-header. For this reason, later star versions need to implement a method to create multi volume continuation (skip) headers that include the size of the split POSIX.1-2001 'x'-header and the size of the following large file. Note that even with this method we would need a new method (different from the current bitmap) to deal with multi volume continuation headers for split files in case the FIFO in star may be larger than 8 GB. - Implement a autoconf extension to to deal with Linux with XFS where not all ACL handling is inside -lacl ??? is this still true? Revision history (short) 1982 First version on UNOS (extract only) 1985 Port to UNIX (fully functional version) 1985 Added pre Posix method of handling special files/devices 1986 First experiments with fifo as external process. 1993 Remote tape access 1993 diff option 1994 Fifo with shared memory integrated into star 1994 Very long filenames and sparse files 1994 Gnutar and Ustar(Posix.1-1988) handling added 1994 Xstar format (extended Posix.1-1988) defined and introduced 1995 Ported to many platforms 1999 Support for Win32 (Cygwin) 1999 base 256 support to overcome limitation with octal fields 2001 Large file support 2001 Support for POSIX.1-2001 extended headers 2001 Support for ACLs in POSIX.1-2001 extended headers 2002 Support for extended file flags in POSIX.1-2001 extended headers 2002 Support for extended inode meta data and meta files 2003 New program tartest allows to verify POSIX.1-1990 tar archive compliance 2003 Error control added to allow to selectively ignore error contitions 2003 ED like pattern based file name substitution with -s '/from/to/[gp]' 2003 Efficient built in -copy mode 2003 Basic support for incremental dumps (incremental restore not yet ready) 2003 CPIO archive support 2003 New command 'pax/spax' for POSIX.1 command line compatibility. 2003 New command 'cpio/scpio' for SUSv2 command line compatibility. 2003 New command 'suntar' for Solaris command line compatibility. 2003 New command 'gnutar' for GNU tar command line compatibility. 2003 Support for reliable multi-volume archives with media size detection 2004 Options -copyhardlinks/-copysymlinks/-copydlinks allow to extract links on platforms that do not support links 2005 Support for full and incremental dumps and restores. 2005 Support for cumulative incremental dumps and restores. 2005 The find(1) code has been integrated via libfind and allows to use find on archives 2005 Changed license from GPL to CDDL 2005 Added support for a reliable sparse file interface in Solaris using SEEK_HOLE/SEEK_DATA 2005 Added support for reliable multi volume handling 2006 Added support for sparse files that end in a hole 2007 Added new option -install that allows to overwrite live program text (install on a running system) 2007 Added new option -xmeta to extract meta data only Supported platforms: Virtually any! Known to work: SunOS 4.x, Solaris (SunOS 5.x), Linux, HP-UX, DG/UX, IRIX, AIX, FreeBSD, NetBSD, OpenBSD, OSF-1, True-64, QNX, BeOS, Apollo Domain/OS, Next-STep, OS/2, SCO-openserver, SCO-unixware, Caldera OpenUnix, Cygwin (Win32), Sony NewsOS, BSDi (BSD/OS), QNX, Apple Rhapsody, MacOS X, AmigaOS, GNU Hurd Joerg ------------------------------------------------------------- Star is the fastest known implementation of a tar archiver. Star development started 1982, the first complete implementation has been done in 1985. I never did my backups with other tools than star. Its main advantages over other tar implementations are: fifo - keeps the tape streaming. This gives you faster backups than you can achieve with ufsdump, if the size of the filesystem is > 1 GByte. remote tape support - a fast RMT implementation that has no probems to saturate a 100 Mb/s network. accurate sparse files - star is able to reproduce holes in sparse files accurately if the OS includes the needed support functions. This is currently true for Solaris-2.3 to Solaris-2.5.1 pattern matcher - for a convenient user interface (see manual page for more details). To archive/extract a subset of files. sophisticated diff - user tailorable interface for comparing tar archives against file trees This is one of the most interesting parts of the star implementation. no namelen limitation - Pathnames up to 1024 Bytes may be archived. (The same limitation applies to linknames) This limit may be expanded in future without changing the method to record long names. deals with all 3 times - stores/restores all 3 times of a file (even creation time) With POSIX.1-2001 the times are in nanosecond granularity. Star may reset access time after doing backup. On Solaris this can be done without changing the ctime. does not clobber files - more recent copies on disk will not be clobbered from tape This may be the main advantage over other tar implementations. This allows automatically repairing of corruptions after a crash & fsck (Check for differences after doing this with the diff option). automatic byte swap - star automatically detects swapped archives and transparently reads them the right way automatic format detect - star automatically detects several common archive formats and adopts to them. Supported archive types are: Old tar, gnu tar, ansi tar, star, POSIX.1-2001 PAX, Sun's Solaris tar. automatic compression detect - star automatically detects whether the archive is compressed. If it has been compressed with a compression program that is compatible to decompression with "gzip" or "bzip2", star automatically activates decompression. fully ansi compatible - Star is fully ANSI/Posix 1003.1 compatible. See README.otherbugs for a complete description of bugs found in other tar implementations. Star is the first tar implementation that supports POSIX.1-2001. support for ACLs and file flags - star supports Access Control Lists and extended file flags (as found on FreeBSD and Linux). Support to archive and restore other file properties may be easily added. support for all inode metadata - star supports to put all inode metadata on the archive. This allows future versions of star to perform true incremental dumps. sophisticated error control - allows to tell star which error types should be ignored for wich file name pattern. This allows to write backup scripts that give no error messages for all problems that are tolerable (e.g. growing log files). ED like filename substitution - star supports automated pattern rule based file name substitution as documented for 'pax'. A fast built in -copy mode - allows to make fast and accurate copies and directory tree comparisons. Integrated find(1) code - allows many interesting new features that would be possible with a separate find call. Have a look at the manual page, it is included in the distribution.