shell scripts: fix shellcheck warnings

master
a1346054 1 year ago committed by rfjakob
parent c505e73a13
commit c63f7e9f64
  1. 10
      Documentation/MANPAGE-render.bash
  2. 10
      benchmark-reverse.bash
  3. 2
      benchmark.bash
  4. 2
      contrib/gocryptfs-maybe.bash
  5. 8
      contrib/maxlen.bash
  6. 2
      contrib/mount-ext4-ramdisk.sh
  7. 18
      profiling/ls.bash
  8. 16
      profiling/streaming-read.bash
  9. 10
      profiling/streaming-write.bash
  10. 10
      profiling/tar-extract.bash
  11. 10
      profiling/write-trace.bash
  12. 2
      test.bash
  13. 2
      tests/canonical-benchmarks.bash
  14. 8
      tests/dl-linux-tarball.bash
  15. 2
      tests/fuse-unmount.bash
  16. 6
      tests/len2elen.sh
  17. 6
      tests/reverse/linux-tarball-test.bash
  18. 16
      tests/sshfs-benchmark.bash
  19. 48
      tests/stress_tests/extractloop.bash
  20. 40
      tests/stress_tests/fsstress-gocryptfs.bash
  21. 16
      tests/stress_tests/parallel_cp.sh
  22. 36
      tests/stress_tests/pingpong.bash

