[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[ANNOUNCE] GNU fileutils 4.1

From: Jim Meyering
Subject: [ANNOUNCE] GNU fileutils 4.1
Date: 30 Apr 2001 01:00:54 +0200
User-agent: Gnus/5.090003 (Oort Gnus v0.03) Emacs/21.0.103

Version 4.0 of the fileutils was released nearly 2.5 years ago, on
1998-11-14.  That's way too long an interval between major releases.
However there have been 45 test releases since 4.0, and some of those
turned out to be pretty stable.  In any case, I can say with confidence
that 4.2 won't take as long.

Version 4.1 is available here (but please check a GNU mirror, first):

  ftp://ftp.gnu.org/gnu/fileutils/fileutils-4.1.tar.gz  (1.8MB)

Here are the MD5 and SHA1 signatures for the .tar.gz file

2fa04ceee87e962ddf72f32a2d6b906d  fileutils-4.1.tar.gz
d74e82f6edae7c40b3d075c5a30dc27c79f937ff  fileutils-4.1.tar.gz

There is one new program: shred, written by Colin Plumb.

Here is its --help output:

  Usage: shred [OPTIONS] FILE [...]
  Overwrite the specified FILE(s) repeatedly, in order to make it harder
  for even very expensive hardware probing to recover the data.

    -f, --force    change permissions to allow writing if necessary
    -n, --iterations=N  Overwrite N times instead of the default (25)
    -s, --size=N   shred this many bytes (suffixes like k, M, G accepted)
    -u, --remove   truncate and remove file after overwriting
    -v, --verbose  show progress
    -x, --exact    do not round file sizes up to the next full block
    -z, --zero     add a final overwrite with zeros to hide shredding
    -              shred standard output
        --help     display this help and exit
        --version  print version information and exit

  Delete FILE(s) if --remove (-u) is specified.  The default is not to remove
  the files because it is common to operate on device files like /dev/hda,
  and those files usually should not be removed.  When operating on regular
  files, most people use the --remove option.

  CAUTION: Note that shred relies on a very important assumption:
  that the filesystem overwrites data in place.  This is the traditional
  way to do things, but many modern filesystem designs do not satisfy this
  assumption.  The following are examples of filesystems on which shred is
  not effective:

  * log-structured or journaled filesystems, such as those supplied with
    AIX and Solaris (and JFS, ReiserFS, XFS, etc.)

  * filesystems that write redundant data and carry on even if some writes
    fail, such as RAID-based filesystems

  * filesystems that make snapshots, such as Network Appliance's NFS server

  * filesystems that cache in temporary locations, such as NFS
    version 3 clients

  * compressed filesystems

  Report bugs to <address@hidden>.

Changes between 4.0 and 4.1

There have been many portability fixes and changes to adapt to and take
advantages of advances in newer versions of autoconf and automake.

There have been many bug fixes and a few new features/options:
(for the full list, see the `NEWS' and ChangeLog files)

* dd conv=sync,block now pads only with spaces, per POSIX
* ls's -1 option no longer cancels the effect of a preceding -l
* ls: When given two or more arguments but the only one that exists is a
    directory, don't treat it as if it were the only argument.  Before,
    `mkdir d; ls no-dir d 2>/dev/null' would act like `ls d' and produce
    no output.  Now, it prints `d:'.
* touch -d 'last friday' would use a time stamp that was one hour off
    (e.g., 23:00 on *thursday* rather than 00:00 of the preceding friday)
    when run such that the current time and the target date/time fall on
    opposite sides of a daylight savings time transition.
    This problem arises only with relative date strings like `last monday'.
    It is not a problem with strings that include absolute dates.
* Using ls's short-named `-H' option evokes the warning that the
   meaning of `-H' will soon change.  Use `--si' instead.
* Using cp's short-named `-P' option evokes the warning that the
   meaning of `-P' will soon change.  Use `--parents' instead.
* ls --full-time now implies -l;  before, without -l it was a no-op
* attempting to use mv to move a symlink onto itself no longer removes
    the symlink
* The manual now warns that ls's --full-time format string is planned
    to change in a future release.
* ls -l's time stamp format now depends on LC_TIME, not LC_MESSAGES,
    as POSIX requires.
* ls -l now reports the year for files even slightly in the future, as
    POSIX requires.  This helps warn users about clock skew problems.
* `cp -d file symlink-to-some-other-file' no longer fails
* performance improvements for ls
* the chown and chgrp programs preserve set-uid and set-gid bits, even on
    systems for which the chown function call resets those bits.
* `ls -L dangling-symlink' now fails (per POSIX) rather than printing the
    link name
* `mkdir no-such-dir/' no longer fails on NetBSD systems
* dd (without conv=notrunc) now complains only when ftruncate fails on a
    regular file, a directory, or a shared memory object -- not when it fails
    to truncate other types of files, like /dev/fd0.
* mkdir now gives one diagnostic (rather than two) for certain failures
* touch now interprets a lone numeric argument of 8 or 10 digits as a file name,
  rather than as a date/time in the obsolescent `MMDDhhmm[YY]' format.
* ls is much more efficient on systems (e.g., linux-2.4.*) that store file
    type information in directory entries.
* shred now automatically determines the size of each block device argument
* ls's date/time format strings are now locale dependent
* mkdir, mknod, mkfifo, and chmod work better in conjunction with ACLs
* `cp --parents dir1/ dir2' no longer gets a failed assertion
* `shred --exact file1 file2' now erases `file1', too
* mv no longer gets a failed assertion when moving a directory (specified with
    a trailing slash) from one partition to another, and giving it a different
    name at the destination.
* mv's --force (-f) option now controls solely whether mv prompts (per POSIX)
* `cp -f' now first attempts to open an existing destination file, and only
    if that fails does it resort to unlinking the file and retrying the open.
    Before, it would unlink the file before trying to open it.
* cp accepts a new option, --remove-destination, that provides the old behavior
* cp's -f option no longer cancels the effect of --interactive (-i) (per POSIX)
* when ls sorts directory entries, it now honors the current locale settings
* dd's `skip=BLOCKS' operator once again works on systems with a buggy lseek
  function (Linux, at least on SCSI tape devices)
* cp now accepts the POSIX-mandated -H and -L options.
* cp -p and mv now try to preserve uid even if you're not root, as per POSIX.2.
  This affects behavior only on hosts that let you give files away via chmod.
* du would fail when given `.' or `..' followed by other command line arguments
* chgrp, chmod, and chown: when used with the --verbose option, might give an
  invalid diagnostic (due to clobbered errno) when failing.
* When `cp -pR' fails to copy a file, it now preserves permissions, owner,
   and group of the containing directory.
* df, du, and ls now round disk usage up and disk free space down
* df, du, ls: --block-size=N now works for values of N that are e.g.,
    not a multiple of the file's block size
* give proper diagnostic for mv usage error
* `cp -d -u' no longer fails with certain existing destination symlinks
* rmdir and mkdir accept -v as synonym for --verbose
* rm no longer segfaults on certain very deep hierarchies
* IMPORTANT SECURITY FIX: a running `rm -r' may no longer be subverted to
  remove unintended directories
* cp can now remove unwritable files in interactive mode; contrary to how mv
   works, cp's --interactive (-i) option does *not* cancel the effect of a
   preceding --force (-f) option.
* all programs fail when printing --help or --version output to a full device
* install no longer performs chmod if chown fails (see ChangeLog for example)
* `du dir/subdir1 dir/subdir2' no longer fails
* cp and mv accept new option: --strip-trailing-slashes
* chown accepts new option: --from=CURRENT_OWNER:CURRENT_GROUP
* install --directory (-d) may now be used to set special bits
    e.g., `install -m a=rwx,o+t -d DIR' now honors the `o+t' part
* cp, mv, ln, install: document that while the --backup option takes an
  optional argument, the -b option accepts none
* `ls -e' fails with a more useful diagnostic
* df produces better output for loop file system mount points
* install -D bug is fixed
* chown now works properly when the specified login name contains a period
  This is at the expense of always looking up the entire USER.GROUP string
  as a login name first, and only then (upon failure) interpreting the `.'
  as a separator and looking up `USER'.  To avoid the extra getpwnam call,
  always use the POSIX-mandated `:' character as the separator.
* `du some-other-dir' no longer fails if it can't open the current directory
* `mv DIR EXISTING-FILE' no longer removes EXISTING-FILE.  Now it gets an error
  as POSIX says it must.
* touch no longer hangs on fifos
* various tools: quote multibyte characters correctly in diagnostics
* cp, install, ln, and mv: when making backup files in verbose mode, these
  commands now print the backup file name on the same line as the rest of the
  information, e.g., `a -> b (backup: b.~13~)' rather than on a separate line
  as all but ln used to do.  ln didn't output the backup file name at all.
* df no longer hangs when there is an inaccessible mount point unrelated to PATH
* rmdir --verbose no longer prints extra, bogus diagnosic upon failure
* ls -l honors a trailing slash on a symlink argument, per POSIX.
* shred no longer appears to infloop when asked to remove files in
  unwritable directories
* `ls -ul' and `ls -uc' sort by name once again, as they should
* touch would fail with the misleading diagnostic `no such file' when asked
  to create a file in an unwritable directory.  Now it says something like
  `permission denied' or `read-only file system'.
* mkdir may now be used to set special bits  e.g., `mkdir -m o+t dir' works
* touch can now change the time(s) of a file you own even if you don't have
  read or write access to it
* rm no longer dumps core after warning about directory cycles
* mv now refuses to move a file onto a symlink to itself when that symlink
  is on a separate partition.  Before, it would remove the file and leave
  only the symlink.
* `install -d -g foo 1/2' now sets the `group' of the final component as well
  as that of the leading one.
* df, du, and ls no longer divide by zero when an invalid block size is
  specified through an environment variable
* under certain conditions, chgrp would fail to affect files referenced
  through symlinks.  Now it does.
* ln now makes hard links to symlinks on systems that support it.
* touch: no longer infloop on dangling symlinks
* cp, install, ln, mv: deprecate the --version-control option.  Use --backup's
  new optional argument instead.  The old option still works, but now evokes a
* cp, install, ln, mv: the --backup option now accepts an optional argument
* cp, install, ln, mv: accept new option: --target-directory=DIR
* chgrp: accept new option, --dereference.  --no-dereference is now the default.
* New ls options:
  --quoting-style=locale acts like --quoting-style=c, except
    with locale-specific quoting symbols (` and ' by default) instead of ".
  --quoting-style=clocale acts like --quoting-style=locale,
    except that it quotes "like this" by default instead of `like this'.
* `df DIR' is less likely to hang due to bad NFS mounts
* As per POSIX.2, `df -P' now uses ceiling rather than rounding, and its
  header now says `1024-blocks ... Capacity' instead of `1k-blocks ... Use%'.
* `cp -f FILE FILE' and `mv -f FILE FILE' no longer remove FILE
* touch works once again (DST-wise) when certain `--date DATE-TIME'
  values are specified.
* shred's -u option (short form of --remove) is now accepted
* cp --one-file-system (-x) no longer crosses filesystem boundaries.
* touch can once again operate on directories
* New large-file support for AIX and HP-UX, and for cross-compiles.
* shred's default options are now suitable for devices, not files, since
  shred is more reliable on devices.  shred now does not remove by default;
  the old -p or --preserve option was inverted and renamed to -u or --remove.
* shred -u now attempts to truncate devices before removing them.
* shred -v no longer outputs carriage-returns; shred -vv has no extra effect;
  shred -v now outputs to stderr.
* shred now tries to find the size of a non-regular file by seeking to its end.
* dd now opens the output file for *read* access only if `seek=' is used.
* `ls --color' no longer segfaults
* dd works once again
* shred --devices option renamed to -D so that -d, -i and -r can be
  compatible with rm.
* shred -s/--size=N option added to specify the size of the object to be
* `shred -' now shreds stdout rather than stdin.  This is incompatible with -v.
* shred now does not need to read from its output file, so opens it O_WRONLY
* `ls -l' uses `+' to designate each file that has a custom ACL
* eliminate race condition that could make touch truncate a nonempty file
* No longer use *_unlocked I/O macros on systems (like solaris5.5.1) where
  they're not declared, so selected executables (e.g., rm) that are linked
  with shared libraries will once again run on solaris5.6 systems.
* ls recognizes solaris 2 `doors'
* cp, mv, install: --verbose now prints a message for each backup-related
* concurrent `mkdir -p' processes no longer fail when creating the
  same hierarchy
* argmatch.c has been fixed so that the unambiguous usage `ls --color=n'
  no longer evokes an error.
* ls --quoting-style=c prints correct octal escapes for certain nonprinting
  characters in file names.
* fix `ls -R .' formatting bug that broke mktexlsr
* moving a directory into itself is properly diagnosed in more cases
* moving a directory containing hard-linked files now works

reply via email to

[Prev in Thread] Current Thread [Next in Thread]