HowTo: DSM 6 - Erstellung einer Sicherungsaufgabe nach der alten Methode

Status
Für weitere Antworten geschlossen.

MacD

Benutzer
Mitglied seit
30. Mrz 2016
Beiträge
17
Punkte für Reaktionen
0
Punkte
1
OK. Und wie müsste das beim Anlegen einer neuen Datensicherungsaufgabe dann aussehen....?
Vielleicht bin ich ja nur zu blind....
Gruß
MacD
 

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
14.164
Punkte für Reaktionen
412
Punkte
393
Hallo,
die letzten beiden Einträge mit DSM 5 in Klammern.

HB_old.PNG

Gruß Götz
 

MacD

Benutzer
Mitglied seit
30. Mrz 2016
Beiträge
17
Punkte für Reaktionen
0
Punkte
1
Was lange wärt.... Warum auch immer, ich musste meine DS erst einmal komplett neu durchstarten. Jetzt klappt's. Besten Dank an das Genie, das uns das dateibasierte Backup auch unter DSM6 zurückgebracht hat.... ;-)
 

cmdr_tom

Benutzer
Mitglied seit
24. Jul 2010
Beiträge
208
Punkte für Reaktionen
2
Punkte
24
Hallo,

da ich auch ein Befürworter der alten Methode bin habe ich mir mal ein paar Skripte geschrieben, die das unter Verwendung des Hyperbackups vornehmen. Der Vorteil dabei ist, dass man Backupjobs bequem im DSM anlegen kann, sowie Rücksicherungen darüber durchführen kann. Auch erhält man dadurch Benachrichtigungen, wenn ein Backup fehlschlägt. Zusätzlich weckt mein Skript mittels PHP den fernen Server und fährt ihn nach dem Backup wieder herunter. Ich sichere hier mittels DeltaCopy Server und rsync auf einen Windows Server. Ich muss das in mehreren Posts verteilen, weil es sonst zu groß wird. Eventuell kann ein Admin das aufräumen.

