Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
HOWTO: Easily make a full system backup (stage4)
View unanswered posts
View posts from last 24 hours

Goto page Previous  1, 2, 3 ... 5, 6, 7 ... 16, 17, 18  Next  
Reply to topic    Gentoo Forums Forum Index Documentation, Tips & Tricks
View previous topic :: View next topic  
Author Message
BlinkEye
Veteran
Veteran


Joined: 21 Oct 2003
Posts: 1046
Location: Gentoo Forums

PostPosted: Sun May 08, 2005 9:33 am    Post subject: Reply with quote

err, this is exactly what i've explained in the "6. Warning" section! well, you right about one thing, it shouldn't be necessary and in fact isn't anymore. i removed the hole warning section.
_________________
Easily backup up your system? klick
Get rid of SSH Brute Force Attempts / Script Kiddies klick
Back to top
View user's profile Send private message
tfh
n00b
n00b


Joined: 03 Aug 2004
Posts: 59
Location: AFAD

PostPosted: Sun May 08, 2005 9:54 pm    Post subject: Reply with quote

Great work.


What would be the best way to automate this script in order to call it from cron ?
_________________
tfh
GPG Key:0x960AAEF2
Key Fingerprint: 6763 E0E0 29AC A928 2612 4B14 15FE 6A45 960A AEF2
Back to top
View user's profile Send private message
BlinkEye
Veteran
Veteran


Joined: 21 Oct 2003
Posts: 1046
Location: Gentoo Forums

PostPosted: Mon May 09, 2005 8:20 am    Post subject: Reply with quote

new version 2.1.0.

fixed issue with default_include_list and not recursively backed up folders. now, $default_include_list should not be changed, instead add your subfolders/files of excluded folder to $custom_default_list.
_________________
Easily backup up your system? klick
Get rid of SSH Brute Force Attempts / Script Kiddies klick
Back to top
View user's profile Send private message
mr.ed
Tux's lil' helper
Tux's lil' helper


Joined: 30 Nov 2004
Posts: 75

PostPosted: Wed May 11, 2005 2:34 pm    Post subject: Reply with quote

