| Server IP : 127.0.1.1 / Your IP : 216.73.216.83 Web Server : Apache/2.4.58 (Ubuntu) System : Linux nepub 6.8.0-88-generic #89-Ubuntu SMP PREEMPT_DYNAMIC Sat Oct 11 01:02:46 UTC 2025 x86_64 User : root ( 0) PHP Version : 8.2.30 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /proc/self/root/sbin/ |
Upload File : |
#! /bin/sh
# Usage: tarcat volume1 volume2 ...
# concatenates a GNU tar multi-volume archive into a single tar archive.
# Author: Bruno Haible <bruno@clisp.org>, Sergey Poznyakoff <gray@gnu.org.ua>
# dump_type FILE [N]
# Print type character from block N (default 0) of tar archive FILE
dump_type() {
dd if="$1" skip=${2:-0} bs=512 count=1 2>/dev/null |
tr '\0' ' ' |
cut -c157
}
case `dump_type "$1"` in
[gx]) PAX=1;;
esac
cat "$1"
shift
for f
do
SKIP=0
T=`dump_type "$f"`
if [ -n "$PAX" ]; then
if [ "$T" = "g" ]; then
# Global extended header.... 2 blocks
# Extended header........... 2 blocks
# Ustar header.............. 1 block
# FIXME: This calculation is will fail for very long file names.
SKIP=5
fi
else
if [ "$T" = "V" ]; then
T=`dump_type "$f" 1`
fi
if [ "$T" = "M" ]; then
SKIP=$(($SKIP + 1))
fi
fi
dd skip=$SKIP if="$f"
done