Damit ihr den Windows Server von eurer Synology starten könnt braucht ihr das folgende PHP Skript (das ist nicht von mir, sondern habe ich irgendwo mal im Internet gefunden):
Rich (BBCode):
<?php

 function WakeOnLan($mac_address, $addr, $cidr, $port)
 {
    // Prepare magic packet: part 1/3 (defined constant)
 	$buf="";
 	for($a=0; $a<6; $a++) $buf .= chr(255); // the defined constant as represented in hexadecimal: FF FF FF FF FF FF (i.e., 6 bytes of hexadecimal FF)
 	//Check whether $mac_address is valid
 	$mac_address=strtoupper($mac_address);
 	$mac_address=str_replace(":", "-", $mac_address);
 	if ((!preg_match("/([A-F0-9]{2}[-]){5}([0-9A-F]){2}/",$mac_address)) || (strlen($mac_address) != 17))
 	{
 		$error = "Eingabefehler: Das Format der MAC-Addresse (<?=$mac_address?>) ist nicht \"xx-xx-xx-xx-xx-xx\".<br>\n";
 		return $error; // false
 	}
 	else
 	{
 		// Prepare magic packet: part 2/3 (16 times MAC-address)
 		$addr_byte = explode('-', $mac_address); // Split MAC-address into an array of (six) bytes
 		$hw_addr="";
 		for ($a=0; $a<6; $a++) $hw_addr .= chr(hexdec($addr_byte[$a])); // Convert MAC-address from bytes to hexadecimal to decimal
 		$hw_addr_string="";
 		for ($a=0; $a<16; $a++) $hw_addr_string .= $hw_addr;
 		$buf .= $hw_addr_string;
 	}
 	// Resolve broadcast address
 	if (filter_var ($addr, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) // same as (but easier than):  preg_match("/\b(([01]?\d?\d|2[0-4]\d|25[0-5])\.){3}([01]?\d?\d|2[0-4]\d|25[0-5])\b/",$addr)
 	{
 		// $addr has an IP-adres format
 	}
 	else
 	{
 		// Whitespaces confuse name lookups
 		$addr=trim($addr);
 		// If you pass to gethostbyname() an:
 		//	unresolvable domainname, gethostbyname() returns the domainname (rather than 'false')
 		//	IP address, gethostbyname() returns that IP address.
 		if (gethostbyname($addr) == $addr)
 		{
 			// $addr is NOT a resolvable domainname
 			$error = "Input error: host name of broadcast address is unresolvable.<br>\n";
 			return $error; // false
 		}
 		else
 		{
 			// $addr IS a resolvable domainname
 			$addr = gethostbyname($addr);
 		}
 	}
 	// Store input value for cookie
 	$resolved_addr = $addr;
 	// If $cidr is set, replace $addr for its broadcast address
 	if ($cidr != "")
 	{
 		// Check whether $cidr is valid
 		if ((!ctype_digit($cidr)) || ($cidr < 0) || ($cidr > 32))
 		{
 			$error = "Input error: CIDR subnet mask is not a number within the range of 0 till 32.<br>\n";
 			return $error; // false
 		}
 		// Convert $cidr from one decimal to one inverted binary array
 		$inverted_binary_cidr="";
 		for ($a=0; $a<$cidr; $a++) $inverted_binary_cidr .= "0"; // Build $inverted_binary_cidr by $cidr * zeros (this is the mask)
 		$inverted_binary_cidr = $inverted_binary_cidr.substr("11111111111111111111111111111111",0,32-strlen($inverted_binary_cidr)); // Invert the mask (by postfixing ones to $inverted_binary_cidr untill 32 bits are filled/ complete)
 		$inverted_binary_cidr_array = str_split($inverted_binary_cidr); // Convert $inverted_binary_cidr to an array of bits
 		// Convert IP address from four decimals to one binary array
 		$addr_byte = explode('.', $addr); // Split IP address into an array of (four) decimals
 		$binary_addr="";
 		for ($a=0; $a<4; $a++) {
 			$pre = substr("00000000",0,8-strlen(decbin($addr_byte[$a]))); // Prefix zeros
 			$post = decbin($addr_byte[$a]); // Postfix binary decimal
 			$binary_addr .= $pre.$post;
 		}
 		$binary_addr_array = str_split($binary_addr); // Convert $binary_addr to an array of bits
 		// Perform a bitwise OR operation on arrays ($binary_addr_array & $inverted_binary_cidr_array)
 		$binary_broadcast_addr_array="";
 		for ($a=0; $a<32; $a++) $binary_broadcast_addr_array[$a] = ($binary_addr_array[$a] | $inverted_binary_cidr_array[$a]); // binary array of 32 bit variables ('|' = logical operator 'or')
 		$binary_broadcast_addr = chunk_split(implode("", $binary_broadcast_addr_array),8,"."); // build binary address of four bundles of 8 bits (= 1 byte)
 		$binary_broadcast_addr = substr($binary_broadcast_addr,0,strlen($binary_broadcast_addr)-1); // chop off last dot ('.')
 		$binary_broadcast_addr_array = explode(".", $binary_broadcast_addr); // binary array of 4 byte variables
 		$broadcast_addr_array="";
 		for ($a=0; $a<4; $a++) $broadcast_addr_array[$a] = bindec($binary_broadcast_addr_array[$a]); // decimal array of 4 byte variables
 		$addr = implode(".", $broadcast_addr_array); // broadcast address
 	}
 	// Check whether $port is valid
 	if ((!ctype_digit($port)) || ($port < 0) || ($port > 65536))
 	{
 		$error = "Input error: Port is not a number within the range of 0 till 65536.<br>\n";
 		return $error; // false
 	}
 	// Check whether UDP is supported
 	if (!array_search('udp', stream_get_transports()))
 	{
 		$error = "No magic packet can been sent, since UDP is unsupported (not a registered socket transport).<br>\n";
 		return $error; // false
 	}
 	if (function_exists('fsockopen'))
 	{
 		// Try fsockopen function - To do: handle error 'Permission denied'
 		$socket=fsockopen("udp://" . $addr, $port, $errno, $errstr);
 		if($socket)
 		{
 			$socket_data = fwrite($socket, $buf);
 			if($socket_data)
 			{
 				$function = "fwrite";
 //				$sent_fsockopen = "A magic packet of ".$socket_data." bytes has been sent via UDP to IP address: ".$addr.":".$port.", using the '".$function."()' function.<br>";
 				$sent_fsockopen = "OK (fsockopen)" ;
 //				$content = bin2hex($buf);
 //				$sent_fsockopen = $sent_fsockopen."Contents of magic packet:<br><textarea rows=\"1\" name=\"content\" cols=\"".strlen($content)."\">".$content."</textarea><br>\n";
 				fclose($socket);
 				unset($socket);
 				return $sent_fsockopen; // true
 			}
 			else
 			{
 				echo "Using 'fwrite()' failed, due to error: '".$errstr."' (".$errno.")<br>\n";
 				fclose($socket);
 				unset($socket);
 			}
 		}
 		else
 		{
 			//echo "Nutzung der Funktion 'fsockopen()' fehlgeschlagen - eventuell Zugriffseinschränkung<br>\n";
 			unset($socket);
 		}
 	}
 	// Try socket_create function
 	if (function_exists('socket_create'))
 	{
 		$socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP); // create socket based on IPv4, datagram and UDP
 		if($socket)
 		{
 			$level = SOL_SOCKET; // to enable manipulation of options at the socket level (you may have to change this to 1)
 			$optname = SO_BROADCAST; // to enable permission to transmit broadcast datagrams on the socket (you may have to change this to 6)
 			$optval = true;
 			$opt_returnvalue = socket_set_option($socket, $level, $optname, $optval);
 			if($opt_returnvalue < 0)
 			{
 				$error = "Using 'socket_set_option()' failed, due to error: '".socket_strerror($opt_returnvalue)."'<br>\n";
 				return $error; // false
 			}
 			$flags = 0;
 			// To do: handle error 'Operation not permitted'
 			$socket_data = socket_sendto($socket, $buf, strlen($buf), $flags, $addr, $port);
 			if($socket_data)
 			{
 				$function = "socket_sendto";
 //				$socket_create = "A magic packet of ".$socket_data." bytes has been sent via UDP to IP address: ".$addr.":".$port.", using the '".$function."()' function.<br>";
 //				$content = bin2hex($buf);
 //				$socket_create = $socket_create."Contents of magic packet:<br><textarea rows=\"1\" name=\"content\" cols=\"".strlen($content)."\">".$content."</textarea><br>\n";
 				$socket_create = "OK (create)";
 				socket_close($socket);
 				unset($socket);
 				return $socket_create; // true
 			}
 			else
 			{
 				$error = "Using 'socket_sendto()' failed, due to error: '".socket_strerror(socket_last_error($socket))."' (".socket_last_error($socket).")<br>\n";
 				socket_close($socket);
 				unset($socket);
 				return $error; // false
 			}
 		}
 		else
 		{
 			$error = "Using 'socket_create()' failed, due to error: '".socket_strerror(socket_last_error($socket))."' (".socket_last_error($socket).")<br>\n";
 			return $error; // false
 		}
 	}
 	else
 	{
 		$error = "No magic packet has been sent, since no functions are available to transmit it.<br>\n";
 		return $error; // false
 	}
 }

 $cidr = "27";                        // MASK: 255.255.255.224 ==> 27 (3 Byte * 8 Bit)
 $port = "7";                         // Bei mir ging auch 1 und 7, weitere ?


 $mac_address = "";
 $addr = "10.11.1.2";

 if($_GET['machine'] == "backupsrv")
 {
 	$mac_address = "00-00-00-00-00-00"; //MAC Adresse des Backupserver eingeben
 	$machine = "Backupserver";
 	$addr = "10.11.1.13";
 	$port = "7";
 	$cidr = "27";
 }

 $Return_WakeOnLan = WakeOnLan($mac_address, $addr, $cidr, $port); // executes this function