I've modified the script of blinkeye to suit my needs and to be able to run it as a cron. I'll post it here, but note that i`ve made some custom modifications, which may vary for some users. So don't blindly copy it and use it, cause it'll definitely not work well on other setups without some modifying!!!

Here it is:
Quote:
#!/bin/bash
# Backup script for Gentoo Linux
# Copyright Reto Glauser aka Blinkeye
# Distributed under the terms of the GNU General Public License v2
# Mailto: stage4 at blinkeye dot ch
# Forum post: https://forums.gentoo.org/viewtopic-t-312817.html
# Date: 28.04.2005

version=v2.0.1

# these are the commands we actually need for the backup
command_list="date echo find hostname mount split"

# verify that each command we use exists
for command in $command_list; do
path=`which $command | grep "no $command in"`

if [ ! -x `which $command` -a "$path" ]; then
echo -e "\n\nERROR: $command not found! Check your \$command_list and/or your \$PATH"
exit -1
fi
done

# options for the tar command
tarOptions="--create --absolute-names --preserve-permissions --totals --ignore-failed-read --verbose --file"

# where to put the stage4
stage4Location=/your/backup/location

# name prefix
stage4prefix=`hostname`-stage4-`date +\%d.\%m.\%Y`

# patterns which should not be backed up (like iso files). for example: exclude_pattern="*.iso *.divx"
exclude_pattern=" "

# these files/directories are always excluded. don't add trailing slashes.
default_exclude_list=" "

# depending on your choice these files or directories will additionally be excluded
custom_exclude_list=" "

# files/folder which are children of a folder in an exclude_list or folders, which don't get backed up at all (preserve folder structure).
# don't remove a file/folder from here except /var/log/emerge.log
default_include_list=""

# Logging the cron so u have a complete list of what has been backed up for retrieving purposes...
logFile=backup-`date +\%d.\%m.\%Y`.log
logLocation=/var/log/backup # specify here where u want the backup history stored, besides your backup drive
logData=$logLocation/$logFile
noLog=/dev/null 2>&1

# the find_command
find_command="find /*"

# don't backup anything which matches pattern listed in $exclude_pattern
for pattern in $exclude_pattern; do
find_command="$find_command -not -name $pattern"
done

# assemble the find_command
function find_files()
{
for folder in $default_exclude_list; do
find_command="$find_command -path $folder -prune -o"
done

find_command="$find_command -not -type d -print"

for i in $default_include_list; do
find_command="echo $i; $find_command"
done
}

# check the exclude/include list for wrong entries
function verify()
{
for i in $1; do
if [ ! -e "`echo "$i" | cut -d'=' -f2 | cut -d'*' -f1`" -a "$i" != "/lost+found" -a "$i" != "$stage4Location" ]; then
echo "ERROR: `echo "$i" | cut -d'=' -f2` not found! Check your "$2
fi
done
}

# check the folder/files stored in $custom_exclude_list exist
verify "$default_exclude_list" "\$default_exclude_list"

# check the folder/files stored in $default_exclude_list exist
verify "$custom_exclude_list" "\$custom_exclude_list"

# check the folder/files stored in $custom_exclude_list exist
verify "$default_include_list" "\$default_include_list"

# preparing the commands for the cron
rm_command="rm -rf /your/backup/location/*" # change this to the location your backup dir resides!
stage4Name="$stage4Location/$stage4prefix-custom.tar"
default_exclude_list="$default_exclude_list $custom_exclude_list"
stage4postfix="bz2"
zip="--bzip2"

# mount boot and backup drive
mount /mnt/your/backup/location > $noLog
mount /boot > $noLog

# Uncomment and edit the next two lines to exclude any mounted drives which u may have symlinked for easy access
#umount /mnt/yourattacheddrive > $noLog
#umount /mnt/yourattacheddrive > $noLog

# Cleaning backup directory, to make sure we have enough room on our backup drive!
$rm_command > $noLog

# find the files/folder to backup
find_files
find_command="($find_command)"

# create the final command
tar_command="$find_command | tar $zip $tarOptions $stage4Name.$stage4postfix --no-recursion -T -"

# do the backup
date >> $logData
echo " " >> $logData
sh -c "$tar_command" >> $logData

# copy the current world file to the stage4 location + the whole backup history (for easy retrieval of specific files)
cp /var/lib/portage/world $stage4Location/$stage4prefix-custom.txt > $noLog
cp $logData $stage4Location/backup-`date +\%d.\%m.\%Y`.txt > $noLog

# finished, clean up
umount /boot > $noLog
umount /mnt/your/backup/location > $noLog

_________________
(Ex-Pornstar)
Back to top
View user's profile Send private message
Garibaldi
n00b
n00b


Joined: 17 Aug 2003
Posts: 6
Location: South Carolina, USA

PostPosted: Thu May 12, 2005 5:27 pm    Post subject: Minor Error Reply with quote

This is a nice script; however, there is a minor problem I thought I'd point out :) .

You have
Code:
path=`which $command | grep "no $command in"`
The problem is, the "no blah in" message from which gets printed to stderr, not stdout, so your grep will never find anything. I think a cleaner way to do your check would be something like:
Code:
for command in $command_list; do
    which $command > /dev/null 2>&1
    if [ $? -ne 0 ]; then
        echo -ne "\n\nERROR: $command not found! Check your \$command_list "
        echo -e  "and/or your \$PATH"
        exit -1
    fi
done


Andy
Back to top
View user's profile Send private message
BlinkEye
Veteran
Veteran


Joined: 21 Oct 2003
Posts: 1046
Location: Gentoo Forums

PostPosted: Thu May 12, 2005 5:35 pm    Post subject: Re: Minor Error Reply with quote

Garibaldi wrote:
You have
Code:
path=`which $command | grep "no $command in"`
The problem is, the "no blah in" message from which gets printed to stderr, not stdout, so your grep will never find anything.

that's interesting, because i actually do try the things i post/provide. please try things first out yourself and suggest/correct afterwards in order not to confuse others. thanks.
_________________
Easily backup up your system? klick
Get rid of SSH Brute Force Attempts / Script Kiddies klick
Back to top
View user's profile Send private message
DrWoland
l33t
l33t


Joined: 13 Nov 2004
Posts: 603

PostPosted: Thu May 12, 2005 5:57 pm    Post subject: Re: Minor Error Reply with quote

BlinkEye wrote:
Garibaldi wrote:
You have
Code:
path=`which $command | grep "no $command in"`
The problem is, the "no blah in" message from which gets printed to stderr, not stdout, so your grep will never find anything.

that's interesting, because i actually do try the things i post/provide. please try things first out yourself and suggest/correct afterwards in order not to confuse others. thanks.


OH SNAP!! 8O
_________________
I'm not a Guru, I just ask a lot of questions.
Back to top
View user's profile Send private message
luthias
n00b
n00b


Joined: 05 May 2005
Posts: 4

PostPosted: Fri May 13, 2005 12:01 am    Post subject: Reply with quote

This is fantastic, my thanks to you, sir
Back to top
View user's profile Send private message
Garibaldi
n00b
n00b


Joined: 17 Aug 2003
Posts: 6
Location: South Carolina, USA

PostPosted: Fri May 13, 2005 12:58 am    Post subject: Re: Minor Error Reply with quote

BlinkEye wrote:
Garibaldi wrote:
You have
Code:
path=`which $command | grep "no $command in"`
The problem is, the "no blah in" message from which gets printed to stderr, not stdout, so your grep will never find anything.

that's interesting, because i actually do try the things i post/provide. please try things first out yourself and suggest/correct afterwards in order not to confuse others. thanks.


In fact I did test it. You getting expected output doesn't prove the correctness the statement in question.

Consider the following simple examples:

The statement as you have it
Code:
$ which stupid | grep "no stupid in"
which: no stupid in (/bin:/usr/bin:...)


IF the "no stupid in" was getting processed by 'grep', the following should print nothing since we're inverting the match. It does in fact print since the output is generated on the stderr stream (i.e. not processed by 'grep').

Code:
$ which stupid | grep --invert-match "no stupid in"
which: no stupid in (/bin:/usr/bin:...)


Now, the original statement, but redirecting stderr to stdout. No surprise here since the pattern matches.
Code:
$ which stupid 2>&1 | grep "no stupid in"
which: no stupid in (/bin:/usr/bin:...)


And finally, proof positive that 'grep' is processing a string with "no stupid in" with stderr redirected
Code:
$ which stupid 2>&1 | grep --invert-match "no stupid in"
$


In the end, that's your name on the script. You're free to distribute it with whatever errors you see fit. Personally I think others would be more confused by the inclusion of statements with no effect than a post with a simple correction. Sorry to bruise your ego, I just thought I'd lend a helping hand.
Back to top
View user's profile Send private message
Lorijho
n00b
n00b


Joined: 22 Jul 2003
Posts: 38
Location: Luxembourg

PostPosted: Fri May 13, 2005 3:11 am    Post subject: Reply with quote

Thank you, the script work perfectly!

But why not keep the empty /tmp, which has special attributes (chmod 777 & chmod +t), by default ?
Back to top
View user's profile Send private message
BlinkEye
Veteran
Veteran


Joined: 21 Oct 2003
Posts: 1046
Location: Gentoo Forums

PostPosted: Fri May 13, 2005 8:48 am    Post subject: Re: Minor Error Reply with quote

Garibaldi wrote:
In fact I did test it. You getting expected output doesn't prove the correctness the statement in question. In the end, that's your name on the script. You're free to distribute it with whatever errors you see fit. Personally I think others would be more confused by the inclusion of statements with no effect than a post with a simple correction. Sorry to bruise your ego, I just thought I'd lend a helping hand.
You didn't bruise my ego at all. Although i see your point you haven't pointed out a situation where this statements behaves wrongly.

you initially said:
Garibaldi wrote:
You have
Code:
path=`which $command | grep "no $command in"`
The problem is, the "no blah in" message from which gets printed to stderr, not stdout, so your grep will never find anything.
which is wrong and logically led to the conclusion you didn't try it.
_________________
Easily backup up your system? klick
Get rid of SSH Brute Force Attempts / Script Kiddies klick
Back to top
View user's profile Send private message
BlinkEye
Veteran
Veteran


Joined: 21 Oct 2003
Posts: 1046
Location: Gentoo Forums

PostPosted: Fri May 13, 2005 9:11 am    Post subject: Reply with quote

Lorijho wrote:
Thank you, the script work perfectly!
But why not keep the empty /tmp, which has special attributes (chmod 777 & chmod +t), by default ?

- changed it, thanks for the input.
-new version does now validate files/folders in your $custom_include_list

new version: 2.1.1
_________________
Easily backup up your system? klick
Get rid of SSH Brute Force Attempts / Script Kiddies klick
Back to top
View user's profile Send private message
Garibaldi
n00b
n00b


Joined: 17 Aug 2003
Posts: 6
Location: South Carolina, USA

PostPosted: Fri May 13, 2005 9:34 am    Post subject: Re: Minor Error Reply with quote

BlinkEye wrote:
You didn't bruise my ego at all. Although i see your point you haven't pointed out a situation where this statements behaves wrongly.

you initially said:
Garibaldi wrote:
You have
Code:
path=`which $command | grep "no $command in"`
The problem is, the "no blah in" message from which gets printed to stderr, not stdout, so your grep will never find anything.
which is wrong and logically led to the conclusion you didn't try it.


I did not mean to suggest your script behaved wrongly. I merely saw a piece of code that, in context, did not function the way I suspected you wanted it to. I considered that to be a "problem" whether or not it effected the outcome of the script or not. I posted a suggested change that provided the same functionality without the "problem."

As I said in my original post, I think that the script is a nice piece of work. Sorry for any confusion.
Back to top
View user's profile Send private message
Master One
l33t
l33t


Joined: 25 Aug 2003
Posts: 754
Location: Austria

PostPosted: Fri May 13, 2005 4:02 pm    Post subject: Reply with quote

I just performed a complete stage4 system recovery on one of my machines. It's an UDEV only installation (udev-056), and there were no problems at all concerning /dev, so I think the warning for UDEV users can be kicked.

I had to recreate some dirs, which haven't survived the procedure (/tmp, /var/log/portage, /usr/local/portage), but everything else seems to be back and working. The only strange thing was, that unpacking the stage4 archive ended with
Code:
tar: Error exit delayed form previous errors

also I couldn't see any errors, and all files see to have been restored.

Any idea, what this could be about?
_________________
Las torturas mentales de la CIA
Back to top
View user's profile Send private message
Master One
l33t
l33t


Joined: 25 Aug 2003
Posts: 754
Location: Austria

PostPosted: Fri May 13, 2005 7:17 pm    Post subject: Reply with quote

BTW My suggestion for improvement: Change the date-format in the stage4-archive-name to `date +\%Y.\%m.\%d`, because otherwise you will pretty fast get a messup in your stage4 dir. This way you get the correct order when using "ls -la" in a console.
_________________
Las torturas mentales de la CIA
Back to top
View user's profile Send private message
Zugot
n00b
n00b


Joined: 16 Jan 2003
Posts: 23

PostPosted: Sun May 15, 2005 6:14 pm    Post subject: Reply with quote

i used your script last night to save my setup while i converted from ext3 to reiserfs. Everything worked well. Need to manually recreate /tmp. /var/tmp and /usr/portage will be recreated with an 'emerge sync'

thanks.
Back to top
View user's profile Send private message
gandulazul
n00b
n00b


Joined: 01 Aug 2004
Posts: 6

PostPosted: Mon May 16, 2005 7:33 am    Post subject: Portage Assisted Backup/Restore Reply with quote

From what I understand, this Stage 4 backup will backup all of the files on your system except those which are excluded by the script or by the user. Do you think it would be possible to take advantage of portage in minimizing the files that have to be copied? How much harder do you think it would be to only backup the files that portage did not install and/or modify? The restore process can then be a special minimal stage1 install that implements a basic portage system on the desired partition.

Basically:
1. Backup all files not originally modified/created by portage.
2. Boot up to liveCD and make all of the partitions in your new system.
3. Install basic stage1 image to new partition.
4. Restore portage specific configuration settings from backup(make.conf package.* ...)
Make any modifications to those portage config files taylored to your new system specs.
i.e. Change make.conf to reflect a system upgrade, or leave as is for a restore to the same system.
5. Emerge every package that was previously installed with corresponding USE flags.
6. Restore previous backup over new system.
If System Upgrade, don't overwrite previously modified files that were created by portage unless they are configuration files(/etc).
If basic System Restore, overwrite it all.
Back to top
View user's profile Send private message
Sheepdogj15
Guru
Guru


Joined: 07 Jan 2005
Posts: 430
Location: Backyard

PostPosted: Mon May 16, 2005 7:44 am    Post subject: Reply with quote

since i use an external USB drive that is not auto-mounted, i set it up so it mounts and unmounts the backup backup partition itself (i.e. added "mount -v /mnt/backup" towards the beginning of the script, add "umount -v /mnt/backup" at the end, then create the directory for the mount point and specify it in me fstab).

what i like to do is use rsync to backup my home folder. if you don't need compression for it, you have a lot of files and only a few change at a time, and back it up more often than you do a full system backup (i'd recommend it), rsync is a good way to maintain a /home backup.

if you mount your backup drive on /mnt/backup, this is the command with some suggested options:
Code:
# rsync -azvu --stats --progress /home/ /mnt/backup/home/


don't forget the trailing slash on the /home/.

if you want it to delete old files from the backup that you no longer have in your working home directory:
Code:
# rsync -azv --delete --stats --progress /home/ /mnt/backup/home/


check the man page for rsync for details
_________________
Sheepdog
Why Risk It? | Samba Howto
Back to top
View user's profile Send private message
Sheepdogj15
Guru
Guru


Joined: 07 Jan 2005
Posts: 430
Location: Backyard

PostPosted: Mon May 16, 2005 8:59 pm    Post subject: Re: Portage Assisted Backup/Restore Reply with quote

gandulazul wrote:
From what I understand, this Stage 4 backup will backup all of the files on your system except those which are excluded by the script or by the user. Do you think it would be possible to take advantage of portage in minimizing the files that have to be copied? How much harder do you think it would be to only backup the files that portage did not install and/or modify? The restore process can then be a special minimal stage1 install that implements a basic portage system on the desired partition.

Basically:
1. Backup all files not originally modified/created by portage.
2. Boot up to liveCD and make all of the partitions in your new system.
3. Install basic stage1 image to new partition.
4. Restore portage specific configuration settings from backup(make.conf package.* ...)
Make any modifications to those portage config files taylored to your new system specs.
i.e. Change make.conf to reflect a system upgrade, or leave as is for a restore to the same system.
5. Emerge every package that was previously installed with corresponding USE flags.
6. Restore previous backup over new system.
If System Upgrade, don't overwrite previously modified files that were created by portage unless they are configuration files(/etc).
If basic System Restore, overwrite it all.


well, all configuration files should be in /etc, and all files that are not installed by portage should be in /opt or /usr/local. they may also have scripts or symbolic links in either /bin, /sbin, /usr/bin, or /usr/sbin.

the way i'd do what you want with the least administrative effort is just backup /etc, /opt, /usr/local, and also anything you've customized elsewhere (e.g. custom scripts in /usr/bin). you'd also want to document all the packages you installed from portage (i'd expect that portage creates a log of this or something, but i don't know enough about portage to say for sure).

i know /etc will contain more files than what you may have modified, but i wouldn't worry about it: /etc is small.

i'm not sure if there is a better way. i'm sure there is and i bet it is more complex, but i think that's a good start. I'd suggest trying out a backup like my suggestion above, and then on an extra partition or seperate computer, similate the restore process you are looking to do. that way you can figure out for sure if this is adequate or if there are other files or folders you need to backup.

edit to add: also don't forget to backup your /home folder, and the config file for your kernel. it should be /usr/src/linux/.config
_________________
Sheepdog
Why Risk It? | Samba Howto
Back to top
View user's profile Send private message
fnjordy
n00b
n00b


Joined: 17 Feb 2005
Posts: 13

PostPosted: Tue May 24, 2005 3:51 am    Post subject: Reply with quote

Shouldn't this include a partition dump (sfdisk -d), and raid (raidtab) & lvm (vgcfgbackup) configuration?

I would be looking for a backup that I can boot from a LiveCD, then run a script to restore. So for instance with a new empty hard disk:
  1. Create partition information (sfdisk < backup)
  2. Create raid arrays (mkraid)
  3. Create lvm volumes
  4. Create swap / tmp systems
  5. Restore remaining systems from archive
Back to top
View user's profile Send private message
ppurka
Advocate
Advocate


Joined: 26 Dec 2004
Posts: 3256

PostPosted: Wed May 25, 2005 7:13 am    Post subject: Reply with quote

Master One wrote:
BTW My suggestion for improvement: Change the date-format in the stage4-archive-name to `date +\%Y.\%m.\%d`, because otherwise you will pretty fast get a messup in your stage4 dir. This way you get the correct order when using "ls -la" in a console.
What if you do ls -la -v?
Back to top
View user's profile Send private message
Sheepdogj15
Guru
Guru


Joined: 07 Jan 2005
Posts: 430
Location: Backyard

PostPosted: Tue May 31, 2005 3:53 am    Post subject: Reply with quote

BlinkEye, have you considered adding an integrity checking feature to your script? because i just attempted to restore for a stage4 that got corrupt. fortunately i have older backups (even despite that, i've been needing an excuse to rebuild my system anyways, so either way don't feel bad about this or anything).

tar -xvv apparently can do this... i'm currently trying it on a known good archive, though, and if it hasn't frozen it's taking a long time. :?
_________________
Sheepdog
Why Risk It? | Samba Howto
Back to top
View user's profile Send private message
cummings66
n00b
n00b


Joined: 22 Feb 2004
Posts: 42
Location: Moberly, MO

PostPosted: Thu Jun 02, 2005 11:25 pm    Post subject: Reply with quote

Maybe I'm dense or something, but this script is a PITA to get working. What I mean is that it's in text format and depending on your display dimensions you will get split lines, that means lots of work editing the script to get it working again.

Unless you're doing something other than cut and paste. How are you guys managing to get this text script to work without lots of work, is there a link to it somewhere I missed?

I hate to complain, but I tried it after my editing of it and I think I must have missed something because it did not preserve all my permissions. I'm trying it on a spare machine to test things out so no big deal, but really, how are you capturing this script?
Back to top
View user's profile Send private message
cummings66
n00b
n00b


Joined: 22 Feb 2004
Posts: 42
Location: Moberly, MO

PostPosted: Fri Jun 03, 2005 11:33 am    Post subject: Reply with quote

OK. I managed to get w3m to capture it with little need for editing by using the -cols bit. But, it still does not retain the correct ownership and permissions on some files. For example, look at the /var/spool directory and you'll see that the news subdirectories are owned by root, yet in the original it's owned by news. The odd thing is the . files used to keep track of news runs are owned by news.

I see the same thing with other directories as well, in essense everything in /var/spool is owned by root and that's not right. I'm sure there are other areas I'm not aware of yet that have the same issues, so what caused that in the script and how can I be sure it really created the backup correctly? The following is the command that is used.

creating the stage4 at /mnt/backups/stage4 with the following command:

(echo /var/log/emerge.log; echo /sys; echo /proc; echo /dev/console; echo /dev/null; find "/usr/src/linux-2.6.11-gentoo-r9"; find /HDSware /bin /boot /dev /etc /home /lib /mnt /opt /proc /root /sbin /sys /tmp /usr /var -not -name *.iso -path /home -prune -o -path /dev -prune -o -path /lost+found -prune -o -path /mnt -prune -o -path /proc -prune -o -path /sys -prune -o -path /tmp -prune -o -path /usr/portage -prune -o -path /usr/src -prune -o -path /var/log -prune -o -path /var/tmp -prune -o -path /mnt/backups/stage4 -prune -o -not -type d -print) | tar --bzip2 --create --absolute-names --preserve-permissions --totals --ignore-failed-read --verbose --file /mnt/backups/stage4/stingray-stage4-03.06.2005-custom.tar.bz2 --no-recursion -T -
Back to top
View user's profile Send private message
BlinkEye
Veteran
Veteran


Joined: 21 Oct 2003
Posts: 1046
Location: Gentoo Forums

PostPosted: Fri Jun 03, 2005 12:04 pm    Post subject: Reply with quote

ftp://blinkeye.ch/gentoo/mkstage4.sh
_________________
Easily backup up your system? klick
Get rid of SSH Brute Force Attempts / Script Kiddies klick


Last edited by BlinkEye on Fri Jun 03, 2005 11:35 pm; edited 1 time in total
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Documentation, Tips & Tricks All times are GMT
Goto page Previous  1, 2, 3 ... 5, 6, 7 ... 16, 17, 18  Next
Page 6 of 18

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum