Menu

#54 warning on du in Centos (5.7)

v3.0_testing
closed-invalid
nobody
5
2011-11-17
2011-11-17
Anonymous
No

When using the AMB script (3.0) there is a warning when 'du' is used:

du: WARNING: use --si, not -H; the meaning of the -H option will soon
change to be the same as that of --dereference-args (-D)

Discussion

  • PittaGurneyi

    PittaGurneyi - 2011-11-17

    Please check http://pubs.opengroup.org/onlinepubs/9699919799/utilities/du.html where the POSIX specifications are. It seems, that the Centos 5.7 version of du is not POSIX compliant, but will soon be. I have done my best to use only POSIX compliant syntax to assure the bug-free running on most systems. Unfortunately, I can't take care of every system and distribution, which chooses to defy POSIX syntax. For other people and myself, it would be a good idea to get the options of du on Centos 5.7, so please post 'du --help'.

     
  • PittaGurneyi

    PittaGurneyi - 2011-11-17
    • status: open --> closed-invalid
     
  • William Hooper

    William Hooper - 2012-01-11

    I've just run across this issue as well. CentOS 6.2 is fine. Here is the output for "du --help" on CentOS. I apologize for the log cut and paste, I don't use Sourceforge often and I can't see a way to upload it as a file.

    CentOS release 5.7 (Final)

    Usage: du [OPTION]... [FILE]...
    or: du [OPTION]... --files0-from=F
    Summarize disk usage of each FILE, recursively for directories.

    Mandatory arguments to long options are mandatory for short options too.
    -a, --all write counts for all files, not just directories
    --apparent-size print apparent sizes, rather than disk usage; although
    the apparent size is usually smaller, it may be
    larger due to holes in (`sparse') files, internal
    fragmentation, indirect blocks, and the like
    -B, --block-size=SIZE use SIZE-byte blocks
    -b, --bytes equivalent to `--apparent-size --block-size=1'
    -c, --total produce a grand total
    -D, --dereference-args dereference FILEs that are symbolic links
    --files0-from=F summarize disk usage of the NUL-terminated file
    names specified in file F
    -H like --si, but also evokes a warning; will soon
    change to be equivalent to --dereference-args (-D)
    -h, --human-readable print sizes in human readable format (e.g., 1K 234M 2G)
    --si like -h, but use powers of 1000 not 1024
    -k like --block-size=1K
    -l, --count-links count sizes many times if hard linked
    -m like --block-size=1M
    -L, --dereference dereference all symbolic links
    -P, --no-dereference don't follow any symbolic links (this is the default)
    -0, --null end each output line with 0 byte rather than newline
    -S, --separate-dirs do not include size of subdirectories
    -s, --summarize display only a total for each argument
    -x, --one-file-system skip directories on different file systems
    -X FILE, --exclude-from=FILE Exclude files that match any pattern in FILE.
    --exclude=PATTERN Exclude files that match PATTERN.
    --max-depth=N print the total for a directory (or file, with --all)
    only if it is N or fewer levels below the command
    line argument; --max-depth=0 is the same as
    --summarize
    --time show time of the last modification of any file in the
    directory, or any of its subdirectories
    --time=WORD show time as WORD instead of modification time:
    atime, access, use, ctime or status
    --time-style=STYLE show times using style STYLE:
    full-iso, long-iso, iso, +FORMAT
    FORMAT is interpreted like `date'
    --help display this help and exit
    --version output version information and exit

    SIZE may be (or may be an integer optionally followed by) one of following:
    kB 1000, K 1024, MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y.

    Report bugs to <bug-coreutils@gnu.org>.

     
  • mrr2ro

    mrr2ro - 2012-01-17

    Linux 2.6.18-92.1.22.el5 on x86_64
    CentOS Linux 5.2

    The du command does accepts the -H flag but generates a warning, it is clearly stated in the documentation, so the option to use is:

    In the script itself, in line 1972,
    You could change
    echo `du -hsH "${CONFIG_backup_dir}"`
    to:
    echo `du -hk "${CONFIG_backup_dir}"`

    du -hk, gives you the same effect of human readable and calculate size in --block-size=1K, the formating is not as neat when run from a script, so you may insert some line breaks in the script to format the output.

    As requested, here is the du --help dump

    Usage: du [OPTION]... [FILE]...
    or: du [OPTION]... --files0-from=F
    Summarize disk usage of each FILE, recursively for directories.

    Mandatory arguments to long options are mandatory for short options too.
    -a, --all write counts for all files, not just directories
    --apparent-size print apparent sizes, rather than disk usage; although
    the apparent size is usually smaller, it may be
    larger due to holes in (`sparse') files, internal
    fragmentation, indirect blocks, and the like
    -B, --block-size=SIZE use SIZE-byte blocks
    -b, --bytes equivalent to `--apparent-size --block-size=1'
    -c, --total produce a grand total
    -D, --dereference-args dereference FILEs that are symbolic links
    --files0-from=F summarize disk usage of the NUL-terminated file
    names specified in file F
    -H like --si, but also evokes a warning; will soon
    change to be equivalent to --dereference-args (-D)
    -h, --human-readable print sizes in human readable format (e.g., 1K 234M 2G)
    --si like -h, but use powers of 1000 not 1024
    -k like --block-size=1K
    -l, --count-links count sizes many times if hard linked
    -m like --block-size=1M
    -L, --dereference dereference all symbolic links
    -P, --no-dereference don't follow any symbolic links (this is the default)
    -0, --null end each output line with 0 byte rather than newline
    -S, --separate-dirs do not include size of subdirectories
    -s, --summarize display only a total for each argument
    -x, --one-file-system skip directories on different file systems
    -X FILE, --exclude-from=FILE Exclude files that match any pattern in FILE.
    --exclude=PATTERN Exclude files that match PATTERN.
    --max-depth=N print the total for a directory (or file, with --all)
    only if it is N or fewer levels below the command
    line argument; --max-depth=0 is the same as
    --summarize
    --time show time of the last modification of any file in the
    directory, or any of its subdirectories
    --time=WORD show time as WORD instead of modification time:
    atime, access, use, ctime or status
    --time-style=STYLE show times using style STYLE:
    full-iso, long-iso, iso, +FORMAT
    FORMAT is interpreted like `date'
    --help display this help and exit
    --version output version information and exit

    SIZE may be (or may be an integer optionally followed by) one of following:
    kB 1000, K 1024, MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y.

     
  • bertys

    bertys - 2012-01-17

    I'd like to see a fix for this too. For your information, my du version is
    du (coreutils) 5.2.1

    and in case it differs from the paste below.... my du --help is as follows:

    Usage: du [OPTION]... [FILE]...
    Summarize disk usage of each FILE, recursively for directories.

    Mandatory arguments to long options are mandatory for short options too.
    -a, --all write counts for all files, not just directories
    --apparent-size print apparent sizes, rather than disk usage; although
    the apparent size is usually smaller, it may be
    larger due to holes in (`sparse') files, internal
    fragmentation, indirect blocks, and the like
    -B, --block-size=SIZE use SIZE-byte blocks
    -b, --bytes equivalent to `--apparent-size --block-size=1'
    -c, --total produce a grand total
    -D, --dereference-args dereference FILEs that are symbolic links
    -H like --si, but also evokes a warning; will soon
    change to be equivalent to --dereference-args (-D)
    -h, --human-readable print sizes in human readable format (e.g., 1K 234M 2G)
    --si like -h, but use powers of 1000 not 1024
    -k, --kilobytes deprecated, like --block-size=1K
    -l, --count-links count sizes many times if hard linked
    -m, --megabytes deprecated, like --block-size=1M
    -L, --dereference dereference all symbolic links
    -P, --no-dereference don't follow any symbolic links (this is the default)
    -0, --null end each output line with 0 byte rather than newline
    -S, --separate-dirs do not include size of subdirectories
    -s, --summarize display only a total for each argument
    -x, --one-file-system skip directories on different filesystems
    -X FILE, --exclude-from=FILE Exclude files that match any pattern in FILE.
    --exclude=PATTERN Exclude files that match PATTERN.
    --max-depth=N print the total for a directory (or file, with --all)
    only if it is N or fewer levels below the command
    line argument; --max-depth=0 is the same as
    --summarize
    --help display this help and exit
    --version output version information and exit

    SIZE may be (or may be an integer optionally followed by) one of following:
    kB 1000, K 1024, MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y.

     
  • PittaGurneyi

    PittaGurneyi - 2012-01-20

    The option -s is for summarizing and only outputting a total amount.
    In case your backup directory is a symlink - should work fine - we want du to "follow" the symlink in the following way:
    If a symbolic link is specified on the command line, du shall count the size of the file or file hierarchy referenced by the link.
    That is exactly the option -H (see http://pubs.opengroup.org/onlinepubs/9699919799/utilities/du.html\). POSIX is a standard, on which you should rely when creating portable scripts. As earlier stated, on your OS the implementation of du is non-POSIX conform. As a result, options are misinterpreted. Instead of the dereferencing of arguments, on your systems, this leads to human readable (divided by 1000) output due to the -H option, while -h already did that (divided by 1024). The warning is issued, because in future versions of your OS the options are planned to be made conform with the POSIX standard.

    If you want it to work correctly - as intended - you have to replace
    echo `du -hsH "${CONFIG_backup_dir}"`
    with
    echo `du -hsD "${CONFIG_backup_dir}"`
    .

    This however is not an issue that has to be fixed in the script itself ... it is as portable as possible. You may also read my original comment.

     

Log in to post a comment.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.