How to split a tar file into smaller parts at file boundaries?
If recreating the archive is an option this Bash script should do the trick (it's just a possible manner):
#!/bin/bash if [ $# != 3 ] ; then echo -e "$0 in out max\n" echo -e "\tin: input directory" echo -e "\tout: output directory" echo -e "\tmax: split size threshold in bytes" exit fi IN=$1 OUT=$2 MAX=$3 SEQ=0 TOT=0 find $IN -type f | while read i ; do du -bs "$i" ; done | sort -n | while read SIZE NAME ; do if [ $TOT != 0 ] && [ $((TOT+SIZE)) -gt $MAX ] ; then SEQ=$((SEQ+1)) TOT=0 fi TOT=$((TOT+SIZE)) TAR=$OUT/$(printf '%08d' $SEQ).tar tar rf $TAR "$NAME" done
It sorts (ascending order) all the files by size and starts creating the archives; it switches to another when the size exceeds the threshold.
NOTE: Make you sure that the output directory is empty.
USE AT YOUR OWN RISK