echo "Rückmeldung:   ",$Return_WakeOnLan;
     $TimeStamp = time();
     $datum = date("d.m.Y",$TimeStamp);
     $uhrzeit = date("H:i:s",$TimeStamp);
     echo "   ",$datum," - ",$uhrzeit," Uhr";
?>
 

Anhänge

  • 2016-04-01_Hyperbackup_Joblist.jpg
    2016-04-01_Hyperbackup_Joblist.jpg
    21,2 KB · Aufrufe: 470
  • 2016-04-01_Hyperbackup_Tasks.PNG
    2016-04-01_Hyperbackup_Tasks.PNG
    4,8 KB · Aufrufe: 466

cmdr_tom

Benutzer
Mitglied seit
24. Jul 2010
Beiträge
208
Punkte für Reaktionen
2
Punkte
24
Windows für Remote Shutdown vorbereiten

Um den Server wieder herunterfahren zu können, benötigt ihr nur einige Einstellungen auf dem Windows Server bzw. Windows PC (Getestet von mir auf Windows Server 2012 R2 und Windows Server 2010 Technical PreView 4):

  • Stellt in den Windows Diensten den Dienst "Remote Registry" auf "Automatisch"
  • Erlaubt in der Windows Firewall (sofern aktiv) den Zugriff für “Windows Management Instrumentation (WMI)”
  • Gebt einem Benutzer Remote Desktop Rechte, der für das Remote Herunterfahren dienen soll