@ -1,16 +1,16 @@
#!/bin/bash
set -eu
cd $(dirname "$0")
cd "$(dirname "$0")"
# Render Markdown to a proper man(1) manpage
function render {
render() {
IN=$1
OUT=$2
echo "Rendering $IN to $OUT"
echo ".\\\" This man page was generated from $IN. View it using 'man ./$OUT'" > $OUT
echo ".\\\"" >> $OUT
pandoc "$IN" -s -t man >> $OUT
echo ".\\\" This man page was generated from $IN. View it using 'man ./$OUT'" > "$OUT"
echo ".\\\"" >> "$OUT"
pandoc "$IN" -s -t man >> "$OUT"
}
render MANPAGE.md gocryptfs.1

@ -14,18 +14,18 @@ PLAIN=linux-3.0
SIZE=0
if [[ -d $PLAIN ]]; then
SIZE=$(du -s --apparent-size $PLAIN | cut -f1)
SIZE=$(du -s --apparent-size "$PLAIN" | cut -f1)
fi
if [[ $SIZE -ne 412334 ]] ; then
echo "Extracting linux-3.0.tar.gz"
rm -Rf $PLAIN
rm -Rf "$PLAIN"
tar xf linux-3.0.tar.gz
fi
rm -f $PLAIN/.gocryptfs.reverse.conf
gocryptfs -q -init -reverse -extpass="echo test" -scryptn=10 $PLAIN
rm -f "$PLAIN/.gocryptfs.reverse.conf"
gocryptfs -q -init -reverse -extpass="echo test" -scryptn=10 "$PLAIN"
MNT=$(mktemp -d /tmp/linux-3.0.reverse.mnt.XXX)
@ -37,7 +37,7 @@ gocryptfs -q -reverse -extpass="echo test" "$PLAIN" "$MNT"
# Execute command, discard all stdout output, print elapsed time
# (to stderr, unfortunately).
function etime {
etime() {
# Make the bash builtin "time" print out only the elapse wall clock
# seconds
TIMEFORMAT=%R

@ -7,7 +7,7 @@ cd "$(dirname "$0")"
MYNAME=$(basename "$0")
source tests/fuse-unmount.bash
function usage {
usage() {
echo "Usage: $MYNAME [-encfs] [-openssl=true] [-openssl=false] [-dd] [DIR]"
}

@ -12,7 +12,7 @@
# Note that pam_mount ignores messages on stdout which is why printing
# to stdout is ok.
set -eu
MYNAME=$(basename $0)
MYNAME=$(basename "$0")
if [[ $# -lt 2 || $1 == -* ]]; then
echo "Usage: $MYNAME CIPHERDIR MOUNTPOINT [-o COMMA-SEPARATED-OPTIONS]" >&2
exit 1

@ -32,8 +32,8 @@ while true ; do
echo "error: file $PWD/$NEXT already exists"
exit 1
fi
echo -n 2> /dev/null > $NEXT || break
rm $NEXT
echo -n 2> /dev/null > "$NEXT" || break
rm "$NEXT"
NAME="$NEXT"
done
echo "${#NAME}"
@ -47,8 +47,8 @@ if [[ $QUICK -ne 1 ]]; then
NAME=""
while true ; do
NEXT="${NAME}x"
mkdir $NEXT 2> /dev/null || break
rmdir $NEXT
mkdir "$NEXT" 2> /dev/null || break
rmdir "$NEXT"
NAME="$NEXT"
done
MAX_DIRNAME=${#NAME}

@ -2,7 +2,7 @@
MNT=/mnt/ext4-ramdisk
if mountpoint $MNT ; then
if mountpoint "$MNT" ; then
exit 1
fi

@ -6,10 +6,10 @@ cd "$(dirname "$0")"
../tests/dl-linux-tarball.bash
T=$(mktemp -d)
mkdir $T/a $T/b
mkdir "$T/a" "$T/b"
../gocryptfs -init -quiet -scryptn 10 -extpass "echo test" $T/a
../gocryptfs -quiet -nosyslog -extpass "echo test" $T/a $T/b
../gocryptfs -init -quiet -scryptn 10 -extpass "echo test" "$T/a"
../gocryptfs -quiet -nosyslog -extpass "echo test" "$T/a" "$T/b"
# Cleanup trap
trap "cd /; fusermount -u -z $T/b; rm -Rf $T/a" EXIT
@ -17,20 +17,20 @@ trap "cd /; fusermount -u -z $T/b; rm -Rf $T/a" EXIT
echo "Creating 40000 empty files (linux-3.0.tar.gz contains 36782 files)..."
SECONDS=0
for dir in $(seq -w 1 200); do
mkdir $T/b/$dir
( cd $T/b/$dir ; touch $(seq -w 1 200) )
mkdir "$T/b/$dir"
( cd "$T/b/$dir" ; touch $(seq -w 1 200) )
done
echo "done, $SECONDS seconds"
echo "Remount..."
fusermount -u $T/b
../gocryptfs -quiet -nosyslog -extpass "echo test" -cpuprofile $T/cprof -memprofile $T/mprof \
$T/a $T/b
fusermount -u "$T/b"
../gocryptfs -quiet -nosyslog -extpass "echo test" -cpuprofile "$T/cprof" -memprofile "$T/mprof" \
"$T/a" "$T/b"
echo "Running ls under profiler (3x)..."
for i in 1 2 3; do
SECONDS=0
ls -lR $T/b > /dev/null
ls -lR "$T/b" > /dev/null
echo "$i done, $SECONDS seconds"
done

@ -3,25 +3,25 @@
cd "$(dirname "$0")"
T=$(mktemp -d)
mkdir $T/a $T/b
mkdir "$T/a" "$T/b"
../gocryptfs -init -quiet -scryptn 10 -extpass "echo test" $T/a
../gocryptfs -quiet -extpass "echo test" $T/a $T/b
../gocryptfs -init -quiet -scryptn 10 -extpass "echo test" "$T/a"
../gocryptfs -quiet -extpass "echo test" "$T/a" "$T/b"
# Cleanup trap
trap "cd /; fusermount -u -z $T/b; rm -Rf $T/a" EXIT
# Write 100MB test file
dd if=/dev/zero of=$T/b/zero bs=1M count=100 status=none
dd if=/dev/zero of="$T/b/zero" bs=1M count=100 status=none
# Remount with profiling
fusermount -u $T/b
../gocryptfs -quiet -extpass "echo test" -cpuprofile $T/cprof -memprofile $T/mprof \
$T/a $T/b
fusermount -u "$T/b"
../gocryptfs -quiet -extpass "echo test" -cpuprofile "$T/cprof" -memprofile "$T/mprof" \
"$T/a" "$T/b"
# Read 10 x 100MB instead of 1 x 1GB to keep the used disk space low
for i in $(seq 1 10); do
dd if=$T/b/zero of=/dev/null bs=1M count=100
dd if="$T/b/zero" of=/dev/null bs=1M count=100
done
echo

@ -3,18 +3,18 @@
cd "$(dirname "$0")"
T=$(mktemp -d)
mkdir $T/a $T/b
mkdir "$T/a" "$T/b"
../gocryptfs -init -quiet -scryptn 10 -extpass "echo test" $T/a
../gocryptfs -quiet -extpass "echo test" -cpuprofile $T/cprof -memprofile $T/mprof \
$T/a $T/b
../gocryptfs -init -quiet -scryptn 10 -extpass "echo test" "$T/a"
../gocryptfs -quiet -extpass "echo test" -cpuprofile "$T/cprof" -memprofile "$T/mprof" \
"$T/a" "$T/b"
# Cleanup trap
trap "cd /; fusermount -u -z $T/b; rm -Rf $T/a" EXIT
# Write 10 x 100MB instead of 1 x 1GB to keep the used disk space low
for i in $(seq 1 10); do
dd if=/dev/zero of=$T/b/zero bs=1M count=100
dd if=/dev/zero of="$T/b/zero" bs=1M count=100
done
echo

@ -6,17 +6,17 @@ cd "$(dirname "$0")"
../tests/dl-linux-tarball.bash
T=$(mktemp -d)
mkdir $T/a $T/b
mkdir "$T/a" "$T/b"
../gocryptfs -init -quiet -scryptn 10 -extpass "echo test" $T/a
../gocryptfs -quiet -extpass "echo test" -cpuprofile $T/cprof -memprofile $T/mprof \
$T/a $T/b
../gocryptfs -init -quiet -scryptn 10 -extpass "echo test" "$T/a"
../gocryptfs -quiet -extpass "echo test" -cpuprofile "$T/cprof" -memprofile "$T/mprof" \
"$T/a" "$T/b"
# Cleanup trap
trap "cd /; fusermount -u -z $T/b; rm -Rf $T/a" EXIT
echo "Extracting..."
time tar xzf /tmp/linux-3.0.tar.gz -C $T/b
time tar xzf /tmp/linux-3.0.tar.gz -C "$T/b"
echo
echo "Hint: go tool pprof ../gocryptfs $T/cprof"

@ -6,17 +6,17 @@
cd "$(dirname "$0")"
T=$(mktemp -d)
mkdir $T/a $T/b
mkdir "$T/a" "$T/b"
../gocryptfs -init -quiet -scryptn 10 -extpass "echo test" $T/a
../gocryptfs -quiet -extpass "echo test" -trace $T/trace \
$T/a $T/b
../gocryptfs -init -quiet -scryptn 10 -extpass "echo test" "$T/a"
../gocryptfs -quiet -extpass "echo test" -trace "$T/trace" \
"$T/a" "$T/b"
# Cleanup trap
trap "cd /; fusermount -u -z $T/b; rm -Rf $T/a" EXIT
# Write only 1x100MB, otherwise the trace gets too big.
dd if=/dev/zero of=$T/b/zero bs=1M count=100
dd if=/dev/zero of="$T/b/zero" bs=1M count=100
echo
echo "Hint: go tool trace $T/trace"

@ -16,7 +16,7 @@ TESTDIR=$TMPDIR/gocryptfs-test-parent-$UID
mkdir -p "$TESTDIR"
LOCKFILE=$TESTDIR/$MYNAME.lock
function unmount_leftovers {
unmount_leftovers() {
RET=0
for i in $(mount | grep "$TESTDIR" | cut -f3 -d" "); do
echo "Warning: unmounting leftover filesystem: $i"

@ -45,7 +45,7 @@ echo -n "UNTAR: "
etime tar xzf /tmp/linux-3.0.tar.gz
sleep 0.1
echo -n "MD5: "
etime md5sum --quiet -c $MD5
etime md5sum --quiet -c "$MD5"
sleep 0.1
echo -n "LS: "
etime ls -lR linux-3.0

@ -10,18 +10,18 @@ SIZE_WANT=96675825
SIZE_ACTUAL=0
if [[ -e $TGZ ]]; then
if [[ $OSTYPE == linux* ]] ; then
SIZE_ACTUAL=$(stat -c %s $TGZ)
SIZE_ACTUAL=$(stat -c %s "$TGZ")
else
# Mac OS X
SIZE_ACTUAL=$(stat -f %z $TGZ)
SIZE_ACTUAL=$(stat -f %z "$TGZ")
fi
fi
if [[ $SIZE_ACTUAL -ne $SIZE_WANT ]]; then
echo "Downloading linux-3.0.tar.gz"
if command -v wget > /dev/null ; then
wget -nv --show-progress -c -O $TGZ $URL
wget -nv --show-progress -c -O "$TGZ" "$URL"
else
curl -o $TGZ $URL
curl -o "$TGZ" "$URL"
fi
fi

@ -5,7 +5,7 @@
#
# This script can be sourced or executed directly.
#
function fuse-unmount {
fuse-unmount() {
local MYNAME=$(basename "$BASH_SOURCE")
if [[ $# -eq 0 ]] ; then
echo "$MYNAME: missing argument"

@ -20,10 +20,10 @@ fi
rm -f b/*
while [[ $LEN -le 255 ]]; do
touch b/$NAME || break
touch "b/$NAME" || break
ELEN=$(ls a | wc -L)
echo $LEN $ELEN
rm b/$NAME
echo "$LEN $ELEN"
rm "b/$NAME"
NAME="${NAME}x"
LEN=${#NAME}
done

@ -10,12 +10,12 @@ source ../fuse-unmount.bash
# Setup dirs
../dl-linux-tarball.bash
cd /tmp
WD=$(mktemp -d /tmp/$MYNAME.XXX)
WD=$(mktemp -d "/tmp/$MYNAME.XXX")
# Cleanup trap
trap "set +u; cd /; fuse-unmount -z $WD/c; fuse-unmount -z $WD/b; rm -rf $WD" EXIT
cd $WD
cd "$WD"
mkdir a b c
echo "Extracting tarball"
tar -x -f /tmp/linux-3.0.tar.gz -C a
@ -30,4 +30,4 @@ gocryptfs -q -extpass="echo test" b c
cd c
echo "Checking md5 sums"
set -o pipefail
md5sum -c $MD5 | pv -l -s 36782 -N "files checked" | (grep -v ": OK" || true)
md5sum -c "$MD5" | pv -l -s 36782 -N "files checked" | (grep -v ": OK" || true)

@ -2,7 +2,7 @@
set -eu
function cleanup {
cleanup() {
cd "$LOCAL_TMP"
fusermount -u gocryptfs.mnt
rm -Rf "$SSHFS_TMP"
@ -11,22 +11,22 @@ function cleanup {
rm -Rf "$LOCAL_TMP"
}
function prepare_mounts {
prepare_mounts() {
LOCAL_TMP=$(mktemp -d -t "$MYNAME.XXX")
cd $LOCAL_TMP
cd "$LOCAL_TMP"
echo "working directory: $PWD"
mkdir sshfs.mnt gocryptfs.mnt
sshfs $HOST:/tmp sshfs.mnt
sshfs "$HOST:/tmp" sshfs.mnt
echo "sshfs mounted: $HOST:/tmp -> sshfs.mnt"
trap cleanup EXIT
SSHFS_TMP=$(mktemp -d "sshfs.mnt/$MYNAME.XXX")
mkdir $SSHFS_TMP/gocryptfs.crypt
gocryptfs -q -init -extpass "echo test" -scryptn=10 $SSHFS_TMP/gocryptfs.crypt
gocryptfs -q -extpass "echo test" $SSHFS_TMP/gocryptfs.crypt gocryptfs.mnt
mkdir "$SSHFS_TMP/gocryptfs.crypt"
gocryptfs -q -init -extpass "echo test" -scryptn=10 "$SSHFS_TMP/gocryptfs.crypt"
gocryptfs -q -extpass "echo test" "$SSHFS_TMP/gocryptfs.crypt" gocryptfs.mnt
echo "gocryptfs mounted: $SSHFS_TMP/gocryptfs.crypt -> gocryptfs.mnt"
}
function etime {
etime() {
T=$(/usr/bin/time -f %e -o /dev/stdout "$@")
LC_ALL=C printf %20.2f "$T"
}

@ -28,17 +28,17 @@ source ../fuse-unmount.bash
# Setup dirs
../dl-linux-tarball.bash
cd $TMPDIR
cd "$TMPDIR"
EXTRACTLOOP_TMPDIR=$TMPDIR/extractloop_tmpdir
mkdir -p $EXTRACTLOOP_TMPDIR
CRYPT=$(mktemp -d $EXTRACTLOOP_TMPDIR/XXX)
mkdir -p "$EXTRACTLOOP_TMPDIR"
CRYPT=$(mktemp -d "$EXTRACTLOOP_TMPDIR/XXX")
CSV=$CRYPT.csv
MNT=$CRYPT.mnt
mkdir $MNT
mkdir "$MNT"
function check_md5sums {
check_md5sums() {
if command -v md5sum > /dev/null ; then
md5sum --status -c $1
md5sum --status -c "$1"
else
# MacOS / darwin which do not have the md5sum utility
# installed by default
@ -52,50 +52,50 @@ FS=""
if [ $# -eq 1 ] && [ "$1" == "-encfs" ]; then
FS=encfs
echo "Testing EncFS"
encfs --extpass="echo test" --standard $CRYPT $MNT > /dev/null
encfs --extpass="echo test" --standard "$CRYPT" "$MNT" > /dev/null
elif [ $# -eq 1 ] && [ "$1" == "-loopback" ]; then
FS=loopback
echo "Testing go-fuse loopback"
rm -f /tmp/loopback*.memprof
loopback -memprofile=/tmp/loopback $MNT $CRYPT &
loopback -memprofile=/tmp/loopback "$MNT" "$CRYPT" &
FSPID=$(jobs -p)
disown
else
FS=gocryptfs
echo "Testing gocryptfs"
gocryptfs -q -init -extpass="echo test" -scryptn=10 $CRYPT
gocryptfs -q -extpass="echo test" -nosyslog -fg $CRYPT $MNT &
gocryptfs -q -init -extpass="echo test" -scryptn=10 "$CRYPT"
gocryptfs -q -extpass="echo test" -nosyslog -fg "$CRYPT" "$MNT" &
FSPID=$(jobs -p)
disown
#gocryptfs -q -extpass="echo test" -nosyslog -memprofile /tmp/extractloop-mem $CRYPT $MNT
#gocryptfs -q -extpass="echo test" -nosyslog -memprofile /tmp/extractloop-mem "$CRYPT" "$MNT"
fi
echo "Test dir: $CRYPT"
# Sleep to make sure the FS is already mounted on MNT
sleep 1
cd $MNT
cd "$MNT"
ln -v -sTf $CSV /tmp/extractloop.csv 2> /dev/null || true # fails on MacOS, ignore
ln -v -sTf "$CSV" /tmp/extractloop.csv 2> /dev/null || true # fails on MacOS, ignore
# Cleanup trap
# Note: gocryptfs may have already umounted itself because bash relays SIGINT
# Just ignore unmount errors.
trap cleanup_exit EXIT
function cleanup_exit {
cleanup_exit() {
if [[ $FS == loopback ]]; then
# SIGUSR1 causes loopback to write the memory profile to disk
kill -USR1 $FSPID
fi
cd /
rm -Rf $CRYPT
fuse-unmount -z $MNT || true
rmdir $MNT
rm -Rf "$CRYPT"
fuse-unmount -z "$MNT" || true
rmdir "$MNT"
}
function loop {
loop() {
ID=$1
mkdir $ID
cd $ID
mkdir "$ID"
cd "$ID"
echo "[looper $ID] Starting"
@ -107,20 +107,20 @@ function loop {
tar xf /tmp/linux-3.0.tar.gz --exclude linux-3.0/arch/microblaze/boot/dts/system.dts
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
# Exclude the one symlink in the tarball - causes problems on MacOS: "Can't set permissions to 0755"
check_md5sums $MD5
check_md5sums "$MD5"
rm -R linux-3.0
t2=$SECONDS
delta=$((t2-t1))
if [[ $FSPID -gt 0 && -d /proc ]]; then
RSS=$(grep VmRSS /proc/$FSPID/status | tr -s ' ' | cut -f2 -d ' ')
echo "$N,$SECONDS,$RSS,$delta" >> $CSV
echo "$N,$SECONDS,$RSS,$delta" >> "$CSV"
fi
echo "[looper $ID] Iteration $N done, $delta seconds, RSS $RSS kiB"
let N=$N+1
N=$((N+1))
done
}
function memprof {
memprof() {
while true; do
kill -USR1 $FSPID
sleep 60

@ -19,7 +19,7 @@ export TMPDIR=${TMPDIR:-/var/tmp}
DEBUG=${DEBUG:-0}
cd "$(dirname "$0")"
MYNAME=$(basename $0)
MYNAME=$(basename "$0")
source ../fuse-unmount.bash
# fsstress binary
@ -32,23 +32,23 @@ then
fi
# Backing directory
DIR=$(mktemp -d $TMPDIR/$MYNAME.XXX)
DIR=$(mktemp -d "$TMPDIR/$MYNAME.XXX")
# Mountpoint
MNT="$DIR.mnt"
mkdir $MNT
mkdir "$MNT"
# Set the GOPATH variable to the default if it is empty
GOPATH=$(go env GOPATH)
# Clean up old mounts
for i in $(mount | cut -d" " -f3 | grep $TMPDIR/$MYNAME) ; do
fusermount -u $i
for i in $(mount | cut -d" " -f3 | grep "$TMPDIR/$MYNAME") ; do
fusermount -u "$i"
done
# FS-specific compile and mount
if [[ $MYNAME = fsstress-loopback.bash ]]; then
echo -n "Recompile go-fuse loopback: "
cd $GOPATH/src/github.com/hanwen/go-fuse/example/loopback
cd "$GOPATH/src/github.com/hanwen/go-fuse/example/loopback"
git describe
go build && go install
OPTS="-q"
@ -59,20 +59,20 @@ if [[ $MYNAME = fsstress-loopback.bash ]]; then
disown
elif [[ $MYNAME = fsstress-gocryptfs.bash ]]; then
echo "Recompile gocryptfs"
cd $GOPATH/src/github.com/rfjakob/gocryptfs
cd "$GOPATH/src/github.com/rfjakob/gocryptfs"
./build.bash # also prints the version
$GOPATH/bin/gocryptfs -q -init -extpass "echo test" -scryptn=10 $DIR
$GOPATH/bin/gocryptfs -q -extpass "echo test" -nosyslog -fusedebug=$DEBUG $DIR $MNT
$GOPATH/bin/gocryptfs -q -init -extpass "echo test" -scryptn=10 "$DIR"
$GOPATH/bin/gocryptfs -q -extpass "echo test" -nosyslog -fusedebug="$DEBUG" "$DIR" "$MNT"
elif [[ $MYNAME = fsstress-encfs.bash ]]; then
encfs --extpass "echo test" --standard $DIR $MNT
encfs --extpass "echo test" --standard "$DIR" "$MNT"
else
echo Unknown mode: $MYNAME
echo "Unknown mode: $MYNAME"
exit 1
fi
sleep 0.5
echo -n "Waiting for mount: "
while ! grep "$(basename $MNT) fuse" /proc/self/mounts > /dev/null
while ! grep "$(basename "$MNT") fuse" /proc/self/mounts > /dev/null
do
sleep 1
echo -n x
@ -87,26 +87,26 @@ N=1
while true
do
echo "$N ................................. $(date)"
mkdir $MNT/fsstress.1
mkdir "$MNT/fsstress.1"
echo -n " fsstress.1 "
$FSSTRESS -r -m 8 -n 1000 -d $MNT/fsstress.1 &
$FSSTRESS -r -m 8 -n 1000 -d "$MNT/fsstress.1" &
wait
mkdir $MNT/fsstress.2
mkdir "$MNT/fsstress.2"
echo -n " fsstress.2 "
$FSSTRESS -p 20 -r -m 8 -n 1000 -d $MNT/fsstress.2 &
$FSSTRESS -p 20 -r -m 8 -n 1000 -d "$MNT/fsstress.2" &
wait
mkdir $MNT/fsstress.3
mkdir "$MNT/fsstress.3"
echo -n " fsstress.3 "
$FSSTRESS -p 4 -z -f rmdir=10 -f link=10 -f creat=10 -f mkdir=10 \
-f rename=30 -f stat=30 -f unlink=30 -f truncate=20 -m 8 \
-n 1000 -d $MNT/fsstress.3 &
-n 1000 -d "$MNT/fsstress.3" &
wait
echo " rm"
rm -Rf $MNT/*
rm -Rf "$MNT"/*
let N=$N+1
N=$((N+1))
done

@ -18,32 +18,32 @@ if [[ -z $TMPDIR ]]; then
fi
cd "$(dirname "$0")"
MYNAME=$(basename $0)
MYNAME=$(basename "$0")
source ../fuse-unmount.bash
# Set the GOPATH variable to the default if it is empty
GOPATH=$(go env GOPATH)
# Backing directory
DIR=$(mktemp -d $TMPDIR/$MYNAME.XXX)
$GOPATH/bin/gocryptfs -q -init -extpass "echo test" -scryptn=10 $DIR
DIR=$(mktemp -d "$TMPDIR/$MYNAME.XXX")
$GOPATH/bin/gocryptfs -q -init -extpass "echo test" -scryptn=10 "$DIR"
# Mountpoint
MNT="$DIR.mnt"
mkdir $MNT
$GOPATH/bin/gocryptfs -q -extpass "echo test" -nosyslog $DIR $MNT
mkdir "$MNT"
$GOPATH/bin/gocryptfs -q -extpass "echo test" -nosyslog "$DIR" "$MNT"
echo "Mounted gocryptfs $DIR at $MNT"
# Cleanup trap
trap "cd / ; fuse-unmount -z $MNT ; rm -rf $DIR $MNT" EXIT
cd $MNT
cd "$MNT"
SECONDS=0
echo "creating files with dd"
mkdir -p origin
for i in $(seq 1 778) ; do
dd if=/dev/zero of=origin/file_$i bs=8192 count=1 status=none
dd if=/dev/zero of="origin/file_$i" bs=8192 count=1 status=none
done
# Perform the shell expansion only once and store the list
ORIGIN_FILES=origin/*
@ -51,7 +51,7 @@ ORIGIN_FILES=origin/*
echo -n "cp starting: "
for i in $(seq 1 100) ; do
echo -n "$i "
(mkdir sub_$i && cp $ORIGIN_FILES sub_$i ; echo -n "$i ") &
(mkdir "sub_$i" && cp $ORIGIN_FILES "sub_$i" ; echo -n "$i ") &
done
echo

@ -13,7 +13,7 @@ renice 19 $$
cd "$(dirname "$0")"
MD5="$PWD/linux-3.0.md5sums"
MYNAME=$(basename $0)
MYNAME=$(basename "$0")
source ../fuse-unmount.bash
# Setup
@ -22,48 +22,48 @@ cd /tmp
PING=$(mktemp -d ping.XXX)
PONG=$(mktemp -d pong.XXX)
mkdir $PING.mnt $PONG.mnt
mkdir "$PING.mnt" "$PONG.mnt"
# Cleanup trap
# Note: gocryptfs may have already umounted itself because bash relays SIGINT
# Just ignore unmount errors.
trap "set +e ; cd /tmp; fuse-unmount -z $PING.mnt ; fuse-unmount -z $PONG.mnt ; rm -rf $PING $PONG $PING.mnt $PONG.mnt" EXIT
gocryptfs -q -init -extpass="echo test" -scryptn=10 $PING
gocryptfs -q -init -extpass="echo test" -scryptn=10 $PONG
gocryptfs -q -init -extpass="echo test" -scryptn=10 "$PING"
gocryptfs -q -init -extpass="echo test" -scryptn=10 "$PONG"
gocryptfs -q -extpass="echo test" -nosyslog $PING $PING.mnt
gocryptfs -q -extpass="echo test" -nosyslog $PONG $PONG.mnt
gocryptfs -q -extpass="echo test" -nosyslog "$PING" "$PING.mnt"
gocryptfs -q -extpass="echo test" -nosyslog "$PONG" "$PONG.mnt"
echo "Initial extract"
tar xf /tmp/linux-3.0.tar.gz -C $PING.mnt
tar xf /tmp/linux-3.0.tar.gz -C "$PING.mnt"
function move_and_md5 {
if [ $MYNAME = pingpong-rsync.bash ]; then
move_and_md5() {
if [ "$MYNAME" = "pingpong-rsync.bash" ]; then
echo -n "rsync "
rsync -a --remove-source-files $1 $2
find $1 -type d -delete
rsync -a --remove-source-files "$1" "$2"
find "$1" -type d -delete
else
echo -n "mv "
mv $1 $2
mv "$1" "$2"
fi
if [ -e $1 ]; then
if [ -e "$1" ]; then
echo "error: source directory $1 was not removed"
exit 1
fi
cd $2
cd "$2"
echo -n "md5 "
md5sum --status -c $MD5
md5sum --status -c "$MD5"
cd ..
}
N=1
while true; do
echo -n "$N: "
move_and_md5 $PING.mnt/linux-3.0 $PONG.mnt
move_and_md5 $PONG.mnt/linux-3.0 $PING.mnt
move_and_md5 "$PING.mnt/linux-3.0" "$PONG.mnt"
move_and_md5 "$PONG.mnt/linux-3.0" "$PING.mnt"
date +%H:%M:%S
let N=$N+1
N=$((N+1))
done
wait

Loading…
Cancel
Save