Greetings,
I've written a small bash script which generates plrfile and plrobj backups.
Step 1: navigate to /home/YOUR USERNAME/YOUR MUD DIRECTORY/lib/
Step 2: mkdir plrback
Step 3: Create this script in your favorite editor and place it in /home/YOUR USERNAME/YOUR MUD DIRECTORY/lib/
backup.sh
Code:
#!/bin/bash
time=`date +"%Y-%m-%d-%H%M%S"`
tar -cvzf plrback/plrfiles-$time.tgz ./plrfiles
tar -cvzf plrback/plrobjs-$time.tgz ./plrobjs
echo done.
Step 4: Add backup.sh execution to do_copyover or any other function you wish.
Code:
/*
* Automatically backs up player files and player objects when copyover is ran
* and before any changes are made to the descriptor list.
*
*/
int backup = system("/bin/bash /YOUR USERNAME/YOUR MUD DIRECTORY/lib/backup.sh");
if (backup == -1)
mudlog(BRF, LVL_IMPL, TRUE, "SYSERR: backup failed to run.");
else
mudlog(BRF, LVL_IMPL, TRUE, "Backup ran with status: %d", backup);
I placed my system call in do_copyover towards the top:
Code:
/* (c) 1996-97 Erwin S. Andreasen. */
ACMD(do_copyover)
{
FILE *fp;
struct descriptor_data *d, *d_next;
char buf[100], buf2[100];
save_all();
House_save_all();
fp = fopen(COPYOVER_FILE, "w");
if (!fp)
{
send_to_char(ch, "Copyover file not writeable, aborted.\n\r");
return;
}
/*
* Automatically backs up player files and player objects when copyover is ran
* and before any changes are made to the descriptor list.
*
*/
int backup = system("/bin/bash /YOUR USERNAME/YOUR MUD DIRECTORY/lib/backup.sh");
if (backup == -1)
mudlog(BRF, LVL_IMPL, TRUE, "SYSERR: backup failed to run.");
else
mudlog(BRF, LVL_IMPL, TRUE, "Backup ran with status: %d", backup);
sprintf(buf, "\n\r *** COPYOVER by %s - please remain seated!\n\r", GET_NAME(ch));
With the size of modern hard drives, and the prevalence of SSDs, I don't see any reason to not take incremental backups of player files.
Hope this helps someone.
Salty