Ich sichere damit dateibasiert die gemeinsamen Ordner, sowie sämtliche Datenbanken auf mittels rsync inkl. eigenem Skript für die Maria Datenbanken. Wenn ihr keine Datenbank sichern wollt, könnt ihr diesen Punkt einfach weglassen.

Hyperbackup aufrufen

Meldet euch am DSM an und gebt dann in der Browserzeile wie in einigen Post vorher erwähnt folgendes ein:
Rich (BBCode):
http://<IP-Adresse eures NAS>/?legacyBackup=1
ein. Damit könnt ihr ganz unten in der Liste Backupjobs anlegen, die dateibasiert sind.
Anhang anzeigen 29443

Nachdem ihr die Jobs angelegt habt, müsst ihr die ID des jeweiligen Jobs herausfinden. Dafür müsst ihr auf die Commandline und euch dort mit "admin" anmelden. Öffnet dann die Datei mit der Backupkonfiguration mit folgendem Befehl
Rich (BBCode):
vim /usr/syno/etc/synobackup.conf
. In dieser Datei sucht euch die vorher angelegten Backupjobs heraus und notiert euch die ID, welche in den eckigen Klammern steht, also die Zahl 10 bei
Rich (BBCode):
[task 10]
usw. Ich werde den Code beispielsweise für die Backupjobs 1, 2 und 3 veranschaulichen.
Anhang anzeigen 29444

Nachdem ihr nun die IDs der einzelnen Hyperbackup Jobs habt, erstellt ein Skript
Rich (BBCode):
vim /volume1/scripts_logs/scripts/backup2supermicro.sh
in einem Ordner eurer Wahl. Bei mir laufen sämtliche Skripts mit passenden Logs in einem gemeinsamen Ordner. Fügt in diese Datei folgenden Code ein:
Rich (BBCode):
#!/bin/sh

datum="`date +%Y-%m-%d`"
zeit="`date +%H:%M:%S`"

# Countdown bis zum Aufwachen des Server
countdown=120

NOW=$(date +"%F")

# Maximales Alter der Logfile
tage=14
find /volume1/scripts_logs/logs/backup -iname "*.log" -mtime +$tage -delete

# Sorgt dafuer, dass das Logs Verzeichnis auch exisitert, sonst gibt es Fehler
logfile="/volume1/scripts_logs/logs/backup/$datum-backup2backupserver.log"

