From 44fa13cdc64a81a119864939ae013bda55e30cad Mon Sep 17 00:00:00 2001 From: Ben Peddell Date: Sat, 18 Jul 2015 04:53:40 +1000 Subject: [PATCH] Make backup function more robust --- tools/arkmanager | 63 +++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 60 insertions(+), 3 deletions(-) diff --git a/tools/arkmanager b/tools/arkmanager index 8f819e6..2f86567 100755 --- a/tools/arkmanager +++ b/tools/arkmanager @@ -421,10 +421,67 @@ doBackup(){ local datestamp=`date +"%Y-%m-%d_%H.%M.%S"` local backupdir="${arkbackupdir}/${datestamp}" mkdir -p "$backupdir" + + # ARK server uses Write-Unlink-Rename + echo -ne "${NORMAL} Copying ARK world file " cp -p "${arkserverroot}/ShooterGame/Saved/SavedArks/${serverMap}.ark" "${backupdir}/${serverMap}.ark" - cp -p "${arkserverroot}/ShooterGame/Saved/SavedArks/"*.arkprofile "${backupdir}" - cp -p "${arkserverroot}/ShooterGame/Saved/SavedArks/"*.arktribe "${backupdir}" - cp -p "${arkserverroot}/ShooterGame/Saved/Config/LinuxServer/GameUserSettings.ini" "${backupdir}" + if [ ! -f "${backupdir}/${serverMap}.ark" ]; then + sleep 2 + cp -p "${arkserverroot}/ShooterGame/Saved/SavedArks/${serverMap}.ark" "${backupdir}/${serverMap}.ark" + fi + if [ -f "${backupdir}/${serverMap}.ark" ]; then + echo -e "${NORMAL}[ ${GREEN}OK${NORMAL} ]" + else + echo -e "${NORMAL}[ ${RED}FAILED${NORMAL} ]" + fi + + # ARK server uses Lock-Truncate-Write-Unlock + # Unfortunately we can't lock the file, as + # ARK server uses a non-blocking lock and will + # fail to update the file if the lock fails. + echo -e "${NORMAL} Copying ARK profile files" + for f in "${arkserverroot}/ShooterGame/Saved/SavedArks/"*.arkprofile; do + echo -ne "${NORMAL} ${f##*/} " + cp -p "${f}" "${backupdir}/${f##*/}" + if [ ! -s "${backupdir}/${f##*/}" ]; then + sleep 2 + cp -p "${f}" "${backupdir}/${f##*/}" + fi + if [ -s "${backupdir}/${f##*/}" ]; then + echo -e "${NORMAL}[ ${GREEN}OK${NORMAL} ]" + else + echo -e "${NORMAL}[ ${RED}FAILED${NORMAL} ]" + fi + done + + # ARK server uses Lock-Truncate-Write-Unlock + echo -e "${NORMAL} Copying ARK tribe files " + for f in "${arkserverroot}/ShooterGame/Saved/SavedArks/"*.arktribe; do + echo -ne "${NORMAL} ${f##*/} " + cp -p "${f}" "${backupdir}/${f##*/}" + if [ ! -s "${backupdir}/${f##*/}" ]; then + sleep 2 + cp -p "${f}" "${backupdir}/${f##*/}" + fi + if [ -s "${backupdir}/${f##*/}" ]; then + echo -e "${NORMAL}[ ${GREEN}OK${NORMAL} ]" + else + echo -e "${NORMAL}[ ${RED}FAILED${NORMAL} ]" + fi + done + + # ARK server uses Lock-Truncate-Write-Unlock + echo -ne "${NORMAL} Copying GameUserSettings.ini " + cp -p "${arkserverroot}/ShooterGame/Saved/Config/LinuxServer/GameUserSettings.ini" "${backupdir}/GameUserSettings.ini" + if [ ! -s "${backupdir}/GameUserSettings.ini" ]; then + sleep 2 + cp -p "${f}" "${backupdir}/${f##*/}" + fi + if [ -f "${backupdir}/GameUserSettings.ini" ]; then + echo -e "${NORMAL}[ ${GREEN}OK${NORMAL} ]" + else + echo -e "${NORMAL}[ ${RED}FAILED${NORMAL} ]" + fi } #