Tym razem udostępniam (dla potrzebujących) skrypt (również mojego autorstwa) napisany w php, pomagający w operacjach na autoloaderze zamontowanym w systemie freeBSD.
Jak to działa? Skrypt potrzebuje max 2 parametrów wywołania. 1 - opcja, 2 - numer slotu autoloadera. To dopiero v1.0, więc jeszcze będą zmiany.
Generalnie uruchamiamy skrypt w taki sposób:
./backup_multi.php [option] [slot]
Przy czym opcjami mogą być:
backup - tworzy kopię na kasetce (cartridge) oznaczonej jako dany dzień tygodnia (albo z podaniem numeru kasetki)
list - wyświetla zawartość załadowanej lub wskazanej kasetki z taśmą (cartridge)
status - wyświetla status autoloadera
load - ładuje kasetkę z podanego slotu
unload - odkłada kasetkę do slotu, z którego została wcześniej pobrana
rewind - przewijanie taśmy do początku
erase  - całkowite kasowanie taśmy
Skrypt ten ma następującą politykę tworzenia kopii zapasowych na tasiemkach w oparciu na istniejącym urzadzeniu o nazwie autoloader:
slot 1 - poniedziałek
slot 2 - wtorek
slot 3 - środa
slot 4 - czwartek
slot 5 - piątek
slot 6 - ostatni dzień co drugiego tygodnia (jeszcze nie działa)
slot 7 - ostatni dzień miesiąca (jeszcze nie działa)
slot 8 - ostatni dzień co trzeciego miesiąca (jeszcze nie działa)
Oto kod:
#! /usr/local/bin/php -f
# by Adam Kucza (c) 2007
<?
# the backup policy of this script
# slot 1 - monday
# slot 2 - tuesday
# slot 3 - wednesday
# slot 4 - thursday
# slot 5 - friday
# slot 6 - last day of every 2nd week
# slot 7 - last day of the month
# slot 8 - last day of every 3rd month
#settings
define (”DATE”,         date(”Y-m-d_H.i.s”));
define (”DAY_OF_WEEK”,  date(”N”));
define (”LOGFILE”,      „/var/log/backup/backup_”.DATE.”.log”);
define (”TAPEDRIVE”,    „-f /dev/sa0″);
define (”CHANGER”,      „/dev/pass1″);
define (”TAR”,          „/usr/bin/tar”);
define (”MT”,           „/usr/bin/mt”);
define (”MTX”,          „/usr/local/sbin/mtx”);
define (”MAX_SLOTS”,    „8″);
define (”BACKUPLIST”,   „/fox/ustawienia/backup/backup_multi.lst”);
$x = $_SERVER["argv"];
//print_r($x);
if (count($x)==2 || count($x)==3)
{
    $z = „”;
    switch ($x[1])
    {
	case „status”:
	    # show changer status
	    $z = MTX.” -f „.CHANGER.” status”;
	    system($z);
	    break;
	case „load”:
	    # load cartridge from slot numbered as current day of the week
	    # mtx -f /dev/pass1 load 1
	    // firstly free device -> unload cartridge (for sure & safety)
	    $z = $x[0].” unload”;
	    system ($z);
	    //secondly load cartridge (by default or by specified)
	    $z = MTX.” -f „.CHANGER.” load „;
	    if ($x[2] && $x[2]>=1 && $x[2]<=MAX_SLOTS) $z .= $x[2]; else $z .= DAY_OF_WEEK;
	    system($z);
	    break;
	case "unload":
	    # unload cartridge into slot
	    # mtx -f /dev/pass1 unload
	    $z = MTX." -f ".CHANGER." unload";
	    system($z);
	    break;
	case "rewind":
	    # rewind the cartridge
	    $z = MT." ".TAPEDRIVE." rewind";
	    system($z);
	    break;
	case "erase":
	    # erase the cartridge
	    $z = MT." ".TAPEDRIVE." erase";
	    system($z);
	    break;
	case "list":
	    # list of contents of cartridge
	    # tar -f /dev/sa0 -tv 
	    // if there is a slot
	    if ($x[2] && $x[2]>=1 && $x[2]<=MAX_SLOTS)
	    {
		// replace the cartridge
		$z = $x[0]." unload";
		system ($z);
		$z = MTX." -f ".CHANGER." load ".$x[2];
		system($z);
	    }
	    $z = TAR." -tv ".TAPEDRIVE;
	    system($z);
	    break;
	case "backup":
	    # make backup on cartridge
	    # tar -f /dev/sa0 -cv /etc
	    // reload the cartridge from correct slot
	    $z = MTX." -f ".CHANGER." load ";
	    if ($x[2] && $x[2]>=1 && $x[2]<=MAX_SLOTS) $z .= $x[2]; else $z .= DAY_OF_WEEK;
	    system($z);
	    # backup data
	    echo "\nstarting backup...\n";
	    $z = TAR." -cv ".TAPEDRIVE." -T ".BACKUPLIST;
	    system($z);
	    # put list of contents into logfile
	    $z = $x[0]." list >> „.LOGFILE;
	    system($z);
	    break;
    } //end of switch
    echo $z;
}
else
{
    echo „\nSimple AutoLoader BackUp Script v.1.0 by Adam Kucza (c) 2007\n\n”;
    echo „\nThis script operates on autoloader existing in /dev location due to following backup policy:\n”;
    echo ”  slot 1 - monday\n”;
    echo ”  slot 2 - tuesday\n”;
    echo ”  slot 3 - wednesday\n”;
    echo ”  slot 4 - thursday\n”;
    echo ”  slot 5 - friday\n”;
    echo ”  slot 6 - last day of every 2nd week\n”;
    echo ”  slot 7 - last day of the month\n”;
    echo ”  slot 8 - last day of every 3rd month\n”;
    echo „\nusage:\n”;
    echo ”  „.$x[0].” [option] [slot]\n”;
    echo „\navailable options:\n”;
    echo ”   backup - make backup on the cartridge from slot due to day of week (by default)\n”;
    echo ”   list   - display the list of contents on loaded cartridge\n”;
    echo ”   status - display autoloader status\n”;
    echo ”   load   - load cartridge from slot (1-8) numbered as day of the week (by default)\n”;
    echo ”   unload - unload the cartridge into last used slot\n”;
    echo ”   rewind - rewind the cartridge (if any) to begin\n”;
    echo ”   erase  - erase entire cartridge (if any, it takes time)\n”;
    echo „\nexamples:\n”;
    echo ”  „.$x[0].” status\t\t- display status\n”;
    echo ”  „.$x[0].” backup [slot]\t- make backup (into [slot] if specified)\n”;
    echo ”  „.$x[0].” load [slot]\t- load cartridge (into [slot] - if specified)\n”;
    echo ”  „.$x[0].” unload\t\t- unload cartridge\n”;
}
echo „\n”;
?>
 » wpis obejrzano 18126 razy przez 2539 internautów «