main()
{
        # IP Adresse des Backupservers
	IP='10.11.1.13'
	zeit="`date +%H:%M:%S`"
	echo "$datum $zeit Uhr|##############################  Anwendung gestartet ##################################"
	zeit="`date +%H:%M:%S`"
	echo "$datum $zeit Uhr|INFO Pruefung, ob Backupserver eingeschaltet ist"

	if ping -c 2 $IP > /dev/null; then
		zeit="`date +%H:%M:%S`"
		echo "$datum $zeit Uhr|INFO Backupserver ist eingeschaltet und erreichbar"

                # Wenn ihr keine DB sichert, den Punkt auskommentieren
		echo "$datum $zeit Uhr|INFO Starte Datenbanksicherung"
        	/volume1/scripts_logs/scripts/MariaDBbackup.sh >> $logfile
        	zeit="`date +%H:%M:%S`"
        	echo "$datum $zeit Uhr|INFO Datenbankensicherung abgeschlossen"

		zeit="`date +%H:%M:%S`"
		echo "$datum $zeit Uhr|INFO Hyperbackup von documents"
		/var/packages/HyperBackup/target/bin/synonetbkp --backup -k 1
		zeit="`date +%H:%M:%S`"
		echo "$datum $zeit Uhr|INFO Hyperbackup von documents abgeschlossen"

		zeit="`date +%H:%M:%S`"
		echo "$datum $zeit Uhr|INFO Hyperbackup von drivers"
		/var/packages/HyperBackup/target/bin/synonetbkp --backup -k 2
		zeit="`date +%H:%M:%S`"
        	echo "$datum $zeit Uhr|INFO Hyperbackup von drivers abgeschlossen"

		zeit="`date +%H:%M:%S`"
		echo "$datum $zeit Uhr|INFO Hyperbackup von homes"
		/var/packages/HyperBackup/target/bin/synonetbkp --backup -k 3
		zeit="`date +%H:%M:%S`"
        	echo "$datum $zeit Uhr|INFO Hyperbackup von homes abgeschlossen"
	
                # Das Herunterfahren des Windows-Servers wird über net rpc bewerkstelligt
		echo "$datum $zeit Uhr|INFO Herunterfahren von Backupserver"
                net rpc SHUTDOWN -I 10.11.1.13 -U <Benutzername des Windows Benutzers>%<Passwort des Windows Benutzers> -t 10 -C "Backup abgeschlossen. Server wird in 10 Sekunden heruntergefahren!" >> $logfile
		
		echo "$datum $zeit Uhr|INFO Warte 30 Sekunden bis Backupserver herunterfahren wurde"
		sleep 30

		if ping -c 2 $IP > /dev/null; then
			zeit="`date +%H:%M:%S`"
			echo "$datum $zeit Uhr|FEHLER Herunterfahren von Backupserver fehlgeschlagen"
			echo "$datum $zeit Uhr|INFO Bitte Server manuell herunterfahren"
		    echo "$datum $zeit Uhr|############################## Anwendung beendet ####################################"
		    exit 1
		else
			 zeit="`date +%H:%M:%S`"
			 echo "$datum $zeit Uhr|INFO Herunterfahren von Backupserver erfolgreich"
			 echo "$datum $zeit Uhr|############################## Anwendung beendet ####################################"
			 exit 0
		fi
	else
		zeit="`date +%H:%M:%S`"
		echo "$datum $zeit Uhr|INFO Backupserver ist offline"
		echo "$datum $zeit Uhr|INFO Backupserver wird nun eingeschaltet"

                # Hier wird ein php Skript ausgefuehrt, welches mittels WOL den Server aufweckt
		curl "http://localhost/system/StarteServer.php?machine=backupsrv"
		echo "$datum $zeit Uhr|INFO Warte $countdown Sekunden bis Backupserver hochgefahren ist"
		sleep $countdown

		zeit="`date +%H:%M:%S`"
		echo "$datum $zeit Uhr|INFO Pruefung, ob Backupserver hochgefahren wurde"

		if ping -c 2 $IP > /dev/null; then
			zeit="`date +%H:%M:%S`"
			echo "$datum $zeit Uhr|INFO Backupserver erfolgreich gestartet und erreichbar"
			echo "$datum $zeit Uhr|INFO Starte Datenbanksicherung"
			
                        # DB Backup optional
			/volume1/scripts_logs/scripts/MariaDBbackup.sh >> $logfile
			zeit="`date +%H:%M:%S`"		
			echo "$datum $zeit Uhr|INFO Datenbankensicherung abgeschlossen"

			zeit="`date +%H:%M:%S`"
			echo "$datum $zeit Uhr|INFO Hyperbackup von documents"
			/var/packages/HyperBackup/target/bin/synonetbkp --backup -k 1
			zeit="`date +%H:%M:%S`"
			echo "$datum $zeit Uhr|INFO Hyperbackup von documents abgeschlossen"

			zeit="`date +%H:%M:%S`"
	                echo "$datum $zeit Uhr|INFO Hyperbackup von drivers"
	                /var/packages/HyperBackup/target/bin/synonetbkp --backup -k 2
	                zeit="`date +%H:%M:%S`"
	                echo "$datum $zeit Uhr|INFO Hyperbackup von drivers abgeschlossen"

			zeit="`date +%H:%M:%S`"
			echo "$datum $zeit Uhr|INFO Hyperbackup von homes"
			/var/packages/HyperBackup/target/bin/synonetbkp --backup -k 3
			zeit="`date +%H:%M:%S`"
			echo "$datum $zeit Uhr|INFO Hyperbackup von homes abgeschlossen"

			zeit="`date +%H:%M:%S`"
			echo "$datum $zeit Uhr|INFO Herunterfahren von Backupserver"
			net rpc SHUTDOWN -I 10.11.1.13 -U  <Benutzername des Windows Benutzers>%<Passwort des Windows Benutzers> -t 10 -C "Backup abgeschlossen. Server wird in 10 Sekunden heruntergefahren!" >> $logfile
			sleep 30
			
			if ping -c 2 $IP > /dev/null; then
				zeit="`date +%H:%M:%S`"
				echo "$datum $zeit Uhr|FEHLER Herunterfahren von Backupserver fehlgeschlagen"
				echo "$datum $zeit Uhr|INFO Bitte Server manuell herunterfahren"
	            echo "$datum $zeit Uhr|############################## Anwendung beendet ####################################"
				exit 1
			else
				zeit="`date +%H:%M:%S`"
                echo "$datum $zeit Uhr|INFO Herunterfahren von Backupserver erfolgreich"
                echo "$datum $zeit Uhr|############################## Anwendung beendet ####################################"
				exit 0
			fi
		else
			zeit="`date +%H:%M:%S`"
            echo "$datum $zeit Uhr|FEHLER Backupserver konnte nicht gestartet werden"
			echo "$datum $zeit Uhr|FEHLER Backup fehlgeschlagen - beende Anwendung"
			echo "$datum $zeit Uhr|############################## Anwendung beendet ####################################"
            exit 1
		fi

	fi
	zeit="`date +%H:%M:%S`"
	echo "$datum $zeit Uhr| ############################## Anwendung beendet ####################################"
}

