dehydrate-fs is a family of tools for separating out files from disk images for the efficient storage of both.
Você não pode selecionar mais de 25 tópicos
Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
|
- #!/usr/bin/env bash
- set -eo pipefail
-
- [ -t 0 ] && { echo "$0 must be run as a filter." >&2; exit 1; }
-
- mfile="$1"; [ -z "$1" ] && { echo "No image file specified!" >&2; exit 1; }
-
- BLOCKSIZE=`sed -nE 's/^#BLOCKSIZE=([0-9]+)$/\1/p' "$mfile"`
- [ -z "$BLOCKSIZE" ] && { echo "Mapfile does not specify blocksize!" >&2; exit 1; }
-
- map="$(grep -v ^\# "$mfile" \
- | awk '/[a-f0-9]{64}/{curfile=$2;next}{print curfile, $0}' \
- | sort -unk 3)"
- nitems=`wc -l <<<"$map"`
-
- shopt -s expand_aliases
- alias dd="dd bs=$BLOCKSIZE status=none"
-
- {
- pos=0
- for (( i = 0; i < $nitems; i++ )) do
- read hash lblock block lengt _ < <(sed $((i+1))'q;d' <<<"$map")
- dd if=/dev/stdin count=$((block-pos))
- dd if=/dev/stdin count=$((lengt-1)) >/dev/null
- dd if=pool/$hash count=$((lengt-1)) skip=$lblock
- pos=$((block+lengt-1))
- done
- dd if=/dev/stdin
- } > "${2:-/dev/stdout}"
|