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 <pspencer@fields.utoronto.ca> 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 <schily/libport.h> to libdeflt

-	Added #include <schily/libport.h> to libschily/fnmatch.c 

-	Added #include <schily/libport.h> to libedc

-	Updated README.compile:

	Some typo patches from Jan Engelhardt <jengelh@inai.de>

	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 <praiskup@redhat.com>

-	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 <time.h> 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.