main >$logfile

Man kann die Hyperbackup Jobs auch direkt auf der Commandline mit folgenden Befehl aufrufen:
Rich (BBCode):
/var/packages/HyperBackup/target/bin/synonetbkp --backup -k <task ID>
 

cmdr_tom

Benutzer
Mitglied seit
24. Jul 2010
Beiträge
208
Punkte für Reaktionen
2
Punkte
24
Historisierte Datenbankreplikation auf einen anderen MariaDB Server

Zusätzlich braucht ihr noch das Datenbanksicherungsskript - das Skript kann natürlich auch in dem oberen integriert werden. Für die DB Sicherung habe ich an der Quell- und Ziel Datenbank einen User backup mit Passwort backup angelegt. Als Beispiel nehme ich hier die Datenbank "Spritpreisrechner". Das Skript macht nichts anderes, als einen Dump und pusht diesen dann sofort wieder in die anderen Datenbank unter Anlage einer Datenbank mit Namen "<Jahr>-<Monat>-<Tag>-<DB Name>". Vorteil dieser Methode - es werden stets tagesaktuelle Stände der DBs angelegt - im Grund ist dies eine Replikation, was natürlich bei entsprechender Größe der Daten sehr speicherintensiv ist.
Die Anlage der DB habe ich bisher nicht ins eigentliche Sicherungsskript integriert, daher erfolgt der Aufruf extern.

PHP Skript zum Anlegen der Sicherungs DB:
Rich (BBCode):
<?php

$dbname="";
$dbhost="10.11.1.13";
$dbuser="backup";
$dbpass="backup";
mysql_connect($dbhost,$dbuser,$dbpass);
//mysql_select_db($dbname);

$date = date('Y-m-d');

$datebase = $date."-".$argv[0];

//Wir erstellen die DB
$sql_cmd = "CREATE DATABASE ".$database.";";

mysql_query($sql_cmd);

mysql_close();

?>

Und hier das eigentliche Skript zur DB Sicherung.

Rich (BBCode):
#!/bin/sh

datum="`date +%Y-%m-%d`"
zeit="`date +%H:%M:%S`"

NOW=$(date +"%F")

logfile="/volume1/scripts_logs/logs/mariaDB_backup.log"

logs=$(cat $logfile)

