diff options
Diffstat (limited to 'gnu/usr.bin/tar')
-rw-r--r-- | gnu/usr.bin/tar/Makefile | 23 | ||||
-rw-r--r-- | gnu/usr.bin/tar/config.h | 582 | ||||
-rw-r--r-- | gnu/usr.bin/tar/doc/Makefile | 6 | ||||
-rw-r--r-- | gnu/usr.bin/tar/localedir.h | 1 | ||||
-rw-r--r-- | gnu/usr.bin/tar/tar.1 | 573 |
5 files changed, 1185 insertions, 0 deletions
diff --git a/gnu/usr.bin/tar/Makefile b/gnu/usr.bin/tar/Makefile new file mode 100644 index 0000000..e488179 --- /dev/null +++ b/gnu/usr.bin/tar/Makefile @@ -0,0 +1,23 @@ +# $FreeBSD$ + +TARDIR= ${.CURDIR}/../../../contrib/tar +.PATH: ${TARDIR}/lib ${TARDIR}/src + +PROG= tar + +SUBDIR= doc + +# libtar SRCS +SRCS= addext.c argmatch.c backupfile.c basename.c dirname.c error.c \ + exclude.c full-write.c getdate.c getline.c getopt.c getopt1.c \ + getstr.c hash.c human.c mktime.c modechange.c prepargs.c \ + print-copyr.c quotearg.c safe-read.c save-cwd.c savedir.c unicodeio.c \ + xgetcwd.c xmalloc.c xstrdup.c xstrtoul.c xstrtoumax.c +SRCS+= buffer.c compare.c create.c delete.c extract.c incremen.c list.c \ + mangle.c misc.c names.c rtapelib.c tar.c update.c + +CFLAGS+= -DHAVE_CONFIG_H -I${.CURDIR} -I${TARDIR}/lib -I${TARDIR}/src + +NOSHARED?= YES + +.include <bsd.prog.mk> diff --git a/gnu/usr.bin/tar/config.h b/gnu/usr.bin/tar/config.h new file mode 100644 index 0000000..6e72423 --- /dev/null +++ b/gnu/usr.bin/tar/config.h @@ -0,0 +1,582 @@ +/* $FreeBSD$ */ + +#include <paths.h> + +/* config.h. Generated automatically by configure. */ +/* config.h.in. Generated automatically from configure.ac by autoheader. */ + +/* Define if the `closedir' function returns void instead of `int'. */ +/* #undef CLOSEDIR_VOID */ + +/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP + systems. This function is required for `alloca.c' support on those systems. + */ +/* #undef CRAY_STACKSEG_END */ + +/* Define if using `alloca.c'. */ +/* #undef C_ALLOCA */ + +/* Define to a string giving the full name of the default archive file. */ +#define DEFAULT_ARCHIVE _PATH_DEFTAPE + +/* Define to a number giving the default blocking size for archives. */ +#define DEFAULT_BLOCKING 20 + +/* + [Define], [to], [1], [if], [density], [may], [be], [indicated], [by], [[lmh]], [at], [end], [of], [device.] + */ +/* #undef DENSITY_LETTER */ + +/* Define to a string giving the prefix of the default device, without the + part specifying the unit and density. */ +#define DEVICE_PREFIX _PATH_DEFTAPE + +/* Define if there is a member named d_ino in the struct describing directory + headers. */ +#define D_INO_IN_DIRENT 1 + +/* Define to 1 if translation of program messages to the user's native + language is requested. */ +#define ENABLE_NLS 0 + +/* Define if you have the `alarm' function. */ +#define HAVE_ALARM 1 + +/* Define if you have `alloca', as a function or macro. */ +#define HAVE_ALLOCA 1 + +/* Define if you have <alloca.h> and it should be used (not on Ultrix). */ +/* #undef HAVE_ALLOCA_H */ + +/* Define if you have the <argz.h> header file. */ +/* #undef HAVE_ARGZ_H */ + +/* Define if you have the `clock_gettime' function. */ +#define HAVE_CLOCK_GETTIME 1 + +/* Define if backslash-a works in C strings. */ +#define HAVE_C_BACKSLASH_A 1 + +/* Define if you have the `dcgettext' function. */ +#define HAVE_DCGETTEXT 1 + +/* Define to 1 if free is declared. */ +#define HAVE_DECL_FREE 1 + +/* Define to 1 if you have the declaration of `getenv', and to 0 if you don't. + */ +#define HAVE_DECL_GETENV 1 + +/* Define to 1 if getgrgid is declared. */ +#define HAVE_DECL_GETGRGID 1 + +/* Define to 1 if getpwuid is declared. */ +#define HAVE_DECL_GETPWUID 1 + +/* Define to 1 if malloc is declared. */ +#define HAVE_DECL_MALLOC 1 + +/* Define to 1 if you have the declaration of `strerror_r', and to 0 if you + don't. */ +#define HAVE_DECL_STRERROR_R 1 + +/* Define to 1 if you have the declaration of `strtoul', and to 0 if you + don't. */ +#define HAVE_DECL_STRTOUL 1 + +/* Define to 1 if you have the declaration of `strtoull', and to 0 if you + don't. */ +#define HAVE_DECL_STRTOULL 1 + +/* Define to 1 if you have the declaration of `strtoumax', and to 0 if you + don't. */ +#define HAVE_DECL_STRTOUMAX 1 + +/* Define if you have the <dirent.h> header file, and it defines `DIR'. */ +#define HAVE_DIRENT_H 1 + +/* Define if the malloc check has been performed. */ +#define HAVE_DONE_WORKING_MALLOC_CHECK 1 + +/* Define if the realloc check has been performed. */ +#define HAVE_DONE_WORKING_REALLOC_CHECK 1 + +/* Define if you don't have `vprintf' but do have `_doprnt.' */ +/* #undef HAVE_DOPRNT */ + +/* Define if you have the `fchdir' function. */ +#define HAVE_FCHDIR 1 + +/* Define if you have the <fcntl.h> header file. */ +#define HAVE_FCNTL_H 1 + +/* Define if you have the `feof_unlocked' function. */ +/* #undef HAVE_FEOF_UNLOCKED */ + +/* Define if you have the `fgets_unlocked' function. */ +/* #undef HAVE_FGETS_UNLOCKED */ + +/* Define if your system has a working `fnmatch' function. */ +#define HAVE_FNMATCH 1 + +/* Define if you have the `fsync' function. */ +#define HAVE_FSYNC 1 + +/* Define if you have the `ftime' function. */ +/* #undef HAVE_FTIME */ + +/* Define if you have the `ftruncate' function. */ +#define HAVE_FTRUNCATE 1 + +/* Define if you have the `getcwd' function. */ +#define HAVE_GETCWD 1 + +/* Define if getcwd (NULL, 0) allocates memory for result. */ +#define HAVE_GETCWD_NULL 1 + +/* Define if you have the `getegid' function. */ +#define HAVE_GETEGID 1 + +/* Define if you have the `geteuid' function. */ +#define HAVE_GETEUID 1 + +/* Define if you have the `getgid' function. */ +#define HAVE_GETGID 1 + +/* Define if you have the `getpagesize' function. */ +#define HAVE_GETPAGESIZE 1 + +/* Define if the GNU gettext() function is already present or preinstalled. */ +#define HAVE_GETTEXT 1 + +/* Define if you have the `getuid' function. */ +#define HAVE_GETUID 1 + +/* Define if you have the iconv() function. */ +/* #undef HAVE_ICONV */ + +/* Define if you have the <inttypes.h> header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define if you have the `isascii' function. */ +#define HAVE_ISASCII 1 + +/* Define if you have the `iswprint' function. */ +/* #undef HAVE_ISWPRINT */ + +/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */ +#define HAVE_LANGINFO_CODESET 1 + +/* Define if you have the `lchown' function. */ +#define HAVE_LCHOWN 1 + +/* Define if your <locale.h> file defines LC_MESSAGES. */ +#define HAVE_LC_MESSAGES 1 + +/* Define if you have the <limits.h> header file. */ +#define HAVE_LIMITS_H 1 + +/* Define if you have the <linux/fd.h> header file. */ +/* #undef HAVE_LINUX_FD_H */ + +/* Define if you have the <locale.h> header file. */ +#define HAVE_LOCALE_H 1 + +/* Define if you have the `localtime_r' function. */ +#define HAVE_LOCALTIME_R 1 + +/* Define if you support file names longer than 14 characters. */ +#define HAVE_LONG_FILE_NAMES 1 + +/* Define if you have the long long type. */ +#define HAVE_LONG_LONG 1 + +/* Define if you have the `lstat' function. */ +#define HAVE_LSTAT 1 + +/* Define if you have the <malloc.h> header file. */ +/* #undef HAVE_MALLOC_H */ + +/* Define to 1 if mbrtowc and mbstate_t are properly declared. */ +/* #undef HAVE_MBRTOWC */ + +/* Define if you have the `mbsinit' function. */ +/* #undef HAVE_MBSINIT */ + +/* Define if you have the <memory.h> header file. */ +#define HAVE_MEMORY_H 1 + +/* Define if you have the `mempcpy' function. */ +/* #undef HAVE_MEMPCPY */ + +/* Define if you have the `memset' function. */ +#define HAVE_MEMSET 1 + +/* Define if you have the `mkfifo' function. */ +#define HAVE_MKFIFO 1 + +/* Define to 1 if the mknod function is available. */ +#define HAVE_MKNOD 1 + +/* Define if you have a working `mmap' system call. */ +#define HAVE_MMAP 1 + +/* Define if you have the `munmap' function. */ +#define HAVE_MUNMAP 1 + +/* Define if you have the `nap' function. */ +/* #undef HAVE_NAP */ + +/* Define if you have the `napms' function. */ +/* #undef HAVE_NAPMS */ + +/* Define if you have the <ndir.h> header file, and it defines `DIR'. */ +/* #undef HAVE_NDIR_H */ + +/* Define if you have the <netdb.h> header file. */ +/* #undef HAVE_NETDB_H */ + +/* Define if you have the <net/errno.h> header file. */ +/* #undef HAVE_NET_ERRNO_H */ + +/* Define if you have the <nl_types.h> header file. */ +#define HAVE_NL_TYPES_H 1 + +/* Define if you have the `pathconf' function. */ +#define HAVE_PATHCONF 1 + +/* Define if you have the `poll' function. */ +#define HAVE_POLL 1 + +/* Define if you have the <poll.h> header file. */ +#define HAVE_POLL_H 1 + +/* Define if you have the `putenv' function. */ +#define HAVE_PUTENV 1 + +/* Define if you have the `readlink' function. */ +#define HAVE_READLINK 1 + +/* Define if you have the `rename' function. */ +#define HAVE_RENAME 1 + +/* Define if you have the `rmdir' function. */ +#define HAVE_RMDIR 1 + +/* Define if you have the `select' function. */ +#define HAVE_SELECT 1 + +/* Define if you have the `setenv' function. */ +#define HAVE_SETENV 1 + +/* Define if you have the `setlocale' function. */ +#define HAVE_SETLOCALE 1 + +/* Define if you have the <sgtty.h> header file. */ +#define HAVE_SGTTY_H 1 + +/* Define if you have the <stdbool.h> header file. */ +#define HAVE_STDBOOL_H 1 + +/* Define if you have the <stddef.h> header file. */ +#define HAVE_STDDEF_H 1 + +/* Define if you have the <stdint.h> header file. */ +#define HAVE_STDINT_H 1 + +/* Define if you have the <stdlib.h> header file. */ +#define HAVE_STDLIB_H 1 + +/* Define if you have the `stpcpy' function. */ +/* #undef HAVE_STPCPY */ + +/* Define if you have the `strcasecmp' function. */ +#define HAVE_STRCASECMP 1 + +/* Define if you have the `strchr' function. */ +#define HAVE_STRCHR 1 + +/* Define if you have the `strdup' function. */ +#define HAVE_STRDUP 1 + +/* Define if you have the `strerror' function. */ +#define HAVE_STRERROR 1 + +/* Define if you have the `strerror_r' function. */ +#define HAVE_STRERROR_R 1 + +/* Define if you have the <strings.h> header file. */ +#define HAVE_STRINGS_H 1 + +/* Define if you have the <string.h> header file. */ +#define HAVE_STRING_H 1 + +/* Define if you have the `strncasecmp' function. */ +#define HAVE_STRNCASECMP 1 + +/* Define if you have the <stropts.h> header file. */ +/* #undef HAVE_STROPTS_H */ + +/* Define if you have the `strstr' function. */ +#define HAVE_STRSTR 1 + +/* Define if you have the `strtol' function. */ +#define HAVE_STRTOL 1 + +/* Define if you have the `strtoul' function. */ +#define HAVE_STRTOUL 1 + +/* Define if you have the `strtoull' function. */ +/* #undef HAVE_STRTOULL */ + +/* Define if you have the `strtoumax' function. */ +#define HAVE_STRTOUMAX 1 + +/* Define if `st_blksize' is member of `struct stat'. */ +#define HAVE_STRUCT_STAT_ST_BLKSIZE 1 + +/* Define if `st_blocks' is member of `struct stat'. */ +#define HAVE_STRUCT_STAT_ST_BLOCKS 1 + +/* Define if `tm_zone' is member of `struct tm'. */ +#define HAVE_STRUCT_TM_TM_ZONE 1 + +/* Define if your `struct stat' has `st_blksize'. Deprecated, use + `HAVE_STRUCT_STAT_ST_BLKSIZE' instead. */ +#define HAVE_ST_BLKSIZE 1 + +/* Define if your `struct stat' has `st_blocks'. Deprecated, use + `HAVE_STRUCT_STAT_ST_BLOCKS' instead. */ +#define HAVE_ST_BLOCKS 1 + +/* Define if struct stat has a char st_fstype[] member. */ +/* #undef HAVE_ST_FSTYPE_STRING */ + +/* Define if you have the `symlink' function. */ +#define HAVE_SYMLINK 1 + +/* Define if you have the <sys/buf.h> header file. */ +#define HAVE_SYS_BUF_H 1 + +/* Define if you have the <sys/device.h> header file. */ +/* #undef HAVE_SYS_DEVICE_H */ + +/* Define if you have the <sys/dir.h> header file, and it defines `DIR'. */ +/* #undef HAVE_SYS_DIR_H */ + +/* Define if you have the <sys/gentape.h> header file. */ +/* #undef HAVE_SYS_GENTAPE_H */ + +/* Define if you have the <sys/inet.h> header file. */ +/* #undef HAVE_SYS_INET_H */ + +/* Define if you have the <sys/ioccom.h> header file. */ +#define HAVE_SYS_IOCCOM_H 1 + +/* Define if you have the <sys/io/trioctl.h> header file. */ +/* #undef HAVE_SYS_IO_TRIOCTL_H */ + +/* Define if you have the <sys/mtio.h> header file. */ +#define HAVE_SYS_MTIO_H 1 + +/* Define if you have the <sys/ndir.h> header file, and it defines `DIR'. */ +/* #undef HAVE_SYS_NDIR_H */ + +/* Define if you have the <sys/param.h> header file. */ +#define HAVE_SYS_PARAM_H 1 + +/* Define if you have the <sys/stat.h> header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define if you have the <sys/tape.h> header file. */ +/* #undef HAVE_SYS_TAPE_H */ + +/* Define if you have the <sys/timeb.h> header file. */ +#define HAVE_SYS_TIMEB_H 1 + +/* Define if you have the <sys/time.h> header file. */ +#define HAVE_SYS_TIME_H 1 + +/* Define if you have the <sys/tprintf.h> header file. */ +/* #undef HAVE_SYS_TPRINTF_H */ + +/* Define if you have the <sys/types.h> header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define if you have <sys/wait.h> that is POSIX.1 compatible. */ +#define HAVE_SYS_WAIT_H 1 + +/* Define if your `struct tm' has `tm_zone'. Deprecated, use + `HAVE_STRUCT_TM_TM_ZONE' instead. */ +#define HAVE_TM_ZONE 1 + +/* Define if you have the `tsearch' function. */ +#define HAVE_TSEARCH 1 + +/* Define if you don't have `tm_zone' but do have the external array `tzname'. + */ +/* #undef HAVE_TZNAME */ + +/* Define if you have the <unistd.h> header file. */ +#define HAVE_UNISTD_H 1 + +/* Define if you have the unsigned long long type. */ +#define HAVE_UNSIGNED_LONG_LONG 1 + +/* Define if you have the `usleep' function. */ +#define HAVE_USLEEP 1 + +/* Define to 1 if utime.h exists and declares struct utimbuf. */ +#define HAVE_UTIME_H 1 + +/* Define if you have the `vprintf' function. */ +#define HAVE_VPRINTF 1 + +/* Define if you have the `waitpid' function. */ +#define HAVE_WAITPID 1 + +/* Define if you have the <wchar.h> header file. */ +#define HAVE_WCHAR_H 1 + +/* Define if you have the <wctype.h> header file. */ +#define HAVE_WCTYPE_H 1 + +/* Define to 1 if `strerror_r' returns a string. */ +/* #undef HAVE_WORKING_STRERROR_R */ + +/* Define if you have the `__argz_count' function. */ +/* #undef HAVE___ARGZ_COUNT */ + +/* Define if you have the `__argz_next' function. */ +/* #undef HAVE___ARGZ_NEXT */ + +/* Define if you have the `__argz_stringify' function. */ +/* #undef HAVE___ARGZ_STRINGIFY */ + +/* Define as const if the declaration of iconv() needs const. */ +/* #undef ICONV_CONST */ + +/* Define if `major', `minor', and `makedev' are declared in <mkdev.h>. */ +/* #undef MAJOR_IN_MKDEV */ + +/* Define if `major', `minor', and `makedev' are declared in <sysmacros.h>. */ +/* #undef MAJOR_IN_SYSMACROS */ + +/* Define to mt_model (v.g., for DG/UX), else to mt_type. */ +#define MTIO_CHECK_FIELD mt_type + +/* Name of package */ +#define PACKAGE "tar" + +/* Define if the C compiler supports function prototypes. */ +#define PROTOTYPES 1 + +/* Define to the full path of your rsh, if any. */ +#define REMOTE_SHELL _PATH_RSH + +/* Define as the return type of signal handlers (`int' or `void'). */ +#define RETSIGTYPE void + +/* If using the C implementation of alloca, define if you know the + direction of stack growth for your system; otherwise it will be + automatically deduced at run-time. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown */ +/* #undef STACK_DIRECTION */ + +/* Define if the `S_IS*' macros in <sys/stat.h> do not work properly. */ +/* #undef STAT_MACROS_BROKEN */ + +/* Define if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Define if you can safely include both <sys/time.h> and <time.h>. */ +#define TIME_WITH_SYS_TIME 1 + +/* Define if your <sys/time.h> declares `struct tm'. */ +/* #undef TM_IN_SYS_TIME */ + +/* Define to 1 if using the included libintl implementation. */ +/* #undef USE_INCLUDED_LIBINTL */ + +/* Version number of package */ +#define VERSION "1.13.25" + +/* Define if on AIX 3. + System headers sometimes define this. + We just want to avoid a redefinition error message. */ +#ifndef _ALL_SOURCE +/* # undef _ALL_SOURCE */ +#endif + +/* Number of bits in a file offset, on hosts where this is settable. */ +/* #undef _FILE_OFFSET_BITS */ + +/* Define unconditionally for setting a GNU environment. */ +#define _GNU_SOURCE 1 + +/* Define for large files, on AIX-style hosts. */ +/* #undef _LARGE_FILES */ + +/* Define if on MINIX. */ +/* #undef _MINIX */ + +/* Define if the system does not provide POSIX.1 features except with this + defined. */ +/* #undef _POSIX_1_SOURCE */ + +/* Define if you need to in order for `stat' and other things to work. */ +/* #undef _POSIX_SOURCE */ + +/* Define to empty if `const' does not conform to ANSI C. */ +/* #undef const */ + +/* Define to `int' if <sys/types.h> doesn't define. */ +/* #undef gid_t */ + +/* Define as `__inline' if that's what the C compiler calls it, or to nothing + if it is not supported. */ +/* #undef inline */ + +/* Define to widest signed type if <inttypes.h> doesn't define. */ +/* #undef intmax_t */ + +/* Type of major device numbers. */ +#define major_t int + +/* Define to rpl_malloc if the replacement function should be used. */ +/* #undef malloc */ + +/* Define to a type if <wchar.h> does not define. */ +/* #undef mbstate_t */ + +/* Type of minor device numbers. */ +#define minor_t int + +/* Define to rpl_mktime if the replacement function should be used. */ +#define mktime rpl_mktime + +/* Define to `int' if <sys/types.h> does not define. */ +/* #undef mode_t */ + +/* Define to `long' if <sys/types.h> does not define. */ +/* #undef off_t */ + +/* Define to `int' if <sys/types.h> does not define. */ +/* #undef pid_t */ + +/* Define to rpl_realloc if the replacement function should be used. */ +/* #undef realloc */ + +/* Define to `unsigned' if <sys/types.h> does not define. */ +/* #undef size_t */ + +/* Type of sizes or error indications. */ +/* #undef ssize_t */ + +/* Define to `int' if <sys/types.h> doesn't define. */ +/* #undef uid_t */ + +/* Define to widest unsigned type if <inttypes.h> doesn't define. */ +/* #undef uintmax_t */ diff --git a/gnu/usr.bin/tar/doc/Makefile b/gnu/usr.bin/tar/doc/Makefile new file mode 100644 index 0000000..2d2657d --- /dev/null +++ b/gnu/usr.bin/tar/doc/Makefile @@ -0,0 +1,6 @@ +# $FreeBSD$ + +INFO= tar +SRCDIR= ${.CURDIR}/../../../../contrib/tar/doc + +.include <bsd.info.mk> diff --git a/gnu/usr.bin/tar/localedir.h b/gnu/usr.bin/tar/localedir.h new file mode 100644 index 0000000..da23dbe --- /dev/null +++ b/gnu/usr.bin/tar/localedir.h @@ -0,0 +1 @@ +/* $FreeBSD$ */ diff --git a/gnu/usr.bin/tar/tar.1 b/gnu/usr.bin/tar/tar.1 new file mode 100644 index 0000000..3cc2ea7 --- /dev/null +++ b/gnu/usr.bin/tar/tar.1 @@ -0,0 +1,573 @@ +.\" Copyright (c) 1991, 1992, 1993 Free Software Foundation -*- nroff -*- +.\" See /usr/src/gnu/COPYING for conditions of redistribution +.\" +.\" Written by John F. Woods <jfw@jfwhome.funhouse.com> +.\" Updated by Robert Eckardt <roberte@mep.ruhr-uni-bochum.de> +.\" +.\" $FreeBSD$ +.\" +.Dd December 23, 2000 +.Os +.Dt TAR 1 +.Sh NAME +.Nm tar +.Nd "tape archiver; manipulate ""tar"" archive files" +.Sh SYNOPSIS +.Nm +.Op Oo Fl Oc Ns Ar bundled-options Ar Args +.Op Ar gnu-style-flags +.Op Ar filenames | Fl C Ar directory-name +.Ar ... +.Sh DESCRIPTION +.Nm Tar +is short for +.Dq tape archiver , +so named for historical reasons; the +.Nm +program creates, adds files to, or extracts files from an archive file +in +.Nm +format, called a +.Ar tarfile . +A +.Ar tarfile +is often a magnetic tape, but can be a floppy diskette or any +regular disk file. +.Pp +The first argument word of the +.Nm +command line is usually a command word of bundled function and modifier +letters, optionally preceded by a dash; +it must contain exactly one function letter from the set +.Cm A , +.Cm c , +.Cm d , +.Cm r , +.Cm t , +.Cm u , +.Cm x , +for +.Em append , +.Em create , +.Em difference , +.Em replace , +.Em table of contents , +.Em update , +and +.Em extract +(further described below). +The command word can also contain other function modifiers described below, +some of which will take arguments from the command line in the order they +are specified in the command word (review the +.Sx EXAMPLES +section). +Functions and function modifiers can also be specified +with the GNU argument convention (preceded by two dashes, one function or +modifier per word. +Command-line arguments that specify files to +add to, extract from, or list from an archive may be given as shell +pattern matching strings. +.Sh FUNCTIONS +Exactly one of the following functions must be specified. +.Pp +.Bl -tag -width "--concatenate" -compact +.It Fl A +.It Fl -catenate +.It Fl "-concatenate" +Append the contents of named file, which must itself be a +.Nm +archive, +to the end of the archive (erasing the old end-of-archive block). +This has the effect of adding the files contained in the named file to +the first archive, rather than adding the second archive as an element +of the first. +.Em Note : +This option requires a rewritable +.Ar tarfile , +and therefore does not work on quarter-inch cartridge tapes. +.It Fl c +.It Fl -create +Create a new archive (or truncates an old one) and writes the named files +to it. +.It Fl d +.It Fl -diff +.It Fl -compare +Find differences between files in the archive and corresponding files in +the file system. +.It Fl -delete +Delete named files from the archive. +(Does not work on quarter-inch tapes). +.It Fl r +.It Fl -append +Append files to the end of an archive. +(Does not work on quarter-inch tapes). +.It Fl t +.It Fl -list +List the contents of an archive; if +.Ar filename +arguments are given, only those +files are listed, otherwise the entire table of contents is listed. +.It Fl u +.It Fl -update +Append the named files if the on-disk version has a modification date +more recent than their copy in the archive (if any). +Does not work on quarter-inch tapes. +.It Fl x +.It Fl -extract +.It Fl -get +Extract files from an archive. +The owner, modification time, and file permissions are restored, if possible. +If no +.Ar file +arguments are given, extract all the files in the archive. +If a +.Ar filename +argument matches the name of a directory on the tape, that directory and +its contents are extracted (as well as all directories under that directory). +If the archive contains multiple entries corresponding to the same file +(see the +.Fl -append +command above), the last one extracted will overwrite all earlier versions. +.El +.Sh OPTIONS +The other options to +.Nm +may be combined arbitrarily; single-letter options may be bundled in with +the command word. +Verbose options which take arguments will be +followed by the argument; single-letter options will consume +successive command line arguments (see the +.Sx EXAMPLES +below). +.Pp +.Bl -tag -width "--preserve-permissions" -compact +.It Fl -help +Prints a message listing and briefly describing all the command +options to +.Nm . +.It Fl -atime-preserve +Restore the access times on files which are written to tape (note that +this will change the inode-change time!). +.It Fl b +.It Fl -block-size Ar number +Sets the block size for reading or writing to +.Ar number +* 512-byte blocks. +.It Fl B +.It Fl -read-full-blocks +Re-assemble short reads into full blocks (for reading +.Bx 4.2 +pipes). +.It Fl C Ar directory +.It Fl -directory Ar directory +Change to +.Ar directory +before processing the remaining arguments. +.It Fl -checkpoint +Print number of buffer reads/writes while reading/writing the archive. +.It Fl f Xo +.Oo Ar hostname : Oc Ns Ar file +.Xc +.It Fl -file Xo +.Oo Ar hostname : Oc Ns Ar file +.Xc +Read or write the specified +.Ar file +(default is +.Pa /dev/sa0 ) . +If a +.Ar hostname +is specified, +.Nm +will use +.Xr rmt 8 +to read or write the specified +.Ar file +on a remote machine. +.Dq Ar - +may be used as a filename, for reading +or writing to/from stdin/stdout. +.It Fl -force-local +Archive file is local even if it has a colon. +.It Fl F Ar file +.It Fl -info-script Ar file +.It Fl -new-volume-script Ar file +Run a script at the end of each archive volume (implies +.Fl M ) . +.It Fl -fast-read +Stop after all non-wildcard extraction targets have been found +in the archive. +.It Fl G +.It Fl -incremental +Create/list/extract old GNU-format incremental backup. +.It Fl g Ar file +.It Fl -listed-incremental Ar file +Create/list/extract new GNU-format incremental backup. +.It Fl h +.It Fl -dereference +Don't write symlinks as symlinks; write the data of the files they name. +.It Fl i +.It Fl -ignore-zeros +Ignore blocks of zeroes in archive (usually means End-Of-File). +.It Fl -ignore-failed-read +Don't exit with non-zero status on unreadable files. +.It Fl j +.It Fl y +.It Fl -bzip +.It Fl -bzip2 +.It Fl -bunzip2 +Filter the archive through +.Xr bzip2 1 . +.It Fl k +.It Fl -keep-old-files +Keep files which already exist on disk; don't overwrite them from the archive. +.It Fl K Ar file +.It Fl -starting-file Ar file +Begin at +.Ar file +in the archive. +.It Fl l +.It Fl -one-file-system +Stay in local filesystem when creating an archive (do not cross mount +points). +.It Fl L Ar number +.It Fl -tape-length Ar number +Change tapes after writing +.Ar number +* 1024 bytes. +.It Fl m +.It Fl -modification-time +Don't extract file modified time. +.It Fl M +.It Fl -multi-volume +Create/list/extract multi-volume archive. +.It Fl n +.It Fl -norecurse +Don't recurse into subdirectories when creating. +.It Fl -volno-file Ar file +File name with volume number to start with. +.It Fl N Ar date +.It Fl -after-date Ar date +.It Fl -newer Ar date +Only store files with creation time newer than +.Ar date . +.It Fl -newer-mtime Ar date +Only store files with modification time newer than +.Ar date . +.It Fl o +.It Fl -old-archive +.It Fl -portability +Write a V7 format archive, rather than POSIX format. +.It Fl O +.It Fl -to-stdout +Extract files to standard output. +.It Fl p +.It Fl -same-permissions +.It Fl -preserve-permissions +Extract all protection information. +.It Fl -preserve +Has the effect of +.Fl p s . +.It Fl P +.It Fl -absolute-paths +Don't strip leading +.Ql / +from file names. +.It Fl R +.It Fl -record-number +Show record number within archive with each message. +.It Fl -remove-files +Remove files after adding them to the archive. +.It Fl s +.It Fl -same-order +.It Fl -preserve-order +List of names to extract is sorted to match archive. +.It Fl -show-omitted-dirs +Show directories which were omitted while processing the archive. +.It Fl S +.It Fl -sparse +Handle +.Dq sparse +files efficiently. +.It Fl T Ar file +.It Fl I Ar file +.It Fl -files-from Ar file +Get names of files to extract or create from +.Ar file , +one per line. +.It Fl -null +Modifies behavior of +.Fl T +to expect null-terminated names; disables +.Fl C . +.It Fl -totals +Prints total bytes written with +.Fl -create . +.It Fl U +.It Fl -unlink +.It Fl -unlink-first +Unlink files before creating them. +.It Fl v +.It Fl -verbose +Lists files written to archive with +.Fl -create +or extracted with +.Fl -extract ; +lists file protection information along with file names with +.Fl -list . +.It Fl V Ar volume-name +.It Fl -label Ar volume-name +Create archive with the given +.Ar volume-name . +.It Fl -version +Print +.Nm +program version number. +.It Fl w +.It Fl -interactive +.It Fl -confirmation +Ask for confirmation for every action. +.It Fl W +.It Fl -verify +Attempt to verify the archive after writing it. +.It Fl -exclude Ar pattern +Exclude files matching the +.Ar pattern +(don't extract them, don't add them, don't list them). +.It Fl X Ar file +.It Fl -exclude-from Ar file +Exclude files listed in +.Ar file . +.It Fl Z +.It Fl -compress +.It Fl -uncompress +Filter the archive through +.Xr compress 1 . +.It Fl z +.It Fl -gzip +.It Fl -gunzip +Filter the archive through +.Xr gzip 1 . +.It Fl -use-compress-program Ar program +Filter the archive through +.Ar program +(which must accept +.Fl d +to mean +.Dq decompress ) . +.It Fl -block-compress +Block the output of compression program for tapes or floppies +(otherwise writes will be of odd length, which device drivers may reject). +.It Fl Xo +.Op Cm 0 Ns - Ns Cm 7 Ns +.Op Cm lmh +.Xc +Specify tape drive and density. +.El +.Sh ENVIRONMENT +The environment variable +.Ev TAR_OPTIONS +can hold a set of default options for +.Nm . +These options are interpreted first and can be overwritten by explicit command +line parameters. +.Sh EXAMPLES +To create an archive on tape drive +.Pa /dev/sa0 +with a block size of 20 blocks, containing files named +.Pa bert +and +.Pa ernie , +you can enter +.Dl "tar cfb /dev/sa0 20 bert ernie" +or +.Dl "tar --create --file /dev/sa0 --block-size 20 bert ernie" +Note that the +.Fl f +and +.Fl b +flags both require arguments, which they take from the command line in +the order they were listed in the command word. +.Pp +Because +.Pa /dev/sa0 +is the default device, and 20 is the default block +size, the above example could have simply been +.Dl "tar c bert ernie" +.Pp +To extract all the C sources and headers from an archive named +.Pa backup.tar , +type +.Dl "tar xf backup.tar '*.[ch]'" +Note that the pattern must be quoted to prevent the shell from +attempting to expand it according the files in the current working +directory (the shell does not have access to the list of files in +the archive, of course). +.Pp +To move file hierarchies, use a command line like this: +.Bd -literal +tar -cf - -C srcdir . | tar xpf - -C destdir +.Ed +.Pp +To create a compressed archive on diskette, using +.Xr gzip 1 , +use a command-line like +.Dl "tar --block-compress -z -c -v -f /dev/fd1a -b 36 tar/" +.Pp +Note that you cannot mix bundled flags and +.Fl -style +flags; you can use +single-letter flags in the manner above, rather than having to type +.Dl "tar --block-compress --gzip --verbose --file /dev/fd1a --block-size 20 tar/" +.Pp +The above-created diskette can be listed with +.Dl "tar tvfbz /dev/fd1a 36" +.Pp +To join two +.Nm +archives into a single archive, use +.Dl "tar Af archive1.tar archive2.tar" +which will add the files contained in +.Pa archive2.tar +onto the end of +.Pa archive1.tar +(note that this can't be done by simply typing +.Dl "cat archive2.tar >> archive1.tar" +because of the end-of-file block at the end of a +.Nm +archive). +.Pp +To archive all files from the directory +.Pa srcdir , +which were modified +after Feb. 9th 1997, 13:00 h, use +.Dl "tar -c -f backup.tar --newer-mtime 'Feb 9 13:15 1997' srcdir/" +.Pp +Other possible time specifications are +.Sq "02/09/97 13:15" , +.Sq "1997-02-09 13:15" , +.Sq "13:15 9 Feb 1997" , +.Sq "9 Feb 1997 13:15" , +.Sq "Feb. 9, 1997 1:15pm" , +.Sq "09-Feb" , +.Sq "3 weeks ago" +or +.Sq "May first Sunday" . +To specify the correct time zone use either e.g.\& +.Sq "13:15 CEST" +or +.Sq "13:15+200" . +.Sh ENVIRONMENT +The +.Nm +program examines the following environment variables. +.Bl -tag -width "POSIXLY_CORRECT" +.It Ev POSIXLY_CORRECT +Normally, +.Nm +will process flag arguments that appear in the file list. +If set in the environment, this causes +.Nm +to consider the first +non-flag argument to terminate flag processing, as per the POSIX specification. +.It Ev SHELL +In interactive mode, a permissible response to the prompt is to +request to spawn a subshell, which will be +.Pa /bin/sh +unless the +.Ev SHELL +variable is set. +.It Ev TAPE +Changes +.Nm Ns 's +default tape drive (which is still overridden by the +.Fl f +flag). +.It TAR_RSH +The TAR_RSH environment variable allows you to override the default +shell used as the transport for +.Nm . +.El +.Sh FILES +.Bl -tag -width "/dev/sa0" +.It Pa /dev/sa0 +The default tape drive. +.El +.Sh COMPATIBILITY +The +.Fl y +is a +.Fx +localism. +The GNU +.Nm +maintainer has now choosen +.Fl j +as the offical +.Xr bzip2 1 +compression option in GNU +.Nm +1.13.18 and later. +The +.Fl I +option is for compatibility with Solaris's +.Nm . +.Sh SEE ALSO +.Xr bzip2 1 , +.Xr compress 1 , +.Xr gzip 1 , +.Xr pax 1 , +.Xr rmt 8 +.Sh HISTORY +The +.Nm +format has a rich history, dating back to Sixth Edition +.Ux . +The current implementation of +.Nm +is the GNU implementation, which +originated as the public-domain +.Nm +written by +.An John Gilmore . +.Sh AUTHORS +.An -nosplit +A cast of thousands, including [as listed in the +.Pa ChangeLog +file in the source] +.An John Gilmore +(author of original public domain version), +.An Jay Fenlason +(first GNU author), +.An Joy Kendall , +.An Jim Kingdon , +.An David J. MacKenzie , +.An Michael I Bushnell , +.An Noah Friedman , +and innumerable others who have contributed fixes and additions. +.Pp +Man page obtained by the +.Fx +group from the +.Nx 1.0 +release. +.Sh BUGS +The +.Fl C +feature does not work like historical +.Nm +programs, and is probably untrustworthy. +.Pp +The +.Fl A +command should work to join an arbitrary number of +.Nm +archives +together, but it does not; attempting to do so leaves the +end-of-archive blocks in place for the second and subsequent archives. +.Pp +The +.Nm +file format is a semi fixed width field format, and the field +for device numbers were designed for 16 bit (8 major, 8 minor) +and can not absorb our 32 bit (8 major, 16+8 minor) numbers. |