--- /dev/null
+#!/bin/sh
+#
+# Copyright (C) 2000-2020 Kern Sibbald
+# License: BSD 2-Clause; see file LICENSE-FOSS
+#
+# What to test
+# ------------
+# - Normal backup
+# - Weird backup
+# - Restore
+# - Accurate backup
+# - Compression
+# - Checksum
+# - TLS/Encryption
+# - compare files
+# - runscript
+#
+# How to use this test
+# --------------------
+# See config or prototype.conf for all variables
+# Client name. Note, it must be configured to accept your regress director
+# REMOTE_CLIENT="test"
+# Client FQDN or IP address
+# REMOTE_ADDR="192.168.0.10"
+# File or Directory to backup. This is put in the "File" directive
+# in the FileSet
+# REMOTE_FILE="/tmp"
+# Port of the remote client
+# REMOTE_PORT=8102
+# Remote Client password
+# REMOTE_PASSWORD="zzzzz"
+# Where the remote client will have to contact the SD, usually the local ip address
+# REMOTE_STORE_ADDR="192.168.0.15"
+#
+#
+TestName="remote-fd-aligned-test"
+JobName=backup
+. scripts/functions
+
+scripts/cleanup
+scripts/copy-test-confs
+
+cp scripts/aligned-bacula-sd.conf bin/bacula-sd.conf
+
+# install the aligned volume plugin
+make -C build/src/plugins/sd install-aligned-plugin >/dev/null
+$bperl -e 'add_attribute("$conf/bacula-sd.conf", "MinimumAlignedSize", "4096", "Device")'
+
+change_jobname NightlySave $JobName
+change_jobname MonsterSave AccurateTest
+
+start_test
+
+echo $REMOTE_FILE/save > $tmp/file-list
+
+ssh $REMOTE_ADDR test -x /opt/bacula/bin/bacula-fd
+if [ $? != 0 ]; then
+ print_debug "ERROR: Need to install bacula on $REMOTE_ADDR"
+ echo "ERROR: Need to install bacula on $REMOTE_ADDR"
+ exit 1
+fi
+
+$bperl -e remote_stop
+$bperl -e remote_init
+$bperl -e remote_config
+cfg=$conf/bacula-dir.conf
+$bperl -e "add_attribute('$cfg', 'clientrunbeforejob', '$REMOTE_FILE/save/test.sh', 'Job', 'CompressedTest')"
+$bperl -e "add_attribute('$cfg', 'accurate', 'yes', 'Job', 'AccurateTest')"
+$bperl -e "add_attribute('$cfg', 'address', '$REMOTE_ADDR', 'Client')"
+$bperl -e "add_attribute('$cfg', 'password', '$REMOTE_PASSWORD', 'Client')"
+$bperl -e "add_attribute('$cfg', 'address', '$REMOTE_STORE_ADDR', 'Storage')"
+
+cat <<END_OF_DATA >${cwd}/tmp/bconcmds
+@output
+messages
+@$out ${cwd}/tmp/log4.out
+status client
+@$out ${cwd}/tmp/log1.out
+label storage=File volume=TestVolume001
+run job=$JobName storage=File yes
+wait
+messages
+@#
+@# now do a restore
+@#
+@$out ${cwd}/tmp/log2.out
+restore where=$REMOTE_FILE/restore select all done storage=File
+yes
+wait
+messages
+@$out ${cwd}/tmp/log3.out
+@#
+@# make some runscript tests
+@#
+run job=CompressedTest storage=File yes
+wait
+messages
+@$out ${cwd}/tmp/log4.out
+@#
+run job=CompressedTest fileset=LZOSet storage=File yes
+wait
+messages
+@$out ${cwd}/tmp/log1.out
+@#
+@# make some accurate tests
+@#
+run job=AccurateTest storage=File yes
+wait
+messages
+run job=AccurateTest storage=File yes
+wait
+messages
+@output
+quit
+END_OF_DATA
+
+run_bacula
+check_for_zombie_jobs storage=File
+stop_bacula
+
+check_two_logs
+
+version=`$bin/bacula-dir -? 2>&1 | awk '/Version:/ { print $2 }'`
+version_fd=`awk '/Version:/ { print $3 }' $tmp/log4.out`
+
+if [ "$version" != "$version_fd" ]; then
+ print_debug "ERROR: client version doesn't match $version ($version_fd)"
+ estat=1
+fi
+
+grep 'this is a script' $tmp/log3.out > /dev/null
+if [ $? != 0 ]; then
+ print_debug "ERROR: Can't find runscript output"
+ bstat=1
+fi
+
+$bperl -e remote_diff
+if [ $? != 0 ]; then
+ dstat=1
+fi
+
+$bperl -e remote_stop
+
+end_test