main()
{
	echo "$logs"
	
	zeit="`date +%H:%M:%S`"
	echo "$datum $zeit Uhr | Sichere MariaDB spritpreisrechner"
	mysqldump --opt -u backup -pbackup spritpreisrechner > /volume1/backup/$datum-spritpreisrechner.sql
	
	zeit="`date +%H:%M:%S`"	
	echo "$datum $zeit Uhr | Importiere spritpreisrechner Dump in MariaDB des Backupservers"
        # Jetzt rufen wir das PHP Skript zur Anlage der DB auf
	curl "http://localhost/system/scripts/createDB.php?dbname=spritpreisrechner";
	mysql -h 10.11.1.13 -u backup -pbackup $datum-spritpreisrechner < /volume1/backup/$datum-spritpreisrechner.sql
	rm -f /volume1/backup/$datum-spritpreisrechner.sql
	
	echo "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
	exit 0;
}
main >$logfile

chown -R backup:users /volume1/backup/MariaDB
chmod -R 775 /volume1/backup/MariaDB

chown -R backup:users /volume1/scripts_logs/logs/$logfile
chmod -R 775 /volume1/scripts_logs/logs/$logfile

Ich bin nicht der Shell/PHP Experte und die Skripte lassen sich sicher noch sehr optimieren. Ich hoffe auch, dass das einigermaßen anschaulich ist.
 

khkruggel

Benutzer
Mitglied seit
22. Jun 2015
Beiträge
5
Punkte für Reaktionen
0
Punkte
0
Da würde mich ja mal interessieren, wie du dich als root anmelden willst, das geht nämlich seit 6.0 nicht mehr.
 

cmdr_tom

Benutzer
Mitglied seit
24. Jul 2010
Beiträge
208
Punkte für Reaktionen
2
Punkte
24
Hallo,

man kann sich mit "admin" anmelden und dann mittels "sudo" auch Systemdateien editieren.
 

AxKaSe

Benutzer
Mitglied seit
25. Mai 2015
Beiträge
11
Punkte für Reaktionen
0
Punkte
7
Das hört sich gut an!
Ich würde es gerne ausprobieren!
Telnet oder SSH habe ich schon oft gelesen und gehört, kann es aber nicht zuordnen bzw. anwenden.
Ich habe die Eingabeaufforderung (unter Win10pro32Bit) geöffnet und diese Befehle eingegeben,
aber bekomme leider nur die Meldung "Befehl konnte nicht gefunden werden".
Nun muss ich erstmal herausfinden, wie das mit Telnet oder SSH funktioniert.
 

khkruggel

Benutzer
Mitglied seit
22. Jun 2015
Beiträge
5
Punkte für Reaktionen
0
Punkte
0
sudo.JPG
man liest das immer, aber funktionieren tut's nicht. Und warum so umständlich, wenn's auch einfacher geht (ging)
 

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
14.164
Punkte für Reaktionen
412
Punkte
393
Hallo,
einfach
sudo -i
eingeben, Passwort vom admin eingeben und fertig.

Gruß Götz
 

AndiHeitzer

Benutzer
Sehr erfahren
Mitglied seit
30. Jun 2015
Beiträge
3.341
Punkte für Reaktionen
633
Punkte
174
Die 2 neuen (alten) Symbole befinden sich leider ganz unten in der Liste. Synology hat für die in DSM 6 eingeführte Methode keinen neuen Icons erstellt, deswegen habe ich zur Unterscheidung den Zusatz (DSM 5) hinzugefügt).

Wichtig: In DSM 6.0 Final kann sich das natürlich wieder ändern. Die Änderungen müssen bei einer Neuinstallation oder Update des Paketes "HyperBackup" erneut durchgeführt werden.

Ich bin gestern auf dieses Thema aufmerksam geworden. Bei mir rennt die finale DSM6, die Textstellen habe ich gefunden und "korrigiert", jedoch bleiben die zu erwartenden Einträge leider unsichtbar.
 

whitbread

Benutzer
Mitglied seit
24. Jan 2012
Beiträge
1.294
Punkte für Reaktionen
54
Punkte
68
Neustart mind. des Paketes bzw. ggf. der NAS durchgeführt?
 

gente

Benutzer
Mitglied seit
07. Mrz 2016
Beiträge
252
Punkte für Reaktionen
0
Punkte
22
kann mich mit dem terminal vom Mac nicht mit benutzer root und passwort vom admin anmelden --> falsches passwort
mit benutzer admin und kennwort gehts, komisch.
Mit welchem Programm kopiert ihr dann die Datei und ändert dieselbe?
Bin da Neuling sorry...
LG Thomas
 

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
14.164
Punkte für Reaktionen
412
Punkte
393
Hallo,
wenn Du als admin angemeldet bist dann
sudo -i
eingeben, Passwort von admin eingeben und Du bist root. Auf der DS gibt es den Editor vi, mit dem sollte man sich etwas vertraut machen, siehe Wiki oder Internet.
Grundlegende Befehle auf der Kommandozeile

