92 lines
1.6 KiB
Bash
Executable File
92 lines
1.6 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
WORKDIR=${PWD}
|
|
|
|
# Check parameters.
|
|
if [ $# = 0 ]; then
|
|
echo "Usage: restore.sh [path to backup file] [--execute]
|
|
--execute Execute a restore.
|
|
If this parameter is not present, a dry run is performed."
|
|
exit 0
|
|
fi
|
|
if [ ! -e $1 ]; then
|
|
echo "File to be restored not found: $1"
|
|
exit -1
|
|
fi
|
|
|
|
# Extract file.
|
|
if [ -d ./restore ]; then
|
|
echo "The directory \"restore\" exists. Aborted."
|
|
exit 0
|
|
fi
|
|
mkdir ./restore
|
|
tar -zxvf $1 -C ./restore
|
|
if [ $? -ne 0 ]; then
|
|
echo "Failed to extract file."
|
|
exit -1
|
|
fi
|
|
|
|
#
|
|
if [ -z $2 ]; then
|
|
# Restore acl.
|
|
cd restore/lib/samba/
|
|
bash ./NTACL
|
|
|
|
echo "Finished dry run."
|
|
|
|
elif [ $2 = "--execute" ]; then
|
|
# Stop the samba process.
|
|
pkill -SIGTERM ^samba$
|
|
while
|
|
pgrep ^samba$
|
|
[ $? -eq 0 ]
|
|
do
|
|
echo "wait..."
|
|
sleep 1
|
|
done
|
|
|
|
# Samba
|
|
# Restore files.
|
|
rm -rf /etc/samba/*
|
|
mv restore/etc/samba/* /etc/samba/
|
|
|
|
rm -rf /var/lib/samba/private/*
|
|
mv restore/lib/samba/private/* /var/lib/samba/private/
|
|
|
|
rm -rf /var/lib/samba/bind-dns
|
|
mv restore/lib/samba/bind-dns /var/lib/samba/
|
|
|
|
rm -rf /var/lib/samba/sysvol/*
|
|
mv restore/lib/samba/sysvol/* /var/lib/samba/sysvol/
|
|
|
|
# Bind
|
|
# Restore files.
|
|
rm -rf /etc/bind/*
|
|
mv restore/etc/bind/* /etc/bind/
|
|
|
|
rm -rf /var/lib/bind/*
|
|
mv restore/lib/bind/* /var/lib/bind/
|
|
|
|
# Delete working files.
|
|
rm -rf ./restore
|
|
|
|
# Restore acl.
|
|
cd /var/lib/samba
|
|
bash $WORKDIR/restore/lib/samba/NTACL
|
|
cd $WORKDIR
|
|
|
|
# Do sysvol reset.
|
|
net cache flush
|
|
samba-tool ntacl sysvolreset
|
|
|
|
# Start the samba process.
|
|
/usr/sbin/samba --interactive --no-process-group &
|
|
if [ $SMB_USEBIND9 = "true" ]; then
|
|
/usr/sbin/rndc stop
|
|
/usr/sbin/named -u bind
|
|
fi
|
|
|
|
echo "Restored."
|
|
|
|
fi
|