Gruß Götz
 

gente

Benutzer
Mitglied seit
07. Mrz 2016
Beiträge
252
Punkte für Reaktionen
0
Punkte
22
...bin als admin eingeloggt aber mein Passwort nimmt der terminal nicht: "sorry try again"
muß der admin noch bestimmte einstellungen oder rechte haben?
Zuerst mit vi datei in speicherpuffer kopieren und wie duplizieren und ändern und dann wieder im richtigen verzeichnis speichern?
Sollte aber erstmals ins root der synology kommen.
Danke
LG Thomas
 

AndiHeitzer

Benutzer
Sehr erfahren
Mitglied seit
30. Jun 2015
Beiträge
3.341
Punkte für Reaktionen
633
Punkte
174
Neustart mind. des Paketes bzw. ggf. der NAS durchgeführt?

Ja, das ist ja auch so beschrieben ...
Aber sei's drum, ich habe ein Ticket bei Synology aufgemacht, damit die filebasierte Methode wieder kommt.

Mit TimeBackup konnte der Anwender komfortabel durch die Sicherungspunkte im Dateisystem browsen. Das schöne daran war, das der Anwender auch nur die Dinge zu sehen bekommen hat, zu denen er auch ursprünglich die Rechte hatte.
Mit dem Hyperbackup-Explorer, kann der Anwender den kompletten Dateibestand durchforsten. Auch wenn er davor im Filesystem keine Rechte auf die entsprechenden Dateien hatte.
Sowas kommt halt vor, wenn man als Backup-Job die Sicherung aller HOME-Directories angelegt hat.
 

Passwort

Benutzer
Mitglied seit
15. Jul 2012
Beiträge
292
Punkte für Reaktionen
0
Punkte
16
Abgesehen davon, dass im diesem Thread keine Rede vom Backup auf einen anderen Syno Server ist, habe ich es auch mal versucht.
Version 1 ging schonml gar nicht, da meine synobackup.conf ganz anders aussieht und ich die entsprechenden Passagen teils gar nicht gefunden habe.
Version 2 habe ich durchgeführt, jetzt startet HyperBackup jedoch gar nicht mehr (sehe oben links nur das Symbol mit den umlaufenden Punkten, doch es passiert nichts). Zum bearbeiten musste ich die Datei backup.js aber erst in einen freigegeben Ordner verschieben und dann mit dem LO Writer öffnen (dieser Megacode war sonst nicht zu bewältigen), bearbeiten und speichern.
Nach einem Wiederherstellen der Ursprungsdatei gehts wieder normal, im Ursprungsmodus.

Habe ich was falsch gemacht?
 

khkruggel

Benutzer
Mitglied seit
22. Jun 2015
Beiträge
5
Punkte für Reaktionen
0
Punkte
0
vielen Dank, oh Gott, das hat geholfen. Ich frag auch nicht, warum es so verkompliziert wurde.
Ich wüsste aber zu gern, wer mir bei der Video-Station helfen könnte.
VG Karl-Heinz
 

QTip

Super-Moderator
Teammitglied
Mitglied seit
04. Sep 2008
Beiträge
2.341
Punkte für Reaktionen
14
Punkte
84
Abgesehen davon, dass im diesem Thread keine Rede vom Backup auf einen anderen Syno Server ist, habe ich es auch mal versucht.
Doch, als Ergänzungen (Post #1 unten) habe ich auch ein Backup zu einer anderen DS getestet und auch die Änderungen aufgelistet, Methode 2 ist aber eh besser.
Version 2 habe ich durchgeführt, jetzt startet HyperBackup jedoch gar nicht mehr
besorge dir Notepad++ oder PSPad, damit sollte es funktionieren. Die gibt es beide als Portable Version, also keine Installation notwendig. Achte nur darauf, das du die Zeilen nicht umbrichst und die Zeilenendekennung auf nur LF (Linux) steht. Ansonsten gäbe es noch Methode 3
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat