https://www.synology-wiki.de/api.php?action=feedcontributions&user=Itommes&feedformat=atom - Benutzerbeiträge [de]2024-03-29T00:09:09ZBenutzerbeiträgeMediaWiki 1.39.1https://www.synology-wiki.de/index.php?title=CMOS_Knopfzellen-Batterietypen&diff=7417CMOS Knopfzellen-Batterietypen2023-12-04T13:06:36Z<p>Itommes: </p>
<hr />
<div>Im CMOS-RAM-Speicher werden neben Datum und Uhrzeit weitere BIOS-Parameter gespeichert. Damit diese „flüchtigen“ Daten nach dem Ausschalten der Stromversorgung nicht verloren gehen, wird der CMOS-RAM-Speicher über eine Pufferbatterie kontinuierlich mit Strom versorgt. Als Pufferbatterien werden i.d.R. Rundzellen aus Lithium-Mangandioxid verwendet. Die Bezeichnung einer sogenannten Knopfzelle trägt das Kürzel CR gefolgt vom Durchmesser in Millimetern und der Höhe in 1/10 Millimetern. Eine Knopfzelle des Typs CR-2032 entspricht demnach einem Durchmesser von 20 mm bei einer Höhe von 3,2 mm. <br />
<br />
Die nachfolgende Tabelle bietet eine Übersicht über die benötigte Knopfzelle für die jeweilige DiskStation.<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! DiskStation !! Knopfzellentyp <br />
|-<br />
! DS115j<br />
| CR2032<br />
|-<br />
! DS118<br />
| CR1220<br />
|- <br />
! DS214+<br />
| CR2032<br />
|-<br />
! DS216+II<br />
| CR2032<br />
|-<br />
! DS216play<br />
| CR1220<br />
|-<br />
! DS218+<br />
| CR2032<br />
|-<br />
! DS218j<br />
| CR1220<br />
|-<br />
! DS220+<br />
| CR2032<br />
|-<br />
! DS224+<br />
| CR2032<br />
|-<br />
! DS413j<br />
| CR2032<br />
|-<br />
! DS415+<br />
| CR1220<br />
|-<br />
! DS416 slim<br />
| CR1220<br />
|-<br />
! DS423+<br />
| CR2032<br />
|-<br />
! DS720+<br />
| CR2032<br />
|-<br />
! DS916+<br />
| CR1220<br />
|-<br />
! DS920+<br />
| CR2032<br />
|-<br />
! DS1513+<br />
| CR1220<br />
|-<br />
! DS1515+<br />
| CR1220<br />
|-<br />
! DS1812+<br />
| CR1220<br />
|-<br />
! DS1815+<br />
| CR1220<br />
|-<br />
! RS1221+<br />
| CR2032<br />
|-<br />
! RS2416RP+<br />
| CR2032<br />
|}<br />
<br />
Fehlt etwas? Dann nutzt bitte [https://www.synology-forum.de/threads/cmos-batterie-sammelthread-batterietyp.129171/ diesen Thread] um weitere Vorschläge abzugeben. Ich werde versuchen, die Daten so zeitnah wie möglich in diese Tabelle aufzunehmen.</div>Itommeshttps://www.synology-wiki.de/index.php?title=CMOS_Knopfzellen-Batterietypen&diff=7416CMOS Knopfzellen-Batterietypen2023-11-15T19:07:06Z<p>Itommes: </p>
<hr />
<div>Im CMOS-RAM-Speicher werden neben Datum und Uhrzeit weitere BIOS-Parameter gespeichert. Damit diese „flüchtigen“ Daten nach dem Ausschalten der Stromversorgung nicht verloren gehen, wird der CMOS-RAM-Speicher über eine Pufferbatterie kontinuierlich mit Strom versorgt. Als Pufferbatterien werden i.d.R. Rundzellen aus Lithium-Mangandioxid verwendet. Die Bezeichnung einer sogenannten Knopfzelle trägt das Kürzel CR gefolgt vom Durchmesser in Millimetern und der Höhe in 1/10 Millimetern. Eine Knopfzelle des Typs CR-2032 entspricht demnach einem Durchmesser von 20 mm bei einer Höhe von 3,2 mm. <br />
<br />
Die nachfolgende Tabelle bietet eine Übersicht über die benötigte Knopfzelle für die jeweilige DiskStation.<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! DiskStation !! Knopfzellentyp <br />
|-<br />
! DS115j<br />
| CR2032<br />
|-<br />
! DS118<br />
| CR1220<br />
|- <br />
! DS214+<br />
| CR2032<br />
|-<br />
! DS216+II<br />
| CR2032<br />
|-<br />
! DS216play<br />
| CR1220<br />
|-<br />
! DS218+<br />
| CR2032<br />
|-<br />
! DS218j<br />
| CR1220<br />
|-<br />
! DS220+<br />
| CR2032<br />
|-<br />
! DS224+<br />
| CR2032<br />
|-<br />
! DS413j<br />
| CR2032<br />
|-<br />
! DS415+<br />
| CR1220<br />
|-<br />
! DS416 slim<br />
| CR1220<br />
|-<br />
! DS720+<br />
| CR2032<br />
|-<br />
! DS916+<br />
| CR1220<br />
|-<br />
! DS920+<br />
| CR2032<br />
|-<br />
! DS1513+<br />
| CR1220<br />
|-<br />
! DS1515+<br />
| CR1220<br />
|-<br />
! DS1812+<br />
| CR1220<br />
|-<br />
! DS1815+<br />
| CR1220<br />
|-<br />
! RS1221+<br />
| CR2032<br />
|-<br />
! RS2416RP+<br />
| CR2032<br />
|}<br />
<br />
Fehlt etwas? Dann nutzt bitte [https://www.synology-forum.de/threads/cmos-batterie-sammelthread-batterietyp.129171/ diesen Thread] um weitere Vorschläge abzugeben. Ich werde versuchen, die Daten so zeitnah wie möglich in diese Tabelle aufzunehmen.</div>Itommeshttps://www.synology-wiki.de/index.php?title=CMOS_Knopfzellen-Batterietypen&diff=7415CMOS Knopfzellen-Batterietypen2023-11-15T19:04:29Z<p>Itommes: </p>
<hr />
<div>Im CMOS-RAM-Speicher werden neben Datum und Uhrzeit weitere BIOS-Parameter gespeichert. Damit diese „flüchtigen“ Daten nach dem Ausschalten der Stromversorgung nicht verloren gehen, wird der CMOS-RAM-Speicher über eine Pufferbatterie kontinuierlich mit Strom versorgt. Als Pufferbatterien werden i.d.R. Rundzellen aus Lithium-Mangandioxid verwendet. Die Bezeichnung einer sogenannten Knopfzelle trägt das Kürzel CR gefolgt vom Durchmesser in Millimetern und der Höhe in 1/10 Millimetern. Eine Knopfzelle des Typs CR-2032 entspricht demnach einem Durchmesser von 20 mm bei einer Höhe von 3,2 mm. <br />
<br />
Die nachfolgende Tabelle bietet eine Übersicht über die benötigte Knopfzelle für die jeweilige DiskStation.<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! DiskStation !! Knopfzellentyp <br />
|-<br />
! DS115j<br />
| CR2032<br />
|-<br />
! DS118<br />
| CR1220<br />
|- <br />
! DS214+<br />
| CR2032<br />
|-<br />
! DS216play<br />
| CR1220<br />
|-<br />
! DS216+II<br />
| CR2032<br />
|-<br />
! DS218+<br />
| CR2032<br />
|-<br />
! DS218j<br />
| CR1220<br />
|-<br />
! DS220+<br />
| CR2032<br />
|-<br />
! DS224+<br />
| CR2032<br />
|-<br />
! DS413j<br />
| CR2032<br />
|-<br />
! DS415+<br />
| CR1220<br />
|-<br />
! DS416 slim<br />
| CR1220<br />
|-<br />
! DS720+<br />
| CR2032<br />
|-<br />
! DS916+<br />
| CR1220<br />
|-<br />
! DS920+<br />
| CR2032<br />
|-<br />
! DS1513+<br />
| CR1220<br />
|-<br />
! DS1515+<br />
| CR1220<br />
|-<br />
! DS1812+<br />
| CR1220<br />
|-<br />
! DS1815+<br />
| CR1220<br />
|-<br />
! RS1221+<br />
| CR2032<br />
|-<br />
! RS2416RP+<br />
| CR2032<br />
|}<br />
<br />
Fehlt etwas? Dann nutzt bitte [https://www.synology-forum.de/threads/cmos-batterie-sammelthread-batterietyp.129171/ diesen Thread] um weitere Vorschläge abzugeben. Ich werde versuchen, die Daten so zeitnah wie möglich in diese Tabelle aufzunehmen.</div>Itommeshttps://www.synology-wiki.de/index.php?title=CMOS_Knopfzellen-Batterietypen&diff=7414CMOS Knopfzellen-Batterietypen2023-11-12T11:55:07Z<p>Itommes: </p>
<hr />
<div>Im CMOS-RAM-Speicher werden neben Datum und Uhrzeit weitere BIOS-Parameter gespeichert. Damit diese „flüchtigen“ Daten nach dem Ausschalten der Stromversorgung nicht verloren gehen, wird der CMOS-RAM-Speicher über eine Pufferbatterie kontinuierlich mit Strom versorgt. Als Pufferbatterien werden i.d.R. Rundzellen aus Lithium-Mangandioxid verwendet. Die Bezeichnung einer sogenannten Knopfzelle trägt das Kürzel CR gefolgt vom Durchmesser in Millimetern und der Höhe in 1/10 Millimetern. Eine Knopfzelle des Typs CR-2032 entspricht demnach einem Durchmesser von 20 mm bei einer Höhe von 3,2 mm. <br />
<br />
Die nachfolgende Tabelle bietet eine Übersicht über die benötigte Knopfzelle für die jeweilige DiskStation.<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! DiskStation !! Knopfzellentyp <br />
|-<br />
! DS115j<br />
| CR2032<br />
|-<br />
! DS118<br />
| CR1220<br />
|- <br />
! DS214+<br />
| CR2032<br />
|-<br />
! DS216play<br />
| CR1220<br />
|-<br />
! DS218+<br />
| CR2032<br />
|-<br />
! DS218j<br />
| CR1220<br />
|-<br />
! DS220+<br />
| CR2032<br />
|-<br />
! DS224+<br />
| CR2032<br />
|-<br />
! DS413j<br />
| CR2032<br />
|-<br />
! DS415+<br />
| CR1220<br />
|-<br />
! DS416 slim<br />
| CR1220<br />
|-<br />
! DS916+<br />
| CR1220<br />
|-<br />
! DS920+<br />
| CR2032<br />
|-<br />
! DS1513+<br />
| CR1220<br />
|-<br />
! DS1515+<br />
| CR1220<br />
|-<br />
! DS1812+<br />
| CR1220<br />
|-<br />
! DS1815+<br />
| CR1220<br />
|-<br />
! RS1221+<br />
| CR2032<br />
|-<br />
! RS2416RP+<br />
| CR2032<br />
|}<br />
<br />
Fehlt etwas? Dann nutzt bitte [https://www.synology-forum.de/threads/cmos-batterie-sammelthread-batterietyp.129171/ diesen Thread] um weitere Vorschläge abzugeben. Ich werde versuchen, die Daten so zeitnah wie möglich in diese Tabelle aufzunehmen.</div>Itommeshttps://www.synology-wiki.de/index.php?title=CMOS_Knopfzellen-Batterietypen&diff=7413CMOS Knopfzellen-Batterietypen2023-11-12T11:54:49Z<p>Itommes: </p>
<hr />
<div>Im CMOS-RAM-Speicher werden neben Datumund Uhrzeit weitere BIOS-Parameter gespeichert. Damit diese „flüchtigen“ Daten nach dem Ausschalten der Stromversorgung nicht verloren gehen, wird der CMOS-RAM-Speicher über eine Pufferbatterie kontinuierlich mit Strom versorgt. Als Pufferbatterien werden i.d.R. Rundzellen aus Lithium-Mangandioxid verwendet. Die Bezeichnung einer sogenannten Knopfzelle trägt das Kürzel CR gefolgt vom Durchmesser in Millimetern und der Höhe in 1/10 Millimetern. Eine Knopfzelle des Typs CR-2032 entspricht demnach einem Durchmesser von 20 mm bei einer Höhe von 3,2 mm. <br />
<br />
Die nachfolgende Tabelle bietet eine Übersicht über die benötigte Knopfzelle für die jeweilige DiskStation.<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! DiskStation !! Knopfzellentyp <br />
|-<br />
! DS115j<br />
| CR2032<br />
|-<br />
! DS118<br />
| CR1220<br />
|- <br />
! DS214+<br />
| CR2032<br />
|-<br />
! DS216play<br />
| CR1220<br />
|-<br />
! DS218+<br />
| CR2032<br />
|-<br />
! DS218j<br />
| CR1220<br />
|-<br />
! DS220+<br />
| CR2032<br />
|-<br />
! DS224+<br />
| CR2032<br />
|-<br />
! DS413j<br />
| CR2032<br />
|-<br />
! DS415+<br />
| CR1220<br />
|-<br />
! DS416 slim<br />
| CR1220<br />
|-<br />
! DS916+<br />
| CR1220<br />
|-<br />
! DS920+<br />
| CR2032<br />
|-<br />
! DS1513+<br />
| CR1220<br />
|-<br />
! DS1515+<br />
| CR1220<br />
|-<br />
! DS1812+<br />
| CR1220<br />
|-<br />
! DS1815+<br />
| CR1220<br />
|-<br />
! RS1221+<br />
| CR2032<br />
|-<br />
! RS2416RP+<br />
| CR2032<br />
|}<br />
<br />
Fehlt etwas? Dann nutzt bitte [https://www.synology-forum.de/threads/cmos-batterie-sammelthread-batterietyp.129171/ diesen Thread] um weitere Vorschläge abzugeben. Ich werde versuchen, die Daten so zeitnah wie möglich in diese Tabelle aufzunehmen.</div>Itommeshttps://www.synology-wiki.de/index.php?title=CMOS_Knopfzellen-Batterietypen&diff=7412CMOS Knopfzellen-Batterietypen2023-11-12T11:45:32Z<p>Itommes: </p>
<hr />
<div>Im CMOS-RAM-Speicher werden BIOS-Parameter, Datum, Uhrzeit sowie weitere Daten gespeichert. Damit diese „flüchtigen“ Daten nach dem Ausschalten der Stromversorgung nicht verloren gehen, wird der CMOS-RAM-Speicher über eine Pufferbatterie kontinuierlich mit Strom versorgt. Als Pufferbatterien werden i.d.R. Rundzellen aus Lithium-Mangandioxid verwendet. Die Bezeichnung einer sogenannten Knopfzelle trägt das Kürzel CR gefolgt vom Durchmesser in Millimetern und der Höhe in 1/10 Millimetern. Eine Knopfzelle des Typs CR-2032 entspricht demnach einem Durchmesser von 20 mm bei einer Höhe von 3,2 mm. <br />
<br />
Die nachfolgende Tabelle bietet eine Übersicht über die benötigte Knopfzelle für die jeweilige DiskStation.<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! DiskStation !! Knopfzellentyp <br />
|-<br />
! DS115j<br />
| CR2032<br />
|-<br />
! DS118<br />
| CR1220<br />
|- <br />
! DS214+<br />
| CR2032<br />
|-<br />
! DS216play<br />
| CR1220<br />
|-<br />
! DS218+<br />
| CR2032<br />
|-<br />
! DS218j<br />
| CR1220<br />
|-<br />
! DS220+<br />
| CR2032<br />
|-<br />
! DS224+<br />
| CR2032<br />
|-<br />
! DS413j<br />
| CR2032<br />
|-<br />
! DS415+<br />
| CR1220<br />
|-<br />
! DS416 slim<br />
| CR1220<br />
|-<br />
! DS916+<br />
| CR1220<br />
|-<br />
! DS920+<br />
| CR2032<br />
|-<br />
! DS1513+<br />
| CR1220<br />
|-<br />
! DS1515+<br />
| CR1220<br />
|-<br />
! DS1812+<br />
| CR1220<br />
|-<br />
! DS1815+<br />
| CR1220<br />
|-<br />
! RS1221+<br />
| CR2032<br />
|-<br />
! RS2416RP+<br />
| CR2032<br />
|}<br />
<br />
Fehlt etwas? Dann nutzt bitte [https://www.synology-forum.de/threads/cmos-batterie-sammelthread-batterietyp.129171/ diesen Thread] um weitere Vorschläge abzugeben. Ich werde versuchen, die Daten so zeitnah wie möglich in diese Tabelle aufzunehmen.</div>Itommeshttps://www.synology-wiki.de/index.php?title=CMOS_Knopfzellen-Batterietypen&diff=7411CMOS Knopfzellen-Batterietypen2023-10-10T17:12:01Z<p>Itommes: </p>
<hr />
<div>Im CMOS-RAM-Speicher werden BIOS-Parameter, Datum, Uhrzeit sowie weitere Daten gespeichert. Damit diese „flüchtigen“ Daten nach dem Ausschalten der Stromversorgung nicht verloren gehen, wird der CMOS-RAM-Speicher über eine Pufferbatterie kontinuierlich mit Strom versorgt. Als Pufferbatterien werden i.d.R. Rundzellen aus Lithium-Mangandioxid verwendet. Die Bezeichnung einer sogenannten Knopfzelle trägt das Kürzel CR gefolgt vom Durchmesser in Millimetern und der Höhe in 1/10 Millimetern. Eine Knopfzelle des Typs CR-2032 entspricht demnach einem Durchmesser von 20 mm bei einer Höhe von 3,2 mm. <br />
<br />
Die nachfolgende Tabelle bietet eine Übersicht über die benötigte Knopfzelle für die jeweilige DiskStation.<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! DiskStation !! Knopfzellentyp <br />
|-<br />
! DS115j<br />
| CR2032<br />
|-<br />
! DS118<br />
| CR1220<br />
|- <br />
! DS214+<br />
| CR2032<br />
|-<br />
! DS216play<br />
| CR1220<br />
|-<br />
! DS218+<br />
| CR2032<br />
|-<br />
! DS218j<br />
| CR1220<br />
|-<br />
! DS220+<br />
| CR2032<br />
|-<br />
! DS413j<br />
| CR2032<br />
|-<br />
! DS415+<br />
| CR1220<br />
|-<br />
! DS416 slim<br />
| CR1220<br />
|-<br />
! DS916+<br />
| CR1220<br />
|-<br />
! DS920+<br />
| CR2032<br />
|-<br />
! DS1513+<br />
| CR1220<br />
|-<br />
! DS1515+<br />
| CR1220<br />
|-<br />
! DS1812+<br />
| CR1220<br />
|-<br />
! DS1815+<br />
| CR1220<br />
|-<br />
! RS1221+<br />
| CR2032<br />
|-<br />
! RS2416RP+<br />
| CR2032<br />
|}<br />
<br />
Fehlt etwas? Dann nutzt bitte [https://www.synology-forum.de/threads/cmos-batterie-sammelthread-batterietyp.129171/ diesen Thread] um weitere Vorschläge abzugeben. Ich werde versuchen, die Daten so zeitnah wie möglich in diese Tabelle aufzunehmen.</div>Itommeshttps://www.synology-wiki.de/index.php?title=CMOS_Knopfzellen-Batterietypen&diff=7410CMOS Knopfzellen-Batterietypen2023-10-10T17:08:41Z<p>Itommes: </p>
<hr />
<div>Im CMOS-RAM-Speicher werden BIOS-Parameter, Datum, Uhrzeit sowie weitere Daten gespeichert. Damit diese „flüchtigen“ Daten nach dem Ausschalten der Stromversorgung nicht verloren gehen, wird der CMOS-RAM-Speicher über eine Pufferbatterie kontinuierlich mit Strom versorgt. Als Pufferbatterien werden i.d.R. Rundzellen aus Lithium-Mangandioxid verwendet. Der Bezeichnung einer so genannten Knopfzelle trägt das Kürzel CR gefolgt vom Durchmesser in Millimetern und der Höhe in 1/10 Millimetern. Eine Knopfzelle des Typs CR-2032 entspricht demnach einem Durchmesser von 20 mm bei einer Höhe von 3,2 mm. <br />
<br />
Die nachfolgende Tabelle bietet eine Übersicht über die benötigte Knopfzelle für die jeweilige DiskStation.<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! DiskStation !! Knopfzellentyp <br />
|-<br />
! DS115j<br />
| CR2032<br />
|-<br />
! DS118<br />
| CR1220<br />
|- <br />
! DS214+<br />
| CR2032<br />
|-<br />
! DS216play<br />
| CR1220<br />
|-<br />
! DS218+<br />
| CR2032<br />
|-<br />
! DS218j<br />
| CR1220<br />
|-<br />
! DS220+<br />
| CR2032<br />
|-<br />
! DS413j<br />
| CR2032<br />
|-<br />
! DS415+<br />
| CR1220<br />
|-<br />
! DS416 slim<br />
| CR1220<br />
|-<br />
! DS916+<br />
| CR1220<br />
|-<br />
! DS920+<br />
| CR2032<br />
|-<br />
! DS1513+<br />
| CR1220<br />
|-<br />
! DS1515+<br />
| CR1220<br />
|-<br />
! DS1812+<br />
| CR1220<br />
|-<br />
! DS1815+<br />
| CR1220<br />
|-<br />
! RS1221+<br />
| CR2032<br />
|-<br />
! RS2416RP+<br />
| CR2032<br />
|}<br />
<br />
Fehlt etwas? Dann nutzt bitte [https://www.synology-forum.de/threads/cmos-batterie-sammelthread-batterietyp.129171/ diesen Thread] um weitere Vorschläge abzugeben. Ich werde versuchen, die Daten so zeitnah wie möglich in diese Tabelle aufzunehmen.</div>Itommeshttps://www.synology-wiki.de/index.php?title=CMOS_Knopfzellen-Batterietypen&diff=7409CMOS Knopfzellen-Batterietypen2023-10-10T17:05:31Z<p>Itommes: </p>
<hr />
<div>Im CMOS-RAM-Speicher werden BIOS-Parameter, Datum, Uhrzeit sowie weitere Daten gespeichert. Damit diese „flüchtigen“ Daten nach dem Ausschalten der Stromversorgung nicht verloren gehen, wird der CMOS-RAM-Speicher über eine Pufferbatterie kontinuierlich mit Strom versorgt. Als Pufferbatterien werden i.d.R. Zellen aus Lithium-Mangandioxid Rundzellen verwendet. Der Bezeichnung einer so genannten Knopfzelle trägt das Kürzel CR gefolgt vom Durchmesser in Millimetern und der Höhe in 1/10 Millimetern. Eine Knopfzelle des Typs CR-2032 entspricht demnach einem Durchmesser von 20 mm bei einer Höhe von 3,2 mm. <br />
<br />
Die nachfolgende Tabelle bietet eine Übersicht über die benötigte Knopfzelle für die jeweilige DiskStation.<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! DiskStation !! Knopfzellentyp <br />
|-<br />
! DS115j<br />
| CR2032<br />
|-<br />
! DS118<br />
| CR1220<br />
|- <br />
! DS214+<br />
| CR2032<br />
|-<br />
! DS216play<br />
| CR1220<br />
|-<br />
! DS218+<br />
| CR2032<br />
|-<br />
! DS218j<br />
| CR1220<br />
|-<br />
! DS220+<br />
| CR2032<br />
|-<br />
! DS413j<br />
| CR2032<br />
|-<br />
! DS415+<br />
| CR1220<br />
|-<br />
! DS416 slim<br />
| CR1220<br />
|-<br />
! DS916+<br />
| CR1220<br />
|-<br />
! DS920+<br />
| CR2032<br />
|-<br />
! DS1513+<br />
| CR1220<br />
|-<br />
! DS1515+<br />
| CR1220<br />
|-<br />
! DS1812+<br />
| CR1220<br />
|-<br />
! DS1815+<br />
| CR1220<br />
|-<br />
! RS1221+<br />
| CR2032<br />
|-<br />
! RS2416RP+<br />
| CR2032<br />
|}<br />
<br />
Fehlt etwas? Dann nutzt bitte [https://www.synology-forum.de/threads/cmos-batterie-sammelthread-batterietyp.129171/ diesen Thread] um weitere Vorschläge abzugeben. Ich werde versuchen, die Daten so zeitnah wie möglich in diese Tabelle aufzunehmen.</div>Itommeshttps://www.synology-wiki.de/index.php?title=CMOS_Knopfzellen-Batterietypen&diff=7408CMOS Knopfzellen-Batterietypen2023-10-10T17:00:33Z<p>Itommes: Die Seite wurde neu angelegt: „Im CMOS-RAM-Speicher werden BIOS-Parameter, Datum, Uhrzeit sowie weitere Daten gespeichert. Damit diese „flüchtigen“ Daten nach dem Ausschalten der Stromversorgung nicht verloren gehen, wird der CMOS-RAM-Speicher über eine Pufferbatterie kontinuierlich mit Strom versorgt. Als Pufferbatterien werden i.d.R. Zellen aus Lithium-Mangandioxid Rundzellen verwendet. Der Bezeichnung einer so genannten Knopfzelle trägt das Kürzel CR gefolgt vom Durchmesser…“</p>
<hr />
<div>Im CMOS-RAM-Speicher werden BIOS-Parameter, Datum, Uhrzeit sowie weitere Daten gespeichert. Damit diese „flüchtigen“ Daten nach dem Ausschalten der Stromversorgung nicht verloren gehen, wird der CMOS-RAM-Speicher über eine Pufferbatterie kontinuierlich mit Strom versorgt. Als Pufferbatterien werden i.d.R. Zellen aus Lithium-Mangandioxid Rundzellen verwendet. Der Bezeichnung einer so genannten Knopfzelle trägt das Kürzel CR gefolgt vom Durchmesser in Millimetern und der Höhe in 1/10 Millimetern. Eine Knopfzelle des Typs CR-2032 entspricht demnach einem Durchmesser von 20 mm bei einer Höhe von 3,2 mm. <br />
<br />
Die nachfolgende Tabelle bietet eine Übersicht über die benötigte Knopfzelle für die jeweilige DiskStation.<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! DiskStation !! Knopfzellentyp <br />
|-<br />
! DS115j<br />
| CR2032<br />
|-<br />
! DS118<br />
| CR1220<br />
|- <br />
! DS214+<br />
| CR2032<br />
|-<br />
! DS216play<br />
| CR1220<br />
|-<br />
! DS218+<br />
| CR2032<br />
|-<br />
! DS218j<br />
| CR1220<br />
|-<br />
! DS220+<br />
| CR2032<br />
|-<br />
! DS413j<br />
| CR2032<br />
|-<br />
! DS415+<br />
| CR1220<br />
|-<br />
! DS416 slim<br />
| CR1220<br />
|-<br />
! DS916+<br />
| CR1220<br />
|-<br />
! DS920+<br />
| CR2032<br />
|-<br />
! DS1513+<br />
| CR1220<br />
|-<br />
! DS1515+<br />
| CR1220<br />
|-<br />
! DS1812+<br />
| CR1220<br />
|-<br />
! DS1815+<br />
| CR1220<br />
|-<br />
! RS1221+<br />
| CR2032<br />
|-<br />
! RS2416RP+<br />
| CR2032<br />
|}</div>Itommeshttps://www.synology-wiki.de/index.php?title=Modifikationen&diff=7407Modifikationen2023-10-10T16:23:22Z<p>Itommes: </p>
<hr />
<div>[[Category:Portal]]<br />
{|width="100%" height="100%" border=0 cellpadding=5 cellspacing=7 style="border: 1px solid #c0c0c0;background-color:#e0e0e0"<br />
|style="background-color:#c0c0c0; border: 1px solid #a0a0a0; font-size:120%; font-weight: bold"|[[Modifikationen|Modding Themen]]<br />
|-<br />
|<br />
#[[Wichtige Informationen zum Modden der Synology Stations]]<br />
#[[Übersicht über verfügbare 3rd-Party-Apps aus unserer Community]]<br />
#Grundsätzliches zur Hard- und Software des Synology-Servers<br />
##[[Wie funktioniert ein Computer?]]<br />
##[[Platten, RAIDs und Dateisysteme]]<br />
##[[Überblick über Modifizierungen des Synology-Servers]]<br />
##[[Welchen Prozessortyp besitzt mein System?]]<br />
##[[Welche Performance besitzt mein System?]]<br />
##[[Arbeitsweise der Synology Stations]]<br />
##[[LEDs und Buttons]]<br />
##[[Viren auf dem Synology-Server?]]<br />
##[[Stromverbrauchswerte User]]<br />
##[[CMOS Knopfzellen-Batterietypen]]<br />
#[[Die Kommandozeile]]<br />
##[[Grundlegende Befehle auf der Kommandozeile]]<br />
##[[Vergleich von Texteditoren]]<br />
###[[vi]]<br />
###[[vim]]<br />
###[[nano]]<br />
##[[less|Alternativer Pager less]]<br />
##[[Synology Toolset]]<br />
##[[Locale-UTF8|UTF-8–Kodierung einstellen]]<br />
##[[synogear: weitere Tools]]<br />
#[[Wo ist was im Linux-System]]<br />
##[[Dateien im /etc-Verzeichnis|/etc-Verzeichnis]]<br />
##[[Dateien im /dev-Verzeichnis|/dev-Verzeichnis]]<br />
##[[Dateien im /lib-Verzeichnis|/lib-Verzeichnis]]<br />
##[[Dateien im /tmp-Verzeichnis|/tmp-Verzeichnis]]<br />
##[[Dateien im /usr-Verzeichnis|/usr-Verzeichnis]]<br />
##[[Dateien im /var-Verzeichnis|/var-Verzeichnis]]<br />
##[[Dateien im /volume1-Verzeichnis|/volume1-Verzeichnis]]<br />
#[[Nicht unterstützte Konfigurationsänderungen]]<br />
##Systemmanagement<br />
###[[3rd_Party_Applications_absichern|3rd Party Applications vor unberechtigten Zugriffen schützen]]<br />
###[[Cron|Cron konfigurieren]]<br />
###[[Generierung eines eigenen SSL-Zertifikats]]<br />
###[[SSL-Zertifikat von ready2host einbinden]]<br />
###[[Downgrade der Synology-Firmware]]<br />
###[[Mount Bind]]<br />
###[[Gemeinsames Homeverzeichnis für mehrere User]]<br />
###[[User-Apache alle Zugriffe via Browser loggen lassen|Logdatei für den Apache-Server erstellen]]<br />
###[[Anzahl der möglichen Terminalfenster erhöhen]]<br />
###[[ssh_mit_Zertifikaten_absichern|Secure Shell (ssh) Zugriff nur mit Schlüssel]]<br />
###[[Ssh_clients_blocken|PHP Script zum Logfile Scan nach ssh Fehlern]]<br />
###[[Automatisches Herunterfahren wenn kein Ping möglich]]<br />
###[[Statusmail von der Diskstation]]<br />
###[[Aktuellen Status twittern (CPU, RAM, Speicher)]]<br />
###[[DSM Zugriff auf IP-Ebene beschränken]]<br />
###[[Debian auf der DiskStation]]<br />
###[[Thumbnailerzeugung beschleunigen ]]<br />
###[[Cacti Monitoring auf Diskstation installieren]]<br />
###[[SSMTP: Mit Bordmitteln eine E-Mail über die Konsole versenden.]]<br />
##Firmware-Upgrades<br />
###[[Upgrade von DS101g+ auf DS107]]<br />
##Backup Modifikationen<br />
###[[Alternierendes Backup]]<br />
###[[Backup der MySQL-Datenbank über einen cronjob]]<br />
###[[Backup über RSync auf einen angeschlossenen Datenträger]]<br />
###[[rsnapshot|Backups mit Rsnapshot erstellen]]<br />
###[[Offsite Backup von DS auf WebDAV-Speicher (z.B. von 1und1, GMX, Web.de, Strato, iDisk (MobileMe))]]<br />
### [[Generationsbackup_mit_rsync_und_rsnapshot_im_Netzwerk|Generationsbackup über Netzwerk]]<br />
### [[Verschlüsseltes Backup]]<br />
### [[duplicity|duplicity (SSH/SCP, RSync, FTP, WebDAV, IMAP, Amazon S3 + optionale Verschlüsselung)]]<br />
### [[WebDAV-Speicher mithilfe von davfs2 direkt in die DS einbinden]]<br />
### [[Zeitgesteuerte Sicherung mittels wget inkl. Protokoll]]<br />
###[[CrashPlan Headless Client]]<br />
##Download Modifikationen<br />
###[[pyLoad]]<br />
###[[appleJuice]]<br />
##Multimedia Modifikationen<br />
###[[TwonkyVision]]<br />
###[[Twonky auf der DS211j installieren]]<br />
###[[Swisscenter_auf_Diskstation_installieren|Swisscenter installieren]]<br />
###[[Fuppes]]<br />
###[[PS3 Mediaserver]]<br />
###[[iTunes Playlists Importieren]]<br />
###[[Einbinden einer DS über NFS bei älteren Samsung-TVs]]<br />
##Datenträger Mods<br />
###[[Upgrade eines None-RAID Volume zu RAID1 / RAID5]]<br />
###[[Hartnäckigen USB-Stick mit ext2/3 formatieren und einbinden]]<br />
###[[Verschlüsselte_Container|Verschlüsselte Container auf der DS]]<br />
## <span id="mailstation">Mailstation Mods</span><br />
### Dovecot Server (imap/pop3)<br />
#### [[Externe_Accounts_abrufen|Externe Accounts mit getmail abrufen]]<br />
#### [[Virtuelle_E-Mail_Nutzer_mit_dovecot|Virtuelle User]]<br />
#### [[E-mails_filtern_mit_dovecot-sieve|Dovecot-sieve zum Filtern von E-Mails]]<br />
#### [[Abwesenheitsmeldungen_mit_dovecot-sieve|AutoReply]]<br />
### Postfix Server (smtp)<br />
#### [[SMTP_Dialog_Restriktionen|Client Restriktionen]]<br />
#### [[Virtuelle_E-Mail_Nutzer_mit_postfix|Virtuelle User]]<br />
#### [[Zusaetzliche_Ports_fuer_Postfix|Zusätzliche Ports]]<br />
#### [[Mail-Relay_mit_Postfix|SMTP Relay einrichten]]<br />
#### [[Postgrey_greylisting_fuer_postfix|Greylisting mit postgrey]]<br />
#### [[Postfwd_firewall_fuer_postfix|Postfix Firewall postfwd]]<br />
#### [[Abwesenheitsmeldungen_mit_postfix|Autoreply]]<br />
### Spamassassin<br />
#### [[Externe_Accounts_abrufen#SpamAssassin_installieren_und_einrichten|Spamassassin installieren]]<br />
#### [[Regeln_von_Spamassassin|Die Regeln des Spamassassin]]<br />
#### [[Postfix_und_Spamassassin|Spamfilterung mit Postfix und Spamassassin]]<br />
### Various<br />
#### [[Fehlersuche in der Mailstation]]<br />
#### [[Nuetzliche_Kommandos_fuer_Mailstation|Nützliche Kommandos der Mailstation]]<br />
#### [[Mailinglisten_mit_mailman|Mailing-Listen mit mailman]]<br />
#### [[Getmail_script|getmail nutzen mit Hibernate der Festplatten]]<br />
#### [[Virtuelle_E-Mail_User_erstellen|Script zur Erstellung von virtuellen Nutzern (E-Mail)]]<br />
#### [[Roundcube als Webmail-Client für externen IMAP-Account verwenden]]<br />
## Sonstige Modifikationen<br />
### [[USV Shutdown an Mac über Netzerk weiterleiten mit Growl]]<br />
### [[Installation der Online Teamlösung eGroupWare Community Edition]]<br />
### [[Verteiltes Rechnen mit der DiskStation anhand von distributed.net]]<br />
### [[Hits der Photostation zuruecksetzen]]<br />
### [[Boost Joomla Performance]]<br />
### [[Druckerverwaltung und Netzwerkdrucker einbinden]]<br />
###[[Wake on LAN (WOL) nur mit PHP, auch über das Internet]]<br />
###[[DdnsAutoLogin|ddnsAutoLogin]]<br />
###[[PXE|PXE - Preboot eXecution Environment]]<br />
###[[OpenVPN zu einer Easybox 904 xDSL: Konfiganpassung via Konsole]]<br />
###[[Wörterbücher für Volltextsuche mit PostgreSQL erstellen]]<br />
###[[Guacamole mit Docker|Guacamole mit Docker]]<br />
###[[Synapse mit Docker|Synapse mit Docker]]<br />
###[[TvHeadend mit Docker und Sundtek SkyTV Ultimate|TvHeadend mit Docker und Sundtek SkyTV Ultimate]]<br />
<br />
#[[IPKG]]<br />
##[[Apache IPKG|Alternativer Apache-Server]]<br />
##[[OpenVPN_auf_der_Diskstation|OpenVPN auf einer DS betreiben]]<br />
##[[Streamripper]]<br />
##[[Samba_via_ipkg_installieren|Alternativer Samba-Server]]<br />
##[[Icecast_via_ipkg_installieren|Icecast Server]]<br />
##[[vsFTP installieren|Alternativer FTP Dienst]]<br />
##[[SFTP_SCP|SFTP und SCP]]<br />
##[[SVN-Server installieren|SVN-Server]]<br />
##[[Gitolite|Git + Gitolite installieren]]<br />
##[[TFTP-Daemon einrichten und verwenden]]<br />
##[[Java|Java installieren]]<br />
##[[Xinetd_via_ipkg_installieren|xinetd Daemon via ipkg installieren]]<br />
###[[Xinetd_Beispiel_Eigener_Dienst|Eigener Dienst per xinetd]]<br />
##[[Syslog-ng via ipkg installieren]]<br />
##[[YouGrabber]]<br />
##[[Geschwindigkeitsmessung mit iperf]]<br />
##[[Installation torrentflux-b4rt]]<br />
##[[Bind9 DNS-Server]]<br />
##[[Streaming server (ggrab) für DBox2-Aufnahmen einrichten]]<br />
##[[USB Schaltbare Steckdosenleiste]]<br />
##[[Tinyproxy]]<br />
##[[DHCP-Server]]<br />
##[[MoinMoin-Wiki]]<br />
##[[Inetutils|Inetutils, ftp, tftp, rcp, rsh, ping, ping6]]<br />
##[[Nail|Mit Nail ein E-Mail verschicken]]<br />
##[[Nmap|Portscanner Nmap]]<br />
##[[Mpd|Music Player Daemon mpd]]<br />
#[[:Category:3rd-Party-Apps|3rd-party Applikationen]]<br />
##[[Konfiguration von 3rd-party Applikationen]]<br />
###[[Aufbau eines Synology Packages (SPK)]]<br />
###[[Aufbau der Datei 'INFO']]<br />
###[[Aufbau der Datei 'application.cfg']]<br />
###[[Aufbau der Datei 'config']]<br />
###Integration einer Hilfe in DSM<br />
####[[Integration einer Hilfe in DSM 3.x|DSM 3.x]]<br />
####[[Integration einer Hilfe in DSM 4.0-5.0|DSM 4.0 - 5.0]]<br />
####[[Integration einer Hilfe in DSM 5.1-|DSM 5.1 - 6.1]]<br />
##[[Integration von 3rd-party Applikationen]]<br />
###[[phpMyAdmin als 3rd-Party Applikation|phpMyAdmin]]<br />
###[[phpPgAdmin als 3rd-Party Applikation|phpPgAdmin]]<br />
###[[phpSysInfo als 3rd-Party Applikation|phpSysInfo]]<br />
###[[aMule IP-Filter Download als 3rd-Party Applikation|aMule IP-Filter]]<br />
###[[eXtplorer als 3rd-party Applikation|eXtplorer (Alternative zur File Station)]]<br />
###[[3rd Party Application Manager]]<br />
###[[HttpWakeUp Wake-On-LAN Pakete per Webinterface verschicken]]<br />
###[[Rootkit Hunter als 3rd-Party Applikation|Rootkit Hunter]]<br />
###[[AdminTool]]<br />
###[[TeamSpeak 2 Server]]<br />
###[[TeamSpeak 3 Server]]<br />
###[[TeamSpeak 3 Server in Debian Chroot]]<br />
###[[FSyncMS|FSyncMS – ein Firefox Sync Server]]<br />
###[[Lesezeichen/Passwörter Synchronisation mit SyncPlaces für Firefox (über WebDAV auf der DS)]]<br />
###[[iStat Server]]<br />
### SqueezeCenter<br />
####[[SqueezeCenter-Existierende-MySQL-Instanz-verwenden|Bestehende Instanz verwenden]]<br />
###[[Minecraft-Server auf der Synology]]<br />
###[[SynoBox|SynoBox - ein Dropbox Client]]<br />
###[[AirSonos|AirSonos - per Airplay auf Sonos streamen]]<br />
###[[CoD2|Call of Duty 2 Server auf Synology]]<br />
#Kompilieren eigener Programme<br />
##[[Luadch]]<br />
##[[MediaInfo]]<br />
##[[bluetooth Treiber]]<br />
##[[sma-bluetooth]]<br />
#Hardware Modifikationen<br />
##[[DiskStation 209+ flüsterleise machen]]<br />
##[[DiskStation 106 automatisch einschalten]]<br />
##[[DiskStation 107 automatisch einschalten]]<br />
##[[DiskStation 211 automatisch einschalten]]<br />
##[[DiskStation 408 automatisch einschalten]]<br />
##[[DiskStation 106 WOL Wake-On-LAN Umbau]]<br />
|}</div>Itommeshttps://www.synology-wiki.de/index.php?title=Dateibasierte_RSync-Datensicherung_auf_externen_Datentr%C3%A4ger_oder_RSync_kompatiblen_Server&diff=7406Dateibasierte RSync-Datensicherung auf externen Datenträger oder RSync kompatiblen Server2023-10-07T17:01:05Z<p>Itommes: </p>
<hr />
<div>{| border="0" cellpadding="10" cellspacing="0" width="100%" style="text-align:center"<br />
|-<br />
|style="color:#ff0000; background-color:#ddd;"| Resultierend aus diesem Wiki ist [http://www.synology-forum.de/showthread.html?78115-Ultimate-Backup Ultimate Backup] als eigenständiges SPK entstanden !!! <br />
|}<br />
<br />
<br />
=Einleitung=<br />
<br />
'''Diese Anleitung zur dateibasierten RSync-Datensicherung bietet folgende Möglichkeiten...'''<br />
<br />
* Quelle(n) und/oder Ziel können unverschlüsselt sein<br />
* Quelle(n) und/oder Ziel können verschlüsselt sein<br />
* Quelle(n) und/oder Ziel können Leerzeichen im Ordernamen enthalten <br />
* Sicherung innerhalb eines /volume<br />
* Sicherung zwischen internen /volumes<br />
* Sicherung AUF lokal angeschlossene USB-/SATA-Datenträger sowie eingebundene Remote-Shares (nur unverschlüsselt)<br />
* Sicherung VON lokal angeschlossene USB-/SATA-Datenträger AUF internes /volume oder RSync-kompatiblen Server (auch verschlüsselt möglich)<br />
* Sicherung von einer entfernten DS oder RSync-kompatilben Server<br />
* Sicherung auf eine entfernte DS oder RSync-kompatilben Server<br />
* (weitere Konstellationen sind möglich, wurden jedoch nicht getestet) <br />
<br />
'''Hinweis:''' Die Verschlüsselung beruht hierbei auf der von Synology verwendeten Ordnerverschlüsselung (eCryptfs). Um verschlüsselte gemeinsame Ordner einbinden zu können, wird das Key-File also der Exportschlüssel benötigt. Diesen erhält man über die DSM-Systemsteuerung/Gemeinsame Ordner.<br />
<br />
=Anmerkung=<br />
Bevor ihr anfangt, nehmt bitte noch den Artikel "[[Wichtige Informationen zum Modden der Synology Stations]]" zur Kenntnis. <br />
<br />
Auch wenn dieses Script intensiv auf einwandfreie Funktion hin getestet wurde, so kann eine Fehlfunktion und demzufolge ein möglicher Datenverlust nicht ausgeschlossen werden. Aus diesem Grund solltet ihr das System erstmal mit unwichtigen Testdaten auf Herz und Nieren prüfen und sich mit der Arbeitsweise des Scripts und dessen Funktionen vertraut machen bevor ihr das ganze "produktiv" einsetzt. '''Ihr verwendet dieses Script auf eigene Gefahr.'''<br />
<br />
=Voraussetzungen=<br />
* Umgang mit dem DSM Aufgabenplaner <br />
* Umgang mit einem Editor seiner Wahl (z.B. Notepad++ oder dem DSM Text-Editor)<br />
* Grundkenntnisse im Umgang mit Shell-Scripten<br />
* Umgang mit der Konsole (bei Verwendung des SSH-Zuganges)<br />
* Zum versenden einer E-Mail muss im DSM unter Hauptmenü/Systemsteuerung/Benachrichtigung eine E-Mail Adresse hinterlegt sein.<br />
* Ein externer USB- oder SATA-Datenträger, eine weitere Synology Diskstation oder einen rsync-kompatiblen Server im Netzwerk.<br />
* Optional: autorun für externe Datenträger (Version 1.7)<br />
<br />
=Erläuterungen zur Funktion und Arbeitsweise=<br />
<br />
<pre><br />
Diskstation<br />
| |<br />
| '--> Aufgabenplaner ------------------------------<br />
| | |<br />
| '--> Such-Script -----> USB/SATA-Share ---> Ausführungs-<br />
| | Script<br />
'----------------> USB/SATA-Share --> autorun -------- (Key-Files)<br />
|<br />
.---------------------------'<br />
|<br />
V<br />
.---------- Quelle <--- definiere ---> Ziel----------.<br />
| | | |<br />
V '-- lokale/intern/extern --' V<br />
lokalisiere Quelle(n) lokalisiere Ziel<br />
| | <br />
| Protokoll/E-Mail |<br />
|--> Verschlüsselte | Verschlüsseltes <--|<br />
| Quelle(n) anhand der | Ziel anhand der |<br />
| Key-Files einhängen <--- aushängen ---> Key-Files einhängen |<br />
| | | | |<br />
| V | V |<br />
'--------------------->> !! DATENSICHERUNG !! >>---------------------'<br />
| |<br />
'-- lokale/intern/extern -'<br />
<br />
</pre><br />
<br />
<br />
'''Scriptausführung über den DSM-Aufgabenplaner'''<br />
<br />
Das manuelle oder automatisierte Aufrufen von Such- oder Ausführungs-Script wird komfortabel über den DSM - Aufgabenplaner gesteuert. Das Such-Script hat dabei die Aufgabe, das Ausführungs-Script zu lokalisieren und starten. Es wird jedoch nur bei der Verwendung einer lokalen Datensicherung auf einem angeschlossenen USB-/SATA-Datenträger eingesetzt, da sich hier die Datenträgerbezeichnungen durchaus mal ändern können. Für alle andern Aufgaben wird das Such-Script nicht benötigt weshalb man das Ausführungs-Script auch direkt über den DSM-Aufgabenplaner ansprechen kann, um es manuell oder automatisiert auszuführen. Dabei befindet sich das Ausführungs-Script innerhalb eines "gemeinsamen Ordners" auf der DS, also z.B. dort, wo die interne oder externe Datensicherung später gespeichert werden soll.<br />
<br />
<br />
'''Scriptausführung mittels "autorun"'''<br />
<br />
Eine weitere Möglichkeit der Scriptausführung bietet die Verwendung von "autorun", welches angeschlossene USB-/SATA-Datenträger automatisch erkennt und ein darauf liegendes Script Namens "autorun" ausführt, sollte es im Wurzel- bzw. Hauptverzeichnis des externen Datenträgers lokalisiert werden. Dieses Verhalten machen wir uns zunutze, indem wir entweder den Inhalt unseres Ausführungs-Scriptes per Copy & Paste mit dem des "autorun" Scripts überschreiben, oder wir legen uns eine neue Datei namens "autorun" an bzw. benennen unser Script einfach nach "autorun" um und legen es auf dem externen Datenträger ab. Somit erhält man die Möglichkeit durch einfaches anstecken des USB-Sticks eine lokale, interne oder externe Datensicherung auszuführen. Ein weiterer Vorteil von "autorun" ist der Tatsache geschuldet, das sich evtl. benötigte Key-Files (also der Exportschlüssel) für das Einhängen verschlüsselter gemeinsamer Ordner am Speicherort des Ausführungs-Scripts befinden müssen. Wird der USB-Stick demnach nur für die Zeit der Datensicherung verwendet und ansonsten an einem sicheren Ort aufbewahrt, sind auch die Key-Files für diesen Zeitraum erstmal sicher. <br />
<br />
<br />
'''Arbeitsweise des Ausführungs-Script (start-rsync.sh)'''<br />
<br />
Das Ausführungs-Script führt neben einigen anderen Dingen die eigentliche Datensicherung aus, wobei mittels RSync sämtliche konfigurierte Quellen mit dem Ziel synchronisiert werden. Befindet sich unter den Quellen oder dem Ziel ein oder mehrere verschlüsselte gemeinsame Ordner, so können diese über das sogenanntes Key-File (der Exportschlüssel) automatisch ein- und nach dem Beenden der Datensicherung wieder automatisch ausgehangen werden. Dazu ist es jedoch erforderlich, das sich das Key-File am Speicherort des Ausführungs-Scripts befindet. Das Key-File selber wird einem beim erstellen eines verschlüsselten gemeinsamen Ordners im DSM unter Systemsteuerung/Gemeinsame Ordner zum Download angeboten, man kann sich dieses aber auch nachträglich erstellen lassen. Weiterhin muss der Benutzer im Vorfeld noch einige Parameter innerhalb des Ausführungs-Scripts definieren, dessen Funktionen durch zusätzliche Kommentare näher beschrieben werden.<br />
<br />
Um dem Benutzer ein Feedback über Erfolg und Misserfolg der Datensicherung geben zu können wird ein Systemprotokoll erstellt, welches in einem Ordner Namens /@Logfiles abgelegt wird. Dieser Ordner liegt hierbei immer im Speicherort des Ausführungs-Scriptes. Weiterhin werden gelöschte Daten einer Quelle, im Ziel bei Bedarf in den Ordner /@Recycle verschoben, welcher sich auch im Speicherort der Datensicherung befindet. Ebenso wird hier bei Bedarf ein weiterer Ordner mit dem Namen @/DSMConfig angelegt, worin die Sicherungen der DSM-Systemkonfiguration des Systems aufbewahrt werden, von dem auch die Quellen stammen. Die Inhalte der Ordner /@Logfiles, /@Recycle sowie /@DSMConfig können nach der Angabe einer Individuellen Zeitvorgabe (in Tagen) vom System automatisch gelöscht werden um einen Speicherüberlauf zu verhindern und um die Übersicht zu bewahren.<br />
<br />
Bei der eigentlichen Datensicherung über RSync werden die Ordnerpfade relativ, nach dem jeweiligen Volume (1,2,3,4….) in das entsprechende Unterverzeichnis gespeichert. Systemorder wie z.B. /@eaDIR, /#recycle, /#snapshot und /.DS_Store werden von der Synchronisation ausgeschlossen. Alle ausgeführten Schritte sowie Fehlermeldungen als auch Abbrüche werden protokolliert und teilweise über sogenannte Exit-Codes als Zahlenwert ausgegeben. Diese Exit-Codes geben weitere Auskunft über mögliche Fehlerquellen. Im Anhang unten findet man ein entsprechender Link zur Auswertung. Das Protokoll wird im oben beschriebenen Ordner /@Logfiles abgelegt und kann bei Bedarf auch als E-Mail zugestellt werden. <br />
<br />
Weitere Einstellmöglichkeiten werden innerhalb des Scripts beschrieben und hier nicht weiter ausgeführt.<br />
<br />
=Hinweise zum Erstellen und ausführen der Scripte=<br />
Die hier verwendeten Script-Dateinamen dienen nur der Veranschaulichung und können, unter Beachtung einiger Rahmenbedingungen nach Belieben verändert werden.<br />
Für die Erstellung der Scripte wurde im DSM unter dem Benutzer "admin" der DSM eigene Text-Editor, der evtl. noch über das Paketzentrum installiert werden muss, verwendet. Wichtig ist das im Editor unter "Voreinstellungen" im Reiter "Bearbeiten" als Standardcodierung "Unicode (UTF-8)" ausgewählt wird.<br />
<br />
Nachdem das jeweilige Script aus dem Wiki in die Zwischenablage kopiert und im Text-Editor eingefügt wurde, kann die entsprechende Datei über "Speichern unter..." am gewünschten Ort abgespeichert werden. Scripte die später über den Aufgabenplaner ausgeführt werden, müssen noch die entsprechenden Berechtigungen erhalten um das jeweilige Script "ausführbar" zu machen. Dazu muss man in der FileStation mit einem rechtsklick auf die betreffenden Datei gehen und im Kontextmenü den Menüpunkt "Eigenschaften" auswählen. Dort angekommen wechselt man zum Reiter "Genehmigung" und weiter auf die Schaltfläche "Erweiterte Optionen" um darauffolgend den Punkt "Übernommene Genehmigungen einschließen" auszuwählen. Zum Schluss bestätigt man das Ganze mit der Schaltfläche "OK" (Die Datei sollte jetzt die Berechtigung rwxrw-rw, bzw. 766 haben)<br />
<br />
Nachdem die Privilegien richtig gesetzt wurden, kann das Script unter Hauptmenü/Systemsteuerung in den Aufgabenplaner aufgenommen werden, ohne die Aufgabe jedoch vorerst auszuführen. Dazu wählt man unter DSM 6 "Erstellen" --> "Geplante Aufgabe" --> "Benutzerdefiniertes Script". Im Reiter "Allgemein" kann man unter "Vorgang" einen individuellen Namen für die Aufgabe vergeben und als Benutzer sollte "root" ausgewählt werden. Bei einer Netzwerksicherung über eine SSH-Verbindung muss hier der Benutzer angegeben werden, auf dem der RSA-Key ausgestellt wurde, in unserem Fall (siehe Anleitung unten) ist das der Benutzer "root". (Nur unter dem Benutzer "root" funktioniert die Signaausgabe sowie die Sicherung der DSM-Konfiguration) Die Checkbox "Aktiviert" wird nur benötigt, sollte das Script automatisiert, also Zeitgesteuert gestartet werden. Dazu wäre dann im nächsten Schritt unter dem Reiter der "Zeitplan" zu definieren. Im Reiter "Aufgabeneinstellungen" muss jetzt noch unter dem Punkt "Befehl ausführen" der Pfad zum "Benutzerdefinierten Script" angegeben werden, also z.B. /volume1/ScriptStuff/search-rsync.sh. Nach dem Bestätigen mit "OK" wird die Aufgabe dem Aufgabenplaner hinzugefügt und kann später, falls gewünscht, nach dem Markieren der Aufgabe, über die Schaltfläche "Ausführen" manuell ausgeführt werden.<br />
<br />
=Script 1: Das Such-Script "search-rsync.sh"=<br />
<br />
Da es mehrere Ansätze für die Suche gibt, kann man sich hier [[Dateibasierte RSync-Datensicherung auf externen Datenträger oder RSync kompatiblen Server/Suchscriptvarianten|Weitere Suchscriptvarianten]] anschauen und sich die für sich passenden Möglichkeit auswählen.<br />
<br />
'''search-rsync.sh'''<br />
<pre><br />
#!/bin/sh<br />
<br />
# Zeichenkette für Script-Dateinamen definieren<br />
# ------------------------------------------------------------------------<br />
# Es ist nicht erforderlich, den kompletten Script-Dateinamen anzugeben. |<br />
# Es reicht die Eingabe einer Zeichenkette, die in jedem auszuführenden |<br />
# Script-Dateinamen enthalten sein muss. |<br />
# Beispiele für die Zeichenkette: "local" = local_Backup_Filme.sh |<br />
# local_Filme.sh oder auch Filme_local_sichern.sh |<br />
#-------------------------------------------------------------------------<br />
SCRIPT_STRING="start"<br />
<br />
# ------------------------------------------------------------------------<br />
# Ab hier bitte nichts mehr ändern |<br />
# ------------------------------------------------------------------------<br />
<br />
for SCRIPT in /volume*/*share/*$SCRIPT_STRING*.sh<br />
do<br />
if [ -f $SCRIPT ]; then<br />
sh $SCRIPT<br />
fi<br />
done<br />
</pre><br />
<br />
=Script 2: Das Ausführungs-Script "start-rsync.sh"=<br />
Das Script mit dem beispielhaften Script-Dateinamen "start-rsync.sh", wird entweder auf den entsprechenden externen USB- oder SATA-Datenträger in dessen Wurzelverzeichnis oder aber in einen "gemeinsamen Ordner" auf der Diskstation abgelegt, auf dem die Datensicherung abgelegt werden soll. <br />
<br />
'''start-rsync.sh'''<br />
<pre><br />
#!/bin/sh<br />
<br />
# E-Mail Adresse<br />
# -------------------------------------------------------------------------<br />
# Die E-Mail Adresse muss mit der bereits im DSM unter "Benachrichtigung" |<br />
# hinterlegten E-Mail-Adresse identisch sein. |<br />
# -------------------------------------------------------------------------<br />
EMAIL="" # E-Mail für Zustellung des Sicherungsprotokolls<br />
EMAILFAIL="0" # "0" = Sicherungsprotokoll immer senden<br />
# "1" = Sicherungsprotokoll nur bei Problemen senden<br />
# SSH - Verbindungsdaten<br />
# -------------------------------------------------------------------------<br />
# Werden keine Verbindungsdaten angegeben, wird eine lokale Datensicherung|<br />
# durchgeführt. |<br />
# -------------------------------------------------------------------------<br />
SSH_USER="" # Benutzername<br />
SSH_FROM="" # IP-, Host- oder Domain VON entfernter Quelle AUF lokales Ziel<br />
SSH_TO="" # IP-, Host- oder Domain VON lokaler Quelle AUF entferntes Ziel<br />
SSH_PORT="" # Leer = Port 22 ansonsten gewünschten Port angeben<br />
RSYNC_PORT="" # Alternativer Rsync Port kann hier eingetragen werden<br />
MAC="" # Leer = WOL wird nicht genutzt<br />
SLEEP="300" # Wartezeit in Sekunden bis Remoteserver gebootet ist<br />
# MAC Adresse eintragen = Server wird hochgefahren, wenn dieser ausgeschaltet ist<br />
SHUTDOWN="0" # "0" = Entfernter Server wird nicht heruntergefahren<br />
# "1" = Entfernter Server wird heruntergefahren wenn das Backup erfolgreich war<br />
<br />
# Umgang mit verschlüsselten Ordnern<br />
# ------------------------------------------------------------------------<br />
# Angeben, ob eingehangene verschlüsselte Ordner nach der Datensicherung |<br />
# wieder ausgehangen werden sollen. |<br />
# ------------------------------------------------------------------------<br />
UNMOUNT="0" # "0" = Eingehangene Ordner werden nicht ausgehängt<br />
# "1" = Quelle und Ziel werden ausgehängt<br />
# "2" = Quelle wird ausgehängt<br />
# "3" = Ziel wird ausgehängt<br />
<br />
# Backup - Quellen<br />
# ------------------------------------------------------------------------<br />
# Hier können beliebige, unverschlüsselte sowie verschlüsselte |<br />
# Backup-Quellen einer lokalen oder entfernten DS eingetragen werden. |<br />
# Zu beachten ist, das immer der vollständige Pfad ohne Angabe des |<br />
# entsprechenden Volume anzugeben ist. Weiterhin ist auf die |<br />
# Schreibweise im Beispiel zu achten, pro Zeile je eine Backupquelle. |<br />
# ------------------------------------------------------------------------<br />
SOURCES="/homes/admin<br />
/ordner mit leerzeichen<br />
/verschlüsselter ordner"<br />
<br />
# Backup - Ziel<br />
# ------------------------------------------------------------------------<br />
# Wenn NOTTOSCRIPT="0" |<br />
# - dann entspricht TARGET einem "Unterverzeichnis" am Speicherort des |<br />
# Scripts. Beisp.: volume[x]/share/[TARGET] oder bei einem |<br />
# angeschlossenen USB-Datenträger: volumeUSB[x]/usbshare/[TARGET] |<br />
# - Ist zusätzlich HOSTNAME="1" gesetzt, wird der Netzwerkname dem |<br />
# Speicherort hinzugefügt. Beisp.: volume[x]/Share/[TARGET]/[HOSTNAME]|<br />
# |<br />
# Wenn NOTTOSCRIPT="1" und Ziel ist eine Diskstation |<br />
# - dann entspricht TARGET einem "gemeinsamen Ordner" (Share) am |<br />
# Speicherort des Ziel's. Beisp.: volume[x]/[TARGET] |<br />
# - Ist zusätzlich HOSTNAME="1" gesetzt, wird der Netzwerkname dem |<br />
# Speicherort hinzugefügt. Beisp.: volume[x]/[TARGET]/[HOSTNAME] |<br />
# |<br />
# Wenn NOTTOSCRIPT="1" und Ziel ist ein RSync-kompatibler Server |<br />
# - dann entspricht TARGET einem Ordner (Share) am Speicherort des |<br />
# Ziel's. Beisp.: /[TARGET] |<br />
# - Ist zusätzlich HOSTNAME="1" gesetzt, wird der Netzwerkname dem |<br />
# Speicherort hinzugefügt. Beisp.: /[TARGET]/[HOSTNAME] |<br />
#-------------------------------------------------------------------------<br />
TARGET="/RSync Backup"<br />
<br />
FROMTHISDEVICE="0" # "0" = Quelle ist ein gemeinsamer Ordner<br />
# "1" = Quelle liegt auf externen USB/SATA-Speicher neben Script<br />
NOTTOSCRIPT="0" # "0" = Sicherungsziel liegt beim Script<br />
# "1" = Sicherungsziel liegt im geinsamen Ordner<br />
HOSTNAME="0" # "0" = Sicherungsziel entspricht TARGET<br />
# "1" = Sicherungsziel entspricht TARGET/HOSTNAME<br />
AUTORUN="0" # "0" = autorun wirft USB-Stick nicht aus<br />
# "1" = autorun wirft USB-Stick aus<br />
<br />
# Optische- sowie akustische Signalausgabe<br />
#-------------------------------------------------------------------------<br />
# Start : Status-LED wechselt von grün nach orange. Ein Signalton ertönt|<br />
# Ende : Status-LED wechselt von orange nach grün. Ein Signalton ertönt|<br />
# Fehler : Status-LED wechselt von orange nach grün. 3x Signalton ertönt |<br />
#-------------------------------------------------------------------------<br />
SIGNAL="0" # "0" = Optische- sowie akustische Signalausgabe aus<br />
# "1" = Optische- sowie akustische Signalausgabe an<br />
<br />
# Exportieren der DSM-Systemkonfiguration (.dss)<br />
#-------------------------------------------------------------------------<br />
# Die DSM-Systemkonfigurartion (.dss) wird in den Systemordner |<br />
# /@DSMConfig exportiert. |<br />
#-------------------------------------------------------------------------<br />
DSM_EXPORT="0" # "0" = DSM-Systemkonfiguration wird NICHT exportiert<br />
# "1" = DSM-Systemkonfiguration wird exportiert<br />
<br />
# Rotationszyklus für das Löschen von @Recycle und @Logfiles<br />
#-------------------------------------------------------------------------<br />
# Zeitangabe, wann Ordner bzw. Dateien in den System-Ordnern endgültig |<br />
# gelöscht werden sollen, die älter als x Tage sind. |<br />
# ------------------------------------------------------------------------<br />
RECYCLE_ROTATE="90" # @Recycle-Daten die älter als "x" Tage sind, löschen<br />
LOGFILES_ROTATE="60" # @Logfiles-Daten die älter als "x" Tage sind, löschen<br />
DSMCONFIG_ROTATE="30" # @DSMConfig-Daten die älter als "x" Tage sind, löschen<br />
<br />
# ------------------------------------------------------------------------<br />
# Ab hier bitte nichts mehr ändern, wenn man nicht weiß was man tut !!! |<br />
# ------------------------------------------------------------------------<br />
SCRIPTFILE="${0##*/}"<br />
SCRIPTNAME="${SCRIPTFILE%.*}"<br />
DATE=`date +%Y-%m-%d_%Hh%M`<br />
# RSync Optionen konfigurieren<br />
#-------------------------------------------------------------------------<br />
SYNCOPT="-ahR"<br />
LOGSTAT="--stats"<br />
EXCLUDE="--exclude=@eaDir/*** --exclude=@Logfiles/*** --exclude=#recycle/*** --exclude=#snapshot/*** --exclude=.DS_Store/***"<br />
RECYCLE="--delete --backup --backup-dir=@Recycle/"$DATE"_$SCRIPTNAME"<br />
<br />
# Umgebungsvariablen definieren<br />
#-------------------------------------------------------------------------<br />
BACKIFS="$IFS"<br />
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/syno/bin:/usr/syno/sbin<br />
TARGET_EMPTY="/Backup_DS"<br />
if [[ ${TARGET:0:1} != \/ ]] && [ -n "$TARGET" ]; then<br />
TARGET="/$TARGET"<br />
fi<br />
DEST="${TARGET#*/}"<br />
TARGET_CUT="${TARGET#*/}"<br />
TARGET_DECRYPT="${TARGET_CUT%%/*}"<br />
TIMESTAMP=`date +%d.%m.%Y%t%H:%M:%S`<br />
LOKALHOST="$(hostname)"<br />
HR="------------------------------------------------------------------------------------------------"<br />
<br />
# Variablen je nach Verbindung festlegen<br />
#-------------------------------------------------------------------------<br />
# Wenn Verbindung AUF entfernten Server... (TOSSH)<br />
if [ -n "$SSH_FROM" ] && [ -z "$SSH_TO" ]; then<br />
if [ -n "$SSH_PORT" ]; then<br />
FROMSSH="ssh -p $SSH_PORT $SSH_USER@$SSH_FROM"<br />
SCP="scp -P $SSH_PORT"<br />
else<br />
FROMSSH="ssh $SSH_USER@$SSH_FROM"<br />
SCP="scp"<br />
fi<br />
if [ -n "$RSYNC_PORT" ]; then<br />
FROMRSYNC="ssh -p $RSYNC_PORT -l $SSH_USER"<br />
else<br />
FROMRSYNC="ssh -l $SSH_USER"<br />
fi<br />
REMOTEIP="$SSH_FROM"<br />
# Wenn Verbindung VON entfernten Server... (FROMSSH)<br />
elif [ -z "$SSH_FROM" ] && [ -n "$SSH_TO" ]; then<br />
if [ -n "$SSH_PORT" ]; then<br />
TOSSH="ssh -p $SSH_PORT $SSH_USER@$SSH_TO"<br />
SCP="scp -P $SSH_PORT"<br />
else<br />
TOSSH="ssh $SSH_USER@$SSH_TO"<br />
SCP="scp"<br />
fi<br />
if [ -n "$RSYNC_PORT" ]; then<br />
TORSYNC="ssh -p $RSYNC_PORT -l $SSH_USER"<br />
else<br />
TORSYNC="ssh -l $SSH_USER"<br />
fi<br />
REMOTEIP="$SSH_TO"<br />
# Wenn Verbindung lokal...<br />
elif [ -z "$SSH_FROM" ] && [ -z "$SSH_TO" ]; then<br />
FIND="find"<br />
SOURCE_TEST="test"<br />
TARGET_TEST="test"<br />
if [ $HOSTNAME -eq 1 ]; then<br />
NAME="$LOKALHOST"<br />
fi<br />
fi<br />
<br />
# DSM-Benachrichtigung: Script wird ausgeführt...<br />
#-------------------------------------------------------------------------<br />
synodsmnotify @administrators "Script: $SCRIPTNAME" "Wird ausgeführt.."<br />
<br />
# Speicherort des Logfiles festlegen<br />
#-------------------------------------------------------------------------<br />
mkdir -p `dirname $0`/@Logfiles<br />
LOG="`dirname $0`/@Logfiles/"$DATE"_$SCRIPTNAME.log"<br />
if test ! -d `dirname $0`/@Logfiles; then<br />
DSMNOTIFY="Es konnte kein @Logfiles Ordner erstellt werden!"<br />
fi<br />
if [ $SIGNAL -eq 1 ]; then<br />
echo 3 >/dev/ttyS1; echo : >/dev/ttyS1<br />
sleep 2<br />
fi<br />
<br />
# Ordner/Datei für das Protokoll anlegen und Kopfdaten generieren<br />
#-------------------------------------------------------------------------<br />
# E-Mail-Kopf aufbauen...<br />
if [ -n "$EMAIL" ]; then<br />
echo "To: $EMAIL" > $LOG<br />
echo "From: $EMAIL" >> $LOG<br />
echo "Subject: Sicherungsprotokoll vom $TIMESTAMP Uhr" >> $LOG<br />
echo "" >> $LOG<br />
echo "Ausgefuehrtes RSync-Script: $SCRIPTFILE" >> $LOG<br />
echo "" >> $LOG; echo "$HR" >> $LOG<br />
# Protokoll-Kopf aufbauen...<br />
else<br />
echo "Sicherungsprotokoll vom $TIMESTAMP Uhr" >> $LOG<br />
echo "" >> $LOG<br />
echo "Ausgefuehrtes RSync-Script: $SCRIPTFILE" >> $LOG<br />
echo "" >> $LOG; echo "$HR" >> $LOG<br />
fi<br />
<br />
# Fehlererkennung<br />
#-------------------------------------------------------------------------<br />
if [ -z "$TARGET" ] && [ "$NOTTOSCRIPT" -eq 1 ]; then<br />
STOP="Bitte TARGET setzen oder NOTTOSCRIPT nicht setzen..." >> $LOG<br />
fi<br />
if [ -z "$STOP" ] && [ -n "$SSH_FROM" ] && [ -n "$SSH_TO" ]; then<br />
STOP="Bitte nur SSH_FROM oder SSH_TO setzen!" >> $LOG<br />
fi<br />
if [ -z "$STOP" ] && [ -n "$SSH_TO" ] && [ -z "$TARGET" ]; then<br />
STOP="Bei SSH_TO muss TARGET angegeben werden!"<br />
fi<br />
if [ -z "$STOP" ] && [ "$NOTTOSCRIPT" -eq 1 ] && [ -z "$TARGET" ]; then<br />
STOP="Bei NOTTOSCRIPT=1 muss TARGET angegeben werden!"<br />
fi<br />
if [ -z "$STOP" ] && [ $FROMTHISDEVICE -eq 1 ] && [ -n "$SSH_FROM" ]; then<br />
STOP="Nur FROMTHISDEVICE setzen oder SSH_FROM !"<br />
fi<br />
# Ping Test<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ]; then<br />
if [ -n "$SSH_FROM" ] || [ -n "$SSH_TO" ]; then<br />
ping $REMOTEIP -c 2<br />
ONLINE="$?"<br />
if [ $ONLINE -eq 0 ]; then<br />
echo "Remoteserver $REMOTEIP ist online." >> $LOG<br />
else<br />
if [ -z "$MAC" ]; then<br />
STOP="Remoteserver $REMOTEIP ist offline!" >> $LOG<br />
else<br />
echo "Remoteserver $REMOTEIP ist offline!" >> $LOG<br />
fi<br />
fi<br />
if [ -z "$SSH_USER" ]; then<br />
STOP="Bei der Netzwerksicherung bitte SSH_USER angeben." >> $LOG<br />
fi<br />
fi<br />
fi<br />
<br />
# WOL<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ] && [ -n "$MAC" ] && [ $ONLINE -eq 1 ]; then<br />
echo "Remoteserver $REMOTEIP wird geweckt." >> $LOG<br />
if test -f /usr/bin/ether-wake; then<br />
/usr/bin/ether-wake $MAC<br />
elif test -f /usr/syno/sbin/synonet; then<br />
/usr/syno/sbin/synonet --wake $MAC eth0<br />
fi<br />
sleep $SLEEP<br />
ping $REMOTEIP -c 2<br />
ONLINE="$?"<br />
if [ $ONLINE -eq 0 ]; then<br />
echo "Remoteserver $REMOTEIP wurde hochgefahren." >> $LOG<br />
else<br />
if [ -z "$STOP" ]; then<br />
STOP="Remoteserver $REMOTEIP konnte nicht hochgefahren werden." >> $LOG<br />
fi<br />
fi<br />
fi<br />
<br />
# Verbindungstest (SSH_FROM)<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ] && [ -n "$SSH_FROM" ] && [ -z "$SSH_TO" ]; then<br />
if [ ! "$FROMSSH" ]; then<br />
STOP="Es konnte keine SSH-Verbindung zu $SSH_FROM aufgebaut werden." >> $LOG<br />
elif [ "$FROMSSH" ]; then<br />
REMOTEHOST=$($FROMSSH "echo \`hostname\`")<br />
echo "SSH-Verbindung zu $REMOTEHOST aufgebaut." >> $LOG<br />
SYNOSHARE_SOURCE="$FROMSSH"<br />
FIND="$FROMSSH find"<br />
SOURCE_TEST="$FROMSSH test"<br />
TARGET_TEST="test"<br />
if [ $HOSTNAME -eq 1 ]; then<br />
NAME="$REMOTEHOST"<br />
fi<br />
fi<br />
fi<br />
<br />
# Verbindungstest (SSH_TO)<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ] && [ -z "$SSH_FROM" ] && [ -n "$SSH_TO" ]; then<br />
if [ ! "$TOSSH" ]; then<br />
STOP="Es konnte keine SSH-Verbindung zu $SSH_TO aufgebaut werden." >> $LOG<br />
elif [ "$TOSSH" ]; then<br />
REMOTEHOST=$($TOSSH "echo \`hostname\`")<br />
echo "SSH-Verbindung zu $REMOTEHOST aufgebaut." >> $LOG<br />
SYNOSHARE_TARGET="$TOSSH"<br />
FIND="$TOSSH find"<br />
SOURCE_TEST="test"<br />
TARGET_TEST="$TOSSH test"<br />
if [ $HOSTNAME -eq 1 ]; then<br />
NAME="$LOKALHOST"<br />
fi<br />
fi<br />
fi<br />
<br />
# Verbindungstest ob Quelle bzw. Ziel eine Diskstation ist oder nicht<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ] && [ -n "$SSH_FROM" ] || [ -n "$SSH_TO" ]; then<br />
if $SOURCE_TEST -d /usr/syno/synoman; then<br />
SOURCE_PATH="/volume*"<br />
SOURCEDS="1"<br />
echo "Quellserver ist eine DS" >> $LOG<br />
elif $SOURCE_TEST ! -d /usr/syno/synoman; then<br />
SOURCEDS="0"<br />
echo "Quellserver ist keine DS" >> $LOG<br />
fi<br />
<br />
if $TARGET_TEST -d /usr/syno/synoman; then<br />
TARGET_PATH="/volume*"<br />
TARGETDS="1"<br />
echo "Zielserver ist eine DS" >> $LOG<br />
elif $TARGET_TEST ! -d /usr/syno/synoman; then<br />
TARGETDS="0"<br />
echo "Zielserver ist keine DS" >> $LOG<br />
fi<br />
<br />
elif [ -z "$STOP" ]; then<br />
SOURCE_PATH="/volume*"<br />
TARGET_PATH="/volume*"<br />
SOURCEDS="1"<br />
TARGETDS="1"<br />
fi<br />
<br />
if [ $FROMTHISDEVICE -eq 1 ]; then<br />
SOURCE_PATH="/volume*/*share"<br />
fi<br />
<br />
# Zielordner checken<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ]; then<br />
IFS="<br />
"<br />
TARGET_ESCAPE=$(echo $TARGET | sed -e 's/ /\\ /g')<br />
TARGET_DECRYPT_ESCAPE=$(echo $TARGET_DECRYPT | sed -e 's/ /\\ /g')<br />
IFS="$BACKIFS"<br />
if [ -n "$SSH_TO" ]; then<br />
DEST_DECRYPT="$TARGET_DECRYPT_ESCAPE"<br />
else<br />
DEST_DECRYPT="$TARGET_DECRYPT"<br />
fi<br />
if [ "$NOTTOSCRIPT" -eq 1 ] || [ -n "$SSH_TO" ]; then<br />
if $TARGET_TEST ! -d $TARGET_PATH/@"$DEST_DECRYPT"@ && $TARGET_TEST -d $TARGET_PATH/"$DEST_DECRYPT"; then<br />
echo "Zielordner $TARGET_DECRYPT wurde lokalisiert..." >> $LOG<br />
elif $TARGET_TEST -d $TARGET_PATH/@"$DEST_DECRYPT"@ && $TARGET_TEST -d $TARGET_PATH/"$DEST_DECRYPT"; then<br />
echo "Verschluesselter Zielordner $TARGET_DECRYPT bereits eingehangen..." >> $LOG<br />
elif $TARGET_TEST -d $TARGET_PATH/@"$DEST_DECRYPT"@ && $TARGET_TEST ! -d $TARGET_PATH/"$DEST_DECRYPT"; then<br />
echo "Verschluesselter Zielordner $TARGET_DECRYPT nicht eingehangen..." >> $LOG<br />
# Anhand des Key-Files versuchen einen verschluesselten Zielordner einbinden<br />
if test -f `dirname $0`/"$TARGET_DECRYPT".key; then<br />
echo "$TARGET_DECRYPT.key gefunden" >> $LOG<br />
echo "Verschluesselter Zielordner $TARGET_DECRYPT wird eingehangen..." >> $LOG<br />
KEYFILEDEST=$(ecryptfs-unwrap-passphrase `dirname $0`/"$TARGET_DECRYPT".key "\$1\$5YN01o9y")<br />
$SYNOSHARE_TARGET /usr/syno/sbin/synoshare --enc_mount "$DEST_DECRYPT" "$KEYFILEDEST" >> $LOG<br />
sleep 20<br />
if $TARGET_TEST -d $TARGET_PATH/@"$DEST_DECRYPT"@ && $TARGET_TEST -d $TARGET_PATH/"$DEST_DECRYPT"; then<br />
echo "Verschluesselter Zielordner $TARGET_DECRYPT wurde eingehangen..." >> $LOG<br />
elif $TARGET_TEST -d $TARGET_PATH/@"$DEST_DECRYPT"@ && $TARGET_TEST ! -d $TARGET_PATH/"$DEST_DECRYPT"; then<br />
echo "Verschluesselter Zielordner $TARGET_DECRYPT konnte nicht eingehangen werden..." >> $LOG<br />
fi<br />
else<br />
echo "Kein Keyfile fuer $TARGET_DECRYPT gefunden! Verschluesselte Ordner muessen eingehangen werden!"<br />
fi<br />
fi<br />
if $TARGET_TEST ! -d $TARGET_PATH/"$DEST_DECRYPT"; then<br />
if [ -z "$STOP" ]; then<br />
STOP="Zielordner /$TARGET_DECRYPT nicht gefunden!"<br />
fi<br />
fi<br />
fi<br />
fi<br />
<br />
# Quellordner checken<br />
#-------------------------------------------------------------------------<br />
IFS="<br />
"<br />
for SHARE in $SOURCES; do<br />
if [[ ${SHARE:0:1} != \/ ]] ; then<br />
SHARE="/$SHARE"<br />
fi<br />
SHARE_ESCAPE=$(echo $SHARE | sed -e 's/ /\\ /g')<br />
SHARE_CUT="${SHARE#*/}"<br />
SHARE_DECRYPT="${SHARE_CUT%%/*}"<br />
SHARE_DECRYPT_ESCAPE=$(echo $SHARE_DECRYPT | sed -e 's/ /\\ /g')<br />
IFS="$BACKIFS"<br />
if [ -n "$SSH_FROM" ]; then<br />
SOURCE_DECRYPT="$SHARE_DECRYPT_ESCAPE"<br />
else<br />
SOURCE_DECRYPT="$SHARE_DECRYPT"<br />
fi<br />
if $SOURCE_TEST ! -d $SOURCE_PATH/@"$SOURCE_DECRYPT"@ && $SOURCE_TEST -d $SOURCE_PATH/"$SOURCE_DECRYPT"; then<br />
echo "Quellordner $SHARE_DECRYPT wurde lokalisiert..." >> $LOG<br />
elif $SOURCE_TEST -d $SOURCE_PATH/@"$SOURCE_DECRYPT"@ && $SOURCE_TEST -d $SOURCE_PATH/"$SOURCE_DECRYPT"; then<br />
echo "Verschluesselter Quellordner $SHARE_DECRYPT bereits eingehangen..." >> $LOG<br />
elif $SOURCE_TEST -d $SOURCE_PATH/@"$SOURCE_DECRYPT"@ && $SOURCE_TEST ! -d $SOURCE_PATH/"$SOURCE_DECRYPT"; then<br />
echo "Verschluesselter Quellordner $SHARE_DECRYPT nicht eingehangen..." >> $LOG<br />
# Anhand des Key-Files versuchen einen verschluesselten Quellordner einbinden<br />
if test -f `dirname $0`/"$SHARE_DECRYPT".key; then<br />
echo "$SHARE_DECRYPT.key gefunden" >> $LOG<br />
echo "Verschluesselter Quellordner $SHARE_DECRYPT wird eingehangen..." >> $LOG<br />
KEYFILESHARE=$(ecryptfs-unwrap-passphrase `dirname $0`/"$SHARE_DECRYPT".key "\$1\$5YN01o9y")<br />
$SYNOSHARE_SOURCE /usr/syno/sbin/synoshare --enc_mount "$SHARE_DECRYPT" "$KEYFILESHARE" >> $LOG<br />
sleep 20<br />
if $SOURCE_TEST -d $SOURCE_PATH/@"$SOURCE_DECRYPT"@ && $SOURCE_TEST -d $SOURCE_PATH/"$SOURCE_DECRYPT"; then<br />
echo "Verschluesselter Quellordner $SHARE_DECRYPT wurde eingehangen..." >> $LOG<br />
elif $SOURCE_TEST -d $SOURCE_PATH/@"$SOURCE_DECRYPT"@ && $SOURCE_TEST ! -d $SOURCE_PATH/"$SOURCE_DECRYPT"; then<br />
echo "Verschluesselter Quellordner $SHARE_DECRYPT konnte nicht eingehangen werden..." >> $LOG<br />
fi<br />
else<br />
STOP="Kein Keyfile fuer $SHARE_DECRYPT gefunden! Verschluesselte Ordner muessen eingehangen werden! Datensicherung ABGEBROCHEN..."<br />
fi<br />
fi<br />
done<br />
<br />
# Ziel definieren<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ]; then<br />
if [ -n "$SSH_TO" ] && [ -n "$TARGET" ]; then<br />
DEST_FULL=$($TOSSH "echo $TARGET_PATH/$TARGET_DECRYPT_ESCAPE")<br />
DEST_CUT="${DEST_FULL#*/}"<br />
DEST_VOL="${DEST_CUT%%/*}"<br />
if [ $TARGETDS -eq 1 ]; then<br />
DESTTARGET="/$DEST_VOL$TARGET_ESCAPE"<br />
else<br />
DESTTARGET="$TARGET_ESCAPE"<br />
fi<br />
if [ $HOSTNAME -eq 1 ]; then<br />
DESTINATION="$DESTTARGET/$NAME"<br />
else<br />
DESTINATION="$DESTTARGET"<br />
fi<br />
elif [ -z "$SSH_TO" ] && [ "$NOTTOSCRIPT" -eq 0 ] && [ -z "$TARGET" ]; then<br />
if [ $HOSTNAME -eq 1 ]; then<br />
DESTINATION="`dirname $0`$TARGET_EMPTY/$NAME"<br />
else<br />
DESTINATION="`dirname $0`$TARGET_EMPTY"<br />
fi<br />
elif [ -z "$SSH_TO" ] && [ "$NOTTOSCRIPT" -eq 1 ] && [ -n "$TARGET" ]; then<br />
DEST_FULL=$(echo $TARGET_PATH/"$TARGET_DECRYPT")<br />
DEST_CUT="${DEST_FULL#*/}"<br />
DEST_VOL="${DEST_CUT%%/*}"<br />
if [ -n "$TARGETDS" ]; then<br />
DESTTARGET="/$DEST_VOL$TARGET"<br />
else<br />
DESTTARGET="$TARGET"<br />
fi<br />
if [ $HOSTNAME -eq 1 ]; then<br />
DESTINATION="$DESTTARGET/$NAME"<br />
else<br />
DESTINATION="$DESTTARGET"<br />
fi<br />
elif [ -z "$SSH_TO" ] && [ "$NOTTOSCRIPT" -eq 0 ]; then<br />
if [ $HOSTNAME -eq 1 ]; then<br />
DESTINATION="`dirname $0`$TARGET/$NAME"<br />
else<br />
DESTINATION="`dirname $0`$TARGET"<br />
fi<br />
fi<br />
mkdir -p "$DESTINATION"<br />
if [ -n "$SSH_TO" ] && [ "$NOTTOSCRIPT" -eq 0 ]; then<br />
STOP="Bei SSH_TO muss NOTTOSCRIPT gesetzt werden!" >> $LOG<br />
elif [ -n "$SSH_TO" ] && [ "$NOTTOSCRIPT" -eq 1 ] && [ -n "$TARGET" ]; then<br />
if $TARGET_TEST -d $TARGET_PATH/$TARGET_DECRYPT_ESCAPE; then<br />
$TOSSH mkdir -p "$DESTINATION"<br />
fi<br />
fi<br />
fi<br />
<br />
# Check ob Zielordner erstellt wurde bzw. vorhanden war.<br />
if $TARGET_TEST ! -d "$DESTINATION"; then<br />
if [ -z "$STOP" ]; then<br />
STOP="Zielordner $TARGET konnte nicht erstellt werden bzw. ist nicht vorhanden !"<br />
fi<br />
fi<br />
<br />
echo "" >> $LOG<br />
echo "$HR" >> $LOG<br />
echo "" >> $LOG<br />
# Beginn der RSync-Datensicherung<br />
#--------------------------------------------------------------------------<br />
IFS="<br />
"<br />
for SHARE in $SOURCES; do<br />
if [ -z "$STOP" ]; then<br />
echo "" >> $LOG<br />
if [[ ${SHARE:0:1} != \/ ]] ; then<br />
SHARE="/$SHARE"<br />
fi<br />
SHARE_ESCAPE=$(echo $SHARE | sed -e 's/ /\\ /g')<br />
SHARE_CUT="${SHARE#*/}"<br />
SHARE_DECRYPT="${SHARE_CUT%%/*}"<br />
IFS="$BACKIFS"<br />
unset FORERROR<br />
if [ -n "$SSH_FROM" ]; then<br />
SOURCE="$SHARE_ESCAPE"<br />
else<br />
SOURCE="$SHARE"<br />
fi<br />
<br />
if $SOURCE_TEST ! -d $SOURCE_PATH"$SOURCE"; then<br />
ERROR="Quellordner $SHARE nicht erreichbar..." >> $LOG<br />
FORERROR="1"<br />
elif $SOURCE_TEST -d $SOURCE_PATH"$SOURCE"; then<br />
echo "Quellordner $SHARE erreichbar." >> $LOG<br />
fi<br />
if [ $FROMTHISDEVICE -eq 1 ] && [ -z "$SSH_FROM" ]; then<br />
SOURCE="`dirname $0`$SHARE"<br />
elif [ $FROMTHISDEVICE -eq 0 ] && [ -z "$SSH_FROM" ]; then<br />
SOURCE="$SHARE"<br />
fi<br />
<br />
if [ -z "$STOP" ] && [ -z "$FORERROR" ]; then<br />
# SSH-SSH_FROM RSync-Datensicherung VON einer entfernten DS oder komp. Server<br />
#--------------------------------------------------------------------------<br />
if [ -n "$SSH_FROM" ] && [ -z "$SSH_TO" ] && [ -n "$DESTINATION" ]; then<br />
echo "$HR" >> $LOG<br />
echo "Starte Datensicherung: $REMOTEHOST$SHARE nach $DESTINATION" >> $LOG<br />
echo "$HR" >> $LOG<br />
if [ $SOURCEDS -eq 1 ]; then<br />
rsync -e "$FROMRSYNC" $SYNCOPT $SSH_FROM:/volume*"$SOURCE" $LOGSTAT $EXCLUDE $RECYCLE "$DESTINATION" >> $LOG<br />
RSYNC_EXIT="$?"<br />
elif [ $SOURCEDS -ne 1 ]; then<br />
rsync -e "$FROMRSYNC" $SYNCOPT $SSH_FROM:"$SOURCE" $LOGSTAT $EXCLUDE $RECYCLE "$DESTINATION" >> $LOG<br />
RSYNC_EXIT="$?"<br />
fi<br />
# SSH-SSH_TO RSync-Datensicherung AUF eine entfernte DS oder komp. Server<br />
#--------------------------------------------------------------------------<br />
elif [ -n "$SSH_TO" ] && [ -z "$SSH_FROM" ] && [ -n "$DESTINATION" ]; then<br />
echo "$HR" >> $LOG<br />
echo "Starte Datensicherung: $LOKALHOST$SHARE nach $DESTINATION" >> $LOG<br />
echo "$HR" >> $LOG<br />
if [ $SOURCEDS -eq 1 ] && [ $FROMTHISDEVICE -ne 1 ]; then<br />
rsync -e "$TORSYNC" $SYNCOPT /volume*"$SOURCE" $LOGSTAT $EXCLUDE $RECYCLE $SSH_TO:"$DESTINATION" >> $LOG<br />
RSYNC_EXIT="$?"<br />
elif [ $SOURCEDS -ne 1 ] || [ $FROMTHISDEVICE -eq 1 ]; then<br />
rsync -e "$TORSYNC" $SYNCOPT "$SOURCE" $LOGSTAT $EXCLUDE $RECYCLE $SSH_TO:"$DESTINATION" >> $LOG<br />
RSYNC_EXIT="$?"<br />
fi<br />
# RSync- Lokale Datensicherung auf Volume, USB- oder SATA-Datentr�ger<br />
#-------------------------------------------------------------------------<br />
elif [ -z "$SSH_TO" ] && [ -z "$SSH_FROM" ] && [ -n "$DESTINATION" ]; then<br />
echo "$HR" >> $LOG<br />
echo "Starte Datensicherung: $REMOTEHOST$SHARE nach $DESTINATION" >> $LOG<br />
echo "$HR" >> $LOG<br />
if [ $SOURCEDS -eq 1 ] && [ $FROMTHISDEVICE -ne 1 ]; then<br />
rsync $SYNCOPT /volume*"$SOURCE" $LOGSTAT $EXCLUDE $RECYCLE "$DESTINATION" >> $LOG<br />
RSYNC_EXIT="$?"<br />
elif [ $SOURCEDS -ne 1 ] || [ $FROMTHISDEVICE -eq 1 ]; then<br />
rsync $SYNCOPT "$SOURCE" $LOGSTAT $EXCLUDE $RECYCLE "$DESTINATION" >> $LOG<br />
RSYNC_EXIT="$?"<br />
fi<br />
fi<br />
echo "" >> $LOG<br />
if [ $RSYNC_EXIT -ne 0 ]; then<br />
RSYNC_CODE="$RSYNC_EXIT"<br />
fi<br />
fi<br />
fi<br />
done<br />
<br />
# RSync Exit-Code = Fehlermeldung<br />
#-------------------------------------------------------------------------<br />
if [ -n "$RSYNC_CODE" ]; then<br />
# Exit-Code: Entfernter Server ausgeschaltet?<br />
if [ $RSYNC_CODE -eq 43 ]; then<br />
echo "RSync-Code $RSYNC_CODE: Entfernte DS oder RSync komp. Server nicht Online? Bitte RSYNC Port kontrollieren!" >> $LOG<br />
# Exit-Code: DSL-Verbindung getrennt?<br />
elif [ $RSYNC_CODE -eq 255 ]; then<br />
echo "RSync-Code $RSYNC_CODE: Bitte Internetverbindung oder RSYNC Port kontrollieren!" >> $LOG<br />
# Exit-Code ausgeben...<br />
elif [ $RSYNC_CODE -ne 0 ]; then<br />
echo "RSync Fehlermeldung (Exit Code): $RSYNC_CODE" >> $LOG<br />
fi<br />
fi<br />
<br />
# RSync Exit-Code = Erfolgreich bzw. Unvollständig<br />
#-------------------------------------------------------------------------<br />
if [ -z "$RSYNC_CODE" ] && [ -z "$STOP" ] && [ -z "$ERROR" ]; then<br />
echo "$HR" >> $LOG<br />
echo "RSync-Datensicherung erfolgreich. Sicherungsziel: $DESTINATION" >> $LOG<br />
if [ -z "$DSMNOTIFY" ]; then<br />
DSMNOTIFY="RSync-Datensicherung erfolgreich. Sicherungsziel: $DESTINATION"<br />
fi<br />
# Signalausgabe - Datensicherung erfolgreich<br />
if [ $SIGNAL -eq 1 ]; then<br />
echo 3 >/dev/ttyS1; echo 8 >/dev/ttyS1<br />
sleep 2<br />
fi<br />
# RSync Exit-Code = Fehlermeldung<br />
elif [ $RSYNC_CODE -ne 0 ] || [ -n "$STOP" ] || [ -n "$ERROR" ]; then<br />
echo "$HR" >> $LOG<br />
echo "RSync-Datensicherung unvollstaendig oder fehlgeschlagen - Sicherungsziel: $DESTINATION" >> $LOG<br />
if [ -z "$DSMNOTIFY" ]; then<br />
DSMNOTIFY="RSync-Datensicherung unvollstaendig oder fehlgeschlagen - Bitte Protokoll prüfen!"<br />
fi<br />
# Signalausgabe - Datensicherung fehlgeschlagen<br />
if [ $SIGNAL -eq 1 ]; then<br />
echo 2 >/dev/ttyS1; sleep 1; echo 2 >/dev/ttyS1; sleep 1; echo 2 >/dev/ttyS1; sleep 1; echo 8 >/dev/ttyS1<br />
fi<br />
fi<br />
echo "$HR" >> $LOG; echo "" >> $LOG<br />
if [ -n "$STOP" ]; then<br />
echo "FEHLER: $STOP" >> $LOG<br />
fi<br />
if [ -n "$ERROR" ]; then<br />
echo "FEHLER: $ERROR" >> $LOG<br />
fi<br />
<br />
# DSM-Systemkonfiguration exportieren<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ] && [ "$DSM_EXPORT" -eq 1 ] && [ -z "$RSYNC_CODE" ]; then<br />
if [ -n "$SSH_FROM" ] && [ -z "$SSH_TO" ] && [ -n "$SOURCEDS" ]; then<br />
$FROMSSH /usr/syno/bin/synoconfbkp export --filepath DSMConfig_TEMP.dss<br />
mkdir -p "$DESTINATION"/@DSMConfig<br />
$SCP -r $SSH_USER@$SSH_FROM:DSMConfig_TEMP.dss "$DESTINATION"/@DSMConfig/DSMConfig_"$DATE"_$REMOTEHOST.dss<br />
$FROMSSH rm -rf DSMConfig_TEMP.dss<br />
echo "Sicherung der DSM-Systemkonfiguration von $REMOTEHOST erfolgreich zu $LOKALHOST kopiert.." >> $LOG<br />
echo "" >> $LOG<br />
elif [ -z "$SSH_FROM" ] && [ -n "$SSH_TO" ]; then<br />
synoconfbkp export --filepath `dirname $0`/@DSMConfig/DSMConfig_"$DATE"_$LOKALHOST.dss<br />
$TOSSH mkdir -p "$DESTINATION"/@DSMConfig<br />
$SCP -r `dirname $0`/@DSMConfig/*.dss $SSH_USER@$SSH_TO:"$DESTINATION"/@DSMConfig/<br />
rm -rf `dirname $0`/@DSMConfig<br />
echo "Sicherung der DSM-Systemkonfiguration von $LOKALHOST erfolgreich zu $REMOTEHOST kopiert.." >> $LOG<br />
echo "" >> $LOG<br />
elif [ -z "$SSH_FROM" ] && [ -z "$SSH_TO" ]; then<br />
mkdir -p "$DESTINATION"/@DSMConfig<br />
synoconfbkp export --filepath "$DESTINATION"/@DSMConfig/DSMConfig_"$DATE"_$LOKALHOST.dss<br />
echo "Lokale Sicherung der DSM-Systemkonfiguration erfolgreich." >> $LOG<br />
echo "" >> $LOG<br />
fi<br />
fi<br />
<br />
# Rotationszyklus für das Löschen von @Recycle, @Logfiles und @DSMConfig<br />
#-------------------------------------------------------------------------<br />
# Dateien im Ordner @Recycle die älter als x Tage sind, löschen.<br />
if [ -z "$STOP" ] && [ -z "$RSYNC_CODE" ]; then<br />
if $TARGET_TEST -d "$DESTINATION"/@Recycle/; then<br />
if [ -z "$STOP" ] && [ -n "$RECYCLE_ROTATE" ] && [ -z "$ERROR" ]; then<br />
$FIND "$DESTINATION"/@Recycle/* -type d -mtime +$RECYCLE_ROTATE -exec rm -rf {} \;<br />
echo "HINWEIS: Daten aus dem Ordner /@Recycle, die mehr als $RECYCLE_ROTATE Tage alt waren, wurden geloescht." >> $LOG<br />
echo "" >> $LOG<br />
fi<br />
fi<br />
# Dateien im Ordner @Logfiles die älter als x Tage sind, löschen.<br />
if $TARGET_TEST -d `dirname $0`/@Logfiles/; then<br />
if [ -z "$STOP" ] && [ -n "$LOGFILES_ROTATE" ] && [ -z "$ERROR" ]; then<br />
find `dirname $0`/@Logfiles -name "*.log" -type f -mtime +$LOGFILES_ROTATE -exec rm {} \;<br />
echo "HINWEIS: Daten aus dem Ordner /@Logfiles, die mehr als $LOGFILES_ROTATE Tage alt waren, wurden geloescht." >> $LOG<br />
echo "" >> $LOG<br />
fi<br />
fi<br />
# Dateien im Ordner @DSMConfig die älter als x Tage sind, löschen.<br />
if $TARGET_TEST -d "$DESTINATION"/@DSMConfig/; then<br />
if [ -z "$STOP" ] && [ -n "$DSMCONFIG_ROTATE" ] && [ -z "$ERROR" ]; then<br />
$FIND "$DESTINATION"/@DSMConfig -name "*.dss" -type f -mtime +$DSMCONFIG_ROTATE -exec rm {} \;<br />
echo "HINWEIS: Daten aus dem Ordner /@DSMConfig, die mehr als $DSMCONFIG_ROTATE Tage alt waren, wurden geloescht." >> $LOG<br />
echo "" >> $LOG<br />
fi<br />
fi<br />
fi<br />
<br />
# Verschlüsselte Shares wieder aushängen..<br />
#-------------------------------------------------------------------------<br />
if [ $UNMOUNT -ne 0 ] && [ -n "$TARGETDS" ]; then<br />
if [ $UNMOUNT -ne 2 ]; then<br />
IFS="<br />
"<br />
TARGET_ESCAPE=$(echo $TARGET | sed -e 's/ /\\ /g')<br />
TARGET_DECRYPT_ESCAPE=$(echo $TARGET_DECRYPT | sed -e 's/ /\\ /g')<br />
IFS="$BACKIFS"<br />
if [ -n "$SSH_TO" ]; then<br />
DEST_DECRYPT="$TARGET_DECRYPT_ESCAPE"<br />
else<br />
DEST_DECRYPT="$TARGET_DECRYPT"<br />
fi<br />
if $TARGET_TEST -d /volume*/@"$DEST_DECRYPT"@ && $TARGET_TEST -d /volume*/"$DEST_DECRYPT"; then<br />
echo "Ziel: $TARGET_DECRYPT wurde ausgehangen" >> $LOG<br />
$SYNOSHARE_TARGET /usr/syno/sbin/synoshare --enc_unmount "$DEST_DECRYPT" >> $LOG<br />
sleep 10<br />
fi<br />
fi<br />
fi<br />
if [ $UNMOUNT -ne 0 ] && [ -n "$SOURCEDS" ]; then<br />
if [ $UNMOUNT -ne 3 ]; then<br />
IFS="<br />
"<br />
for SHARE in $SOURCES; do<br />
SHARE_ESCAPE=$(echo $SHARE | sed -e 's/ /\\ /g')<br />
SHARE_CUT="${SHARE#*/}"<br />
SHARE_DECRYPT="${SHARE_CUT%%/*}"<br />
SHARE_DECRYPT_ESCAPE=$(echo $SHARE_DECRYPT | sed -e 's/ /\\ /g')<br />
IFS="$BACKIFS"<br />
if [ -n "$SSH_FROM" ]; then<br />
SOURCE_DECRYPT="$SHARE_DECRYPT_ESCAPE"<br />
else<br />
SOURCE_DECRYPT="$SHARE_DECRYPT"<br />
fi<br />
if $SOURCE_TEST -d /volume*/@"$SOURCE_DECRYPT"@ && $SOURCE_TEST -d /volume*/"$SOURCE_DECRYPT"; then<br />
echo "Quelle: $SHARE_DECRYPT wurde ausgehangen" >> $LOG<br />
$SYNOSHARE_SOURCE /usr/syno/sbin/synoshare --enc_unmount "$SHARE_DECRYPT" >> $LOG<br />
sleep 10<br />
fi<br />
done<br />
fi<br />
fi<br />
unset KEYFILEPW<br />
<br />
# Entfernten Server herunterfahren<br />
#-------------------------------------------------------------------------<br />
if [ $SHUTDOWN -ne 0 ] && [ -z "$RSYNC_CODE" ] && [ -z "$STOP" ] && [ -z "$ERROR" ]; then<br />
if [ -n "$SSH_FROM" ]; then<br />
$FROMSSH poweroff<br />
echo "Remoteserver $SSH_FROM wird heruntergefahren." >> $LOG<br />
elif [ -n "$SSH_TO" ]; then<br />
$TOSSH poweroff<br />
echo "Remoteserver $SSH_TO wird heruntergefahren." >> $LOG<br />
fi<br />
fi<br />
<br />
# Benachrichtigung an die DSM-Administratorengruppe sowie E-Mail senden<br />
#-------------------------------------------------------------------------<br />
if [ -n "$DSMNOTIFY" ]; then<br />
synodsmnotify @administrators "Script: $SCRIPTNAME" "$DSMNOTIFY"<br />
fi<br />
if [ -n "$EMAIL" ]; then<br />
if [ "$EMAILFAIL" -eq 1 ] && [ -z "$RSYNC_CODE" ] || [ -n "$STOP" ] || [ -n "$ERROR" ]; then<br />
ssmtp $EMAIL < $LOG<br />
elif [ "$EMAILFAIL" -eq 0 ]; then<br />
ssmtp $EMAIL < $LOG<br />
fi<br />
fi<br />
<br />
# Script beenden...<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ] && [ -z "$RSYNC_CODE" ] && [ -z "$ERROR" ] && [ "$AUTORUN" -eq 1 ]; then<br />
exit 100<br />
else<br />
exit $?<br />
fi<br />
<br />
</pre><br />
<br />
=Erstellen eines RSA-Keys für den Aufbau einer SSH-Verbindung=<br />
Es soll eine dateibasierte Datensicherung mittels RSync von Diskstation "A" (Produktivsystem) auf Diskstation "B" (Backupsystem) angelegt werden. Dabei übernimmt das Backupsystem die Aufgabe des Servers, worüber der Verbindungsaufbau und der eigentliche Sicherungsvorgang initiiert wird. Das Produktivsystem übernimmt somit die Aufgabe des Client und muss dem ganzen Vorgang nur zustimmen. Um dies zu ermöglichen muss im Vorfeld ein RSA-Schlüssel auf dem Backupsystem erzeugt und dem Produktivsystem der öffentliche Schlüssel mitgeteilt werden, um so den automatischen Verbindungsaufbau per SSH zu ermöglichen. Nachdem die SSH-Verbindung erfolgreich aufgebaut wurde, wird der eigentliche rsync-Befehl abgesetzt und somit die Datensicherung ausgelöst. Um auch in die Gegenrichtung sichern zu können, muss die RSA-Key Einrichtung dementsprechend gedreht werden, so das am Ende sowohl Diskstation "A" als auch Diskstation "B" Quelle als auch Ziel der Datensicherung darstellen können.<br />
<br />
Im folgenden werden alle Einstellungen für den Benutzer '''root''' getroffen, da nur unter diesem Benutzer die Signalausgabe als auch das Sichern der DSM-Konfiguration funktioniert. Wer hier lieber als "admin" oder vielleicht sogar als eingeschränkter Benutzer "rsync" arbeiten möchte, muss nachfolgend an den entsprechenden Stellen den gewünschten Benutzernamen einsetzen. Das hier verwendete Homeverzeichnis des Benutzer "root" wird im folgenden nur in dessen Kurzform mit ~/ angesprochen, wobei hier immer auf /root verwiesen wird. Alle anderen Benutzerkonten befinden sich im Homeverzeichnis /home/[BENUTZERNAME] bzw. richtigerweise unter /var/services/homes/[BENUTZERNAME].<br />
<br />
(Nachfolgend symbolisiert das Zeichen "$" nur den Zeilenanfang und wird nicht mit geschrieben)<br />
<br />
<br />
'''Hinweis zum Loginvorgang bis DSM 5.2 für den Benutzer "root"'''<br />
<pre><br />
Login als Benutzer "root" mit dem Passwort des DSM-Benutzer "admin"<br />
</pre><br />
<br />
'''Hinweis zum Loginvorgang ab DSM 6 für den Benutzer "root"'''<br />
<pre><br />
Login als Benutzer "admin" mit dem Passwort des DSM-Benutzer "admin"<br />
<br />
"root"-Zugriff erhält man dann über die Eingabe von...<br />
<br />
$ sudo -i<br />
<br />
...und gibt abermals das Password des DSM-Benutzer "admin" ein.<br />
</pre> <br />
<br />
<br />
'''Beginnen wir auf dem Server der "Diskstation B" oder besser gesagt, dem Backupsystem'''<br />
<br />
Auf der Konsole der DS als Benutzer "root" einloggen. <br />
Erstellen des RSA-Schlüssels mit...<br />
<br />
<pre>$ ssh-keygen -t rsa</pre><br />
<br />
Bei der Erstellung wird man nach Speicherort und Passphrase gefragt...<br />
<br />
<pre><br />
Enter file in which to save the key (/root/.ssh/id_rsa):<br />
Enter passphrase (empty for no oassphrase):<br />
Enter same passphrase again:<br />
</pre><br />
<br />
... hier bitte nichts eintragen, sondern einfach nur mit der "Return-Taste" bestätigen. Nach der Ausführung werden im Homeverzeichnis des Benutzer "root" folgende Ordner und Dateien erstellt:<br />
<br />
<pre><br />
~/.ssh<br />
~/.ssh/id_rsa<br />
~/.ssh/id_rsa.pub<br />
</pre><br />
<br />
An dieser Stelle sollte man gleich noch die Ordner- und Dateirechte anpassen.<br />
<br />
<pre>$ chmod 0700 ~/.ssh<br />
$ chmod 0600 ~/.ssh/id_rsa*<br />
</pre><br />
<br />
Den Inhalt der Datei ~/.ssh/id_rsa.pub z.B. mit vi, nano oder dem AdminTool editieren und den Inhalt in die Zwischenablage kopieren.<br />
<br />
<pre>$ nano ~/.ssh/id_rsa.pub</pre><br />
<br />
Wichtig, wie hier im Beispiel gezeigt (RSA-Schlüssel wurde hier gekürzt) ist, das alles in einer Zeile steht...<br />
<br />
<pre>ssh-rsa AAAAB3NzaC1yc2..*gekürzt*...EAAAADAQABA3e root@Backupstation</pre><br />
<br />
'''Weiter gehts auf dem Client der "Diskstation A", also dem Produktivsystem.'''<br />
<br />
Auf der Konsole der DS als Benutzer "root" einloggen. Erstellen eines neuen Ornders<br />
<br />
<pre>$ mkdir ~/.ssh</pre><br />
<br />
Daraufhin wird unter ~/.ssh/ eine neue Datei namens "authorized_keys" erstellt...<br />
<br />
<pre>$ nano ~/.ssh/authorized_keys</pre><br />
<br />
...und der Inhalt aus der Zwischenablage, also der Inhalt aus der ~/.ssh/id_rsa.pub, die auf dem Backupsystem erstellt wurde, in die geöffnete Datei eingefügt. Nach dem Speichern und verlassen des Editors müssen auch hier noch die Ordner- und Dateirechte richtig gesetzt werden.<br />
<br />
<pre><br />
$ chmod 0700 ~/.ssh<br />
$ chmod 0600 ~/.ssh/authorized_keys<br />
</pre><br />
<br />
'''Zurück auf der Konsole der Backupstation.'''<br />
<br />
Als Benutzer "root" auf der DS einloggen und als Erstes die SSH-Verbindung prüfen mit...<br />
<br />
<pre>$ ssh root@IP-DER-DISKSTATION_A -p 22</pre><br />
<br />
Der Verbindungsaufbau möchte vom System nochmal mit "yes" bestätigt werden um anschließend auf der Konsole des Produktivsystemes zu landen. Diese Verbindung kann man durch die Eingabe eines...<br />
<br />
<pre>$ exit</pre><br />
<br />
... wieder beenden. Durch den Verbindungsaufbau wurde nun in der Datei ~/.ssh/known_hosts ein neuer Eintrag hinzugefügt, der die Zugangsdaten zur Diskstation beinhaltet. Kontrollieren kann man das mit...<br />
<br />
<pre>$ nano ~/.ssh/known_hosts</pre><br />
<br />
Nachdem alles gut verlaufen ist, wird die Konsole wieder geschlossen mit...<br />
<br />
<pre>$ exit</pre><br />
<br />
=Release Notes=<br />
<br />
'''Release Notes vom 10.05.2016'''<br />
(Knapp 150 Zeilen Script-Code wurden seit dem letzen Update hinzugefügt.)<br />
* Es wurde eine neue Variable (MAC) geschaffen um entfernte Server per WOL zu starten.<br />
* Es wurde eine neue Variable (SLEEP) geschaffen um dem entfernten Server ein Zeitfenster zum starten zu geben.<br />
* Es wurde eine neue Variable (SHUTDOWN) geschaffen um entfernte Server auszuschalten.<br />
* Anhand der drei grade genannten Variablen können demnach entfernte Server per WOL geweckt, die eigentliche Datensicherung ausgeführt werden um im Anschluss den entfernten Server bei Bedarf wieder auszuschalten. <br />
* Es wurde eine neue Variable (FROMTHISDEVICE) geschaffen um Inhalte eines USB/SATA-Datenräger auf eine Diskstation oder einem entfernten, RSync-kompatiblen Server zu sichern.<br />
* Quellen und Ziel können ab sofort auch Leerzeichen enthalten. <br />
<br />
'''Release Notes vom 01.05.2016'''<br />
* Es wurde eine neue Variable (SSH_PORT) geschaffen um einen abweichenden SSH-Port angeben zu können.<br />
* Es wurde eine neue Variable (RSYNC_PORT) geschaffen um einen abweichenden RSync-Port angeben zu können.<br />
* Es wurde eine neue Variable (EMAILFAIL) geschaffen um nur bei einer Störung per E-Mail benachrichtigt zu werden.<br />
* Alle "schaltbaren" Benutzer-Variablen wurden nach dem Schema "0" = aus / "1" = an umstrukturiert. Ursprünglich wurde der Wert bei Zustand "aus" einfach leer gelassen, also "". <br />
* Kommentare im Benutzer-Eingabebereich des Scripts wurden optimiert.<br />
* Neben der bereits funktionierenden Sicherung von und auf eine weitere Diskstation funktioniert jetzt auch das Sichern von und auf einen RSync-kompatible Server. Das Script erkennt hierbei automatisch ob es sich um eine Diskstation oder einen RSync-kompatiblen Server handelt und passt die Sicherungs-Pfade dementsprechend an. Diskstation arbeiten i.d.R. mit einem /volume[x], RSync-kompatible Server tun das in der Regel nicht.<br />
* Viele weitere Detailverbesserungen, die hier nicht alle aufgeführt werden können. Nur so viel... das Script ist um weitere 100 Zeilen Scipt-Code gewachsen.<br />
<br />
=Externe Links=<br />
*[http://www.synology-forum.de/showthread.html?72786-Projekt-rsync-Alternative-dateibasierte-Datensicherung Forum Post]<br />
*[http://wpkg.org/Rsync_exit_codes rsync Exit Codes]<br />
*[http://www.synology-wiki.de/index.php/LEDs_und_Buttons LEDs und Buttons (zur Signalsteuerung)]<br />
<br />
.</div>Itommeshttps://www.synology-wiki.de/index.php?title=Inhalt&diff=7403Inhalt2023-03-25T11:47:21Z<p>Itommes: </p>
<hr />
<div>[[Category:Portal]]<br />
{|width="100%" border=0 cellpadding=5 cellspacing=7 style="border: 1px solid #cee0f2;background-color:#f5faff"<br />
|style="background-color:#cee0f2; border: 1px solid #a3b1bf; font-size:120%; font-weight: bold"|[[Inhalt|Allgemeine Themen]]<br />
|-<br />
|<br />
#Vorbereitung vor der ersten Installation<br />
##[[Planung der Festplatten und Raidlevel]]<br />
##[[Vorbereitung der Festplatten]]<br />
##[https://www.synology.com/de-de/compatibility Synology Kompatibilitätslisten (Link auf www.synology.com)]<br />
##[http://forum.synology.com/wiki/index.php/User_Reported_Compatible/Incompatible_Hardware/Software Anwender Kompatibilitätslisten (Link ins internationale Synology-Wiki)]<br />
##[[Zusätzliche Kompatibilitätslisten]]<br />
##[[Problembehandlung Performance Probleme bei Festplatten mit 4 KByte Sektoren]]<br />
#Installation des Synology-Servers<br />
##[[Problembehandlung bei der Erstinstallation der Firmware]]<br />
##[[Problembehandlung beim Firmware-Update]]<br />
#Anleitungen<br />
##[[Zugriff auf die Synology-Dienste über Internet]]<br />
###[[Grundsätzliches zum Thema Netzwerksicherheit]]<br />
####[[Viren auf dem Synology-Server?]]<br />
###[[Zugriff auf die Synology-Dienste über Internet#Konfiguration des Routers|Konfiguration des Routers]]<br />
###[[Zugriff auf die Synology-Dienste über Internet#DynDNS|DynDNS]]<br />
###[[Zugriff auf die Synology-Dienste über Internet#Liste der verwendeten Ports|Liste der verwendeten Ports]]<br />
##[[Datenzugriff über Internet]]<br />
###[[Datenzugriff über Internet#Synology File Station|Synology File Station]]<br />
###[[Datenzugriff über Internet#FTP|FTP]]<br />
##[[Netzwerkzugriff auf iSCSI-Ressourcen]]<br />
##[[:Category:Backup and Recovery|Sichern und Wiederherstellen]]<br />
###[[Ein Backup mit dem Synology Data Replicator 3 einrichten]]<br />
###[[Erstellen eines Backups mittels Apple Timemachine]]<br />
####[[Defektes TimeMachine-Backup / Sparsebundle reparieren]]<br />
###[[Den Synology-Server auf eine externe USB-Festplatte sichern]]<br />
###[[Den Synology-Server auf einen anderen Synology-Server oder einen RSync-kompatiblen Server sichern]]<br />
###[[Windows-PCs mit 'robocopy' sichern]]<br />
###[[Dateibasierte RSync-Datensicherung auf externen Datenträger oder RSync kompatiblen Server]]<br />
##[[Einrichten einer Webseite mit dem Synology Server]]<br />
###[[Aktivieren von Web Station oder MySQL]]<br />
###[[Einrichten von mehreren Webseiten und Subdomains]]<br />
###[[Scannen durch Suchmaschinen verhindern]]<br />
###[[Zugriffsschutz für Webseiten einrichten]]<br />
###[[Verwalten der MySQL-Datenbank]]<br />
###[[Backup der MySQL-Datenbank mit phpmyAdmin]]<br />
###[[Programmieren mit PHP]]<br />
###[[PHP konfigurieren]]<br />
##Benutzung des Druckservers<br />
###[[Installation eines USB-Druckers, Mac Computer|Macintosh Computer]]<br />
###[[Installation eines USB-Druckers, Windows Computer|Windows Computer]]<br />
###[[Installation eines USB-Druckers, Linux|Linux]]<br />
##Nutzung der Synology Station als Fileserver<br />
###[[Einrichtung der Freigabeordner, Benutzer und Rechte]]<br />
###[[NFS-Konfiguration]]<br />
###[[Zuordnung von freigegebenen Ordnern zwischen verschiedenen Synology NAS]]<br />
###[[Zuordnung von Netzlaufwerken unter Mac OS X]]<br />
####[[Zuordnung von Netzlaufwerken unter Mac OS X#Protokolle unter Mac OS X|Protokolle unter Mac OS X]]<br />
####[[Zuordnung von Netzlaufwerken unter Mac OS X#Zuordnung von Netzwerklaufwerken mit automount|Zuordnung von Netzwerklaufwerken mit automount]]<br />
####[[Zuordnung von Netzlaufwerken unter Mac OS X#Zuordnung von Netzlaufwerken unter MAC OS 10.5.3 mit dem Automator|Zuordnung von Netzlaufwerken unter MAC OS 10.5 mit dem Automator]]<br />
###[[Offline-Ordner mit Vista]]<br />
###[[Übertragungsraten]]<br />
##Internet-Dienste<br />
###[[Apache Webserver|Dienste auf dem Apache Webserver]]<br />
####[[Subdomain via SSL erreichen|Eine Subdomain via SSL erreichbar machen]]<br />
####[[WebDAV|WebDAV für den user-Apachen]]<br />
###[[Apache Erweiterungen]]<br />
###[[Fotos über die Photo Station zugänglich machen|Photo Station]]<br />
###*[[Photo Station CSS-Benutzeranpassung|CSS-Benutzeranpassung]]<br />
###[[Verwendung des Blogs|Blog]]<br />
###[[Nutzung der Audio Station|Audio Station]]<br />
###[[Nutzung der Surveillance Station|Surveillance Station]]<br />
###[[Nutzung der Download Station|Download Station]]<br />
###*[[Firefox Plugins für Download Station|Firefox Plugins]]<br />
###Mailstation<br />
####[[Nutzung der Mail Station|Mail Station]]<br />
####[[Mailstation-de-anleitung|Mailstation Guide]]<br />
####[[Mail Station mit eigener Domain]]<br />
####[[Vorteile_und_Nachteile_der_Mail_Station|Vor- und Nachteile der Mail Station]]<br />
###Zarafa<br />
####[[Was ist Zarafa|Zarafa Die Idee dahinter]]<br />
####[[Zarafa Installation Anleitung|Anleitung (Zarafa Installation)]]<br />
####[[Offzielle Ressourcen|Offizielle Webseiten]]<br />
####[[Links und verschiedenes|Weblinks]]<br />
###[[Übersicht über weitere Webanwendungen]]<br />
###*[[Letodms|Dokumenten-Management-System (LetoDMS)]]<br />
###*[[Seeddms|Dokumenten-Management-System (Schnellinstallation SeedDMS)]]<br />
###*[[Tiny Tiny RSS|Serverbasierter Feedreader (Tiny Tiny RSS)]]<br />
###*[[CalDAV|CalDAV-Server im DSM]]<br />
###Embedding von Audio und Video in bestehende Internetseiten<br />
####[[Unter Benutzung der in der DSM integrierten Photostation|Mit der Photostation]]<br />
####[[Unter Benutzung eines externen Players - Hier mit Joomla|Mit externem Player]]<br />
##Multimedia-Dienste<br />
###[[Problembehebung DLNA-Server (Index)]]<br />
###iTunes<br />
####[[Nutzung des iTunes Media Servers|iTunes Server]]<br />
####[[Export der iTunes-Mediathek auf die DS]]<br />
##Datensicherheit<br />
###[[Verschlüsselung gemeinsamer Ordner]]<br />
#System-Wartung<br />
##[[Durchführung eines Reset am Gehäuse]]<br />
##[[Reparatur eines Raid-Volumes]]<br />
##[[Hibernation: Dinge, die den Disk-Spin-Down betreffen]]<br />
##Datenrettung<br />
###[[Datenrettungstools]]<br />
###[[Datenrettung von Raid-Systemen unter Linux]]<br />
###[[Auslesen von Daten auf einem PC]]<br />
###[[Wiederherstellen verschlüsselter Ordner]]<br />
#Weitere Informationen<br />
##[[Synology DiskStation - Kleiner Guide]]<br />
##[[Migration zwischen verschiedenen Diskstations]]<br />
##[[Liste von unterstützten Multimedia-Formaten]]<br />
##[[Versionsnummern der installierten Programme]]<br />
##[[Mailstation Links|Links für die Mailstation]]<br />
##[[Paketzentrum Quellen|SPK Quellen für das DSM Paketzentrum]]<br />
|}</div>Itommeshttps://www.synology-wiki.de/index.php?title=Modifikationen&diff=7402Modifikationen2023-03-25T11:45:35Z<p>Itommes: Änderung 7380 von Itommes (Diskussion) rückgängig gemacht.</p>
<hr />
<div>[[Category:Portal]]<br />
{|width="100%" height="100%" border=0 cellpadding=5 cellspacing=7 style="border: 1px solid #c0c0c0;background-color:#e0e0e0"<br />
|style="background-color:#c0c0c0; border: 1px solid #a0a0a0; font-size:120%; font-weight: bold"|[[Modifikationen|Modding Themen]]<br />
|-<br />
|<br />
#[[Wichtige Informationen zum Modden der Synology Stations]]<br />
#[[Übersicht über verfügbare 3rd-Party-Apps aus unserer Community]]<br />
#Grundsätzliches zur Hard- und Software des Synology-Servers<br />
##[[Wie funktioniert ein Computer?]]<br />
##[[Platten, RAIDs und Dateisysteme]]<br />
##[[Überblick über Modifizierungen des Synology-Servers]]<br />
##[[Welchen Prozessortyp besitzt mein System?]]<br />
##[[Welche Performance besitzt mein System?]]<br />
##[[Arbeitsweise der Synology Stations]]<br />
##[[LEDs und Buttons]]<br />
##[[Viren auf dem Synology-Server?]]<br />
##[[Stromverbrauchswerte User]]<br />
#[[Die Kommandozeile]]<br />
##[[Grundlegende Befehle auf der Kommandozeile]]<br />
##[[Vergleich von Texteditoren]]<br />
###[[vi]]<br />
###[[vim]]<br />
###[[nano]]<br />
##[[less|Alternativer Pager less]]<br />
##[[Synology Toolset]]<br />
##[[Locale-UTF8|UTF-8–Kodierung einstellen]]<br />
##[[synogear: weitere Tools]]<br />
#[[Wo ist was im Linux-System]]<br />
##[[Dateien im /etc-Verzeichnis|/etc-Verzeichnis]]<br />
##[[Dateien im /dev-Verzeichnis|/dev-Verzeichnis]]<br />
##[[Dateien im /lib-Verzeichnis|/lib-Verzeichnis]]<br />
##[[Dateien im /tmp-Verzeichnis|/tmp-Verzeichnis]]<br />
##[[Dateien im /usr-Verzeichnis|/usr-Verzeichnis]]<br />
##[[Dateien im /var-Verzeichnis|/var-Verzeichnis]]<br />
##[[Dateien im /volume1-Verzeichnis|/volume1-Verzeichnis]]<br />
#[[Nicht unterstützte Konfigurationsänderungen]]<br />
##Systemmanagement<br />
###[[3rd_Party_Applications_absichern|3rd Party Applications vor unberechtigten Zugriffen schützen]]<br />
###[[Cron|Cron konfigurieren]]<br />
###[[Generierung eines eigenen SSL-Zertifikats]]<br />
###[[SSL-Zertifikat von ready2host einbinden]]<br />
###[[Downgrade der Synology-Firmware]]<br />
###[[Mount Bind]]<br />
###[[Gemeinsames Homeverzeichnis für mehrere User]]<br />
###[[User-Apache alle Zugriffe via Browser loggen lassen|Logdatei für den Apache-Server erstellen]]<br />
###[[Anzahl der möglichen Terminalfenster erhöhen]]<br />
###[[ssh_mit_Zertifikaten_absichern|Secure Shell (ssh) Zugriff nur mit Schlüssel]]<br />
###[[Ssh_clients_blocken|PHP Script zum Logfile Scan nach ssh Fehlern]]<br />
###[[Automatisches Herunterfahren wenn kein Ping möglich]]<br />
###[[Statusmail von der Diskstation]]<br />
###[[Aktuellen Status twittern (CPU, RAM, Speicher)]]<br />
###[[DSM Zugriff auf IP-Ebene beschränken]]<br />
###[[Debian auf der DiskStation]]<br />
###[[Thumbnailerzeugung beschleunigen ]]<br />
###[[Cacti Monitoring auf Diskstation installieren]]<br />
###[[SSMTP: Mit Bordmitteln eine E-Mail über die Konsole versenden.]]<br />
##Firmware-Upgrades<br />
###[[Upgrade von DS101g+ auf DS107]]<br />
##Backup Modifikationen<br />
###[[Alternierendes Backup]]<br />
###[[Backup der MySQL-Datenbank über einen cronjob]]<br />
###[[Backup über RSync auf einen angeschlossenen Datenträger]]<br />
###[[rsnapshot|Backups mit Rsnapshot erstellen]]<br />
###[[Offsite Backup von DS auf WebDAV-Speicher (z.B. von 1und1, GMX, Web.de, Strato, iDisk (MobileMe))]]<br />
### [[Generationsbackup_mit_rsync_und_rsnapshot_im_Netzwerk|Generationsbackup über Netzwerk]]<br />
### [[Verschlüsseltes Backup]]<br />
### [[duplicity|duplicity (SSH/SCP, RSync, FTP, WebDAV, IMAP, Amazon S3 + optionale Verschlüsselung)]]<br />
### [[WebDAV-Speicher mithilfe von davfs2 direkt in die DS einbinden]]<br />
### [[Zeitgesteuerte Sicherung mittels wget inkl. Protokoll]]<br />
###[[CrashPlan Headless Client]]<br />
##Download Modifikationen<br />
###[[pyLoad]]<br />
###[[appleJuice]]<br />
##Multimedia Modifikationen<br />
###[[TwonkyVision]]<br />
###[[Twonky auf der DS211j installieren]]<br />
###[[Swisscenter_auf_Diskstation_installieren|Swisscenter installieren]]<br />
###[[Fuppes]]<br />
###[[PS3 Mediaserver]]<br />
###[[iTunes Playlists Importieren]]<br />
###[[Einbinden einer DS über NFS bei älteren Samsung-TVs]]<br />
##Datenträger Mods<br />
###[[Upgrade eines None-RAID Volume zu RAID1 / RAID5]]<br />
###[[Hartnäckigen USB-Stick mit ext2/3 formatieren und einbinden]]<br />
###[[Verschlüsselte_Container|Verschlüsselte Container auf der DS]]<br />
## <span id="mailstation">Mailstation Mods</span><br />
### Dovecot Server (imap/pop3)<br />
#### [[Externe_Accounts_abrufen|Externe Accounts mit getmail abrufen]]<br />
#### [[Virtuelle_E-Mail_Nutzer_mit_dovecot|Virtuelle User]]<br />
#### [[E-mails_filtern_mit_dovecot-sieve|Dovecot-sieve zum Filtern von E-Mails]]<br />
#### [[Abwesenheitsmeldungen_mit_dovecot-sieve|AutoReply]]<br />
### Postfix Server (smtp)<br />
#### [[SMTP_Dialog_Restriktionen|Client Restriktionen]]<br />
#### [[Virtuelle_E-Mail_Nutzer_mit_postfix|Virtuelle User]]<br />
#### [[Zusaetzliche_Ports_fuer_Postfix|Zusätzliche Ports]]<br />
#### [[Mail-Relay_mit_Postfix|SMTP Relay einrichten]]<br />
#### [[Postgrey_greylisting_fuer_postfix|Greylisting mit postgrey]]<br />
#### [[Postfwd_firewall_fuer_postfix|Postfix Firewall postfwd]]<br />
#### [[Abwesenheitsmeldungen_mit_postfix|Autoreply]]<br />
### Spamassassin<br />
#### [[Externe_Accounts_abrufen#SpamAssassin_installieren_und_einrichten|Spamassassin installieren]]<br />
#### [[Regeln_von_Spamassassin|Die Regeln des Spamassassin]]<br />
#### [[Postfix_und_Spamassassin|Spamfilterung mit Postfix und Spamassassin]]<br />
### Various<br />
#### [[Fehlersuche in der Mailstation]]<br />
#### [[Nuetzliche_Kommandos_fuer_Mailstation|Nützliche Kommandos der Mailstation]]<br />
#### [[Mailinglisten_mit_mailman|Mailing-Listen mit mailman]]<br />
#### [[Getmail_script|getmail nutzen mit Hibernate der Festplatten]]<br />
#### [[Virtuelle_E-Mail_User_erstellen|Script zur Erstellung von virtuellen Nutzern (E-Mail)]]<br />
#### [[Roundcube als Webmail-Client für externen IMAP-Account verwenden]]<br />
## Sonstige Modifikationen<br />
### [[USV Shutdown an Mac über Netzerk weiterleiten mit Growl]]<br />
### [[Installation der Online Teamlösung eGroupWare Community Edition]]<br />
### [[Verteiltes Rechnen mit der DiskStation anhand von distributed.net]]<br />
### [[Hits der Photostation zuruecksetzen]]<br />
### [[Boost Joomla Performance]]<br />
### [[Druckerverwaltung und Netzwerkdrucker einbinden]]<br />
###[[Wake on LAN (WOL) nur mit PHP, auch über das Internet]]<br />
###[[DdnsAutoLogin|ddnsAutoLogin]]<br />
###[[PXE|PXE - Preboot eXecution Environment]]<br />
###[[OpenVPN zu einer Easybox 904 xDSL: Konfiganpassung via Konsole]]<br />
###[[Wörterbücher für Volltextsuche mit PostgreSQL erstellen]]<br />
###[[Guacamole mit Docker|Guacamole mit Docker]]<br />
###[[Synapse mit Docker|Synapse mit Docker]]<br />
###[[TvHeadend mit Docker und Sundtek SkyTV Ultimate|TvHeadend mit Docker und Sundtek SkyTV Ultimate]]<br />
<br />
#[[IPKG]]<br />
##[[Apache IPKG|Alternativer Apache-Server]]<br />
##[[OpenVPN_auf_der_Diskstation|OpenVPN auf einer DS betreiben]]<br />
##[[Streamripper]]<br />
##[[Samba_via_ipkg_installieren|Alternativer Samba-Server]]<br />
##[[Icecast_via_ipkg_installieren|Icecast Server]]<br />
##[[vsFTP installieren|Alternativer FTP Dienst]]<br />
##[[SFTP_SCP|SFTP und SCP]]<br />
##[[SVN-Server installieren|SVN-Server]]<br />
##[[Gitolite|Git + Gitolite installieren]]<br />
##[[TFTP-Daemon einrichten und verwenden]]<br />
##[[Java|Java installieren]]<br />
##[[Xinetd_via_ipkg_installieren|xinetd Daemon via ipkg installieren]]<br />
###[[Xinetd_Beispiel_Eigener_Dienst|Eigener Dienst per xinetd]]<br />
##[[Syslog-ng via ipkg installieren]]<br />
##[[YouGrabber]]<br />
##[[Geschwindigkeitsmessung mit iperf]]<br />
##[[Installation torrentflux-b4rt]]<br />
##[[Bind9 DNS-Server]]<br />
##[[Streaming server (ggrab) für DBox2-Aufnahmen einrichten]]<br />
##[[USB Schaltbare Steckdosenleiste]]<br />
##[[Tinyproxy]]<br />
##[[DHCP-Server]]<br />
##[[MoinMoin-Wiki]]<br />
##[[Inetutils|Inetutils, ftp, tftp, rcp, rsh, ping, ping6]]<br />
##[[Nail|Mit Nail ein E-Mail verschicken]]<br />
##[[Nmap|Portscanner Nmap]]<br />
##[[Mpd|Music Player Daemon mpd]]<br />
#[[:Category:3rd-Party-Apps|3rd-party Applikationen]]<br />
##[[Konfiguration von 3rd-party Applikationen]]<br />
###[[Aufbau eines Synology Packages (SPK)]]<br />
###[[Aufbau der Datei 'INFO']]<br />
###[[Aufbau der Datei 'application.cfg']]<br />
###[[Aufbau der Datei 'config']]<br />
###Integration einer Hilfe in DSM<br />
####[[Integration einer Hilfe in DSM 3.x|DSM 3.x]]<br />
####[[Integration einer Hilfe in DSM 4.0-5.0|DSM 4.0 - 5.0]]<br />
####[[Integration einer Hilfe in DSM 5.1-|DSM 5.1 - 6.1]]<br />
##[[Integration von 3rd-party Applikationen]]<br />
###[[phpMyAdmin als 3rd-Party Applikation|phpMyAdmin]]<br />
###[[phpPgAdmin als 3rd-Party Applikation|phpPgAdmin]]<br />
###[[phpSysInfo als 3rd-Party Applikation|phpSysInfo]]<br />
###[[aMule IP-Filter Download als 3rd-Party Applikation|aMule IP-Filter]]<br />
###[[eXtplorer als 3rd-party Applikation|eXtplorer (Alternative zur File Station)]]<br />
###[[3rd Party Application Manager]]<br />
###[[HttpWakeUp Wake-On-LAN Pakete per Webinterface verschicken]]<br />
###[[Rootkit Hunter als 3rd-Party Applikation|Rootkit Hunter]]<br />
###[[AdminTool]]<br />
###[[TeamSpeak 2 Server]]<br />
###[[TeamSpeak 3 Server]]<br />
###[[TeamSpeak 3 Server in Debian Chroot]]<br />
###[[FSyncMS|FSyncMS – ein Firefox Sync Server]]<br />
###[[Lesezeichen/Passwörter Synchronisation mit SyncPlaces für Firefox (über WebDAV auf der DS)]]<br />
###[[iStat Server]]<br />
### SqueezeCenter<br />
####[[SqueezeCenter-Existierende-MySQL-Instanz-verwenden|Bestehende Instanz verwenden]]<br />
###[[Minecraft-Server auf der Synology]]<br />
###[[SynoBox|SynoBox - ein Dropbox Client]]<br />
###[[AirSonos|AirSonos - per Airplay auf Sonos streamen]]<br />
###[[CoD2|Call of Duty 2 Server auf Synology]]<br />
#Kompilieren eigener Programme<br />
##[[Luadch]]<br />
##[[MediaInfo]]<br />
##[[bluetooth Treiber]]<br />
##[[sma-bluetooth]]<br />
#Hardware Modifikationen<br />
##[[DiskStation 209+ flüsterleise machen]]<br />
##[[DiskStation 106 automatisch einschalten]]<br />
##[[DiskStation 107 automatisch einschalten]]<br />
##[[DiskStation 211 automatisch einschalten]]<br />
##[[DiskStation 408 automatisch einschalten]]<br />
##[[DiskStation 106 WOL Wake-On-LAN Umbau]]<br />
|}</div>Itommeshttps://www.synology-wiki.de/index.php?title=Modifikationen&diff=7401Modifikationen2023-03-25T11:45:24Z<p>Itommes: Änderung 7381 von Itommes (Diskussion) rückgängig gemacht.</p>
<hr />
<div>[[Category:Portal]]<br />
{|width="100%" height="100%" border=0 cellpadding=5 cellspacing=7 style="border: 1px solid #c0c0c0;background-color:#e0e0e0"<br />
|style="background-color:#c0c0c0; border: 1px solid #a0a0a0; font-size:120%; font-weight: bold"|[[Modifikationen|Modding Themen]]<br />
|-<br />
|<br />
#[[Wichtige Informationen zum Modden der Synology Stations]]<br />
#[[Übersicht über verfügbare 3rd-Party-Apps aus unserer Community]]<br />
#Grundsätzliches zur Hard- und Software des Synology-Servers<br />
##[[Wie funktioniert ein Computer?]]<br />
##[[Platten, RAIDs und Dateisysteme]]<br />
##[[Überblick über Modifizierungen des Synology-Servers]]<br />
##[[Welchen Prozessortyp besitzt mein System?]]<br />
##[[Welche Performance besitzt mein System?]]<br />
##[[Arbeitsweise der Synology Stations]]<br />
##[[LEDs und Buttons]]<br />
##[[Viren auf dem Synology-Server?]]<br />
##[[Stromverbrauchswerte User]]<br />
#[[Die Kommandozeile]]<br />
##[[Grundlegende Befehle auf der Kommandozeile]]<br />
##[[Vergleich von Texteditoren]]<br />
###[[vi]]<br />
###[[vim]]<br />
###[[nano]]<br />
##[[less|Alternativer Pager less]]<br />
##[[Synology Toolset]]<br />
##[[Locale-UTF8|UTF-8–Kodierung einstellen]]<br />
##[[synogear: weitere Tools]]<br />
#[[Wo ist was im Linux-System]]<br />
##[[Dateien im /etc-Verzeichnis|/etc-Verzeichnis]]<br />
##[[Dateien im /dev-Verzeichnis|/dev-Verzeichnis]]<br />
##[[Dateien im /lib-Verzeichnis|/lib-Verzeichnis]]<br />
##[[Dateien im /tmp-Verzeichnis|/tmp-Verzeichnis]]<br />
##[[Dateien im /usr-Verzeichnis|/usr-Verzeichnis]]<br />
##[[Dateien im /var-Verzeichnis|/var-Verzeichnis]]<br />
##[[Dateien im /volume1-Verzeichnis|/volume1-Verzeichnis]]<br />
#[[Nicht unterstützte Konfigurationsänderungen]]<br />
##Systemmanagement<br />
###[[3rd_Party_Applications_absichern|3rd Party Applications vor unberechtigten Zugriffen schützen]]<br />
###[[Cron|Cron konfigurieren]]<br />
###[[Generierung eines eigenen SSL-Zertifikats]]<br />
###[[SSL-Zertifikat von ready2host einbinden]]<br />
###[[Downgrade der Synology-Firmware]]<br />
###[[Mount Bind]]<br />
###[[Gemeinsames Homeverzeichnis für mehrere User]]<br />
###[[User-Apache alle Zugriffe via Browser loggen lassen|Logdatei für den Apache-Server erstellen]]<br />
###[[Anzahl der möglichen Terminalfenster erhöhen]]<br />
###[[ssh_mit_Zertifikaten_absichern|Secure Shell (ssh) Zugriff nur mit Schlüssel]]<br />
###[[Ssh_clients_blocken|PHP Script zum Logfile Scan nach ssh Fehlern]]<br />
###[[Automatisches Herunterfahren wenn kein Ping möglich]]<br />
###[[Statusmail von der Diskstation]]<br />
###[[Aktuellen Status twittern (CPU, RAM, Speicher)]]<br />
###[[DSM Zugriff auf IP-Ebene beschränken]]<br />
###[[Debian auf der DiskStation]]<br />
###[[Thumbnailerzeugung beschleunigen ]]<br />
###[[Cacti Monitoring auf Diskstation installieren]]<br />
###[[SSMTP: Mit Bordmitteln eine E-Mail über die Konsole versenden.]]<br />
##Firmware-Upgrades<br />
###[[Upgrade von DS101g+ auf DS107]]<br />
##Backup Modifikationen<br />
###[[Alternierendes Backup]]<br />
###[[Backup der MySQL-Datenbank über einen cronjob]]<br />
###[[Backup über RSync auf einen angeschlossenen Datenträger]]<br />
###[[rsnapshot|Backups mit Rsnapshot erstellen]]<br />
###[[Offsite Backup von DS auf WebDAV-Speicher (z.B. von 1und1, GMX, Web.de, Strato, iDisk (MobileMe))]]<br />
### [[Generationsbackup_mit_rsync_und_rsnapshot_im_Netzwerk|Generationsbackup über Netzwerk]]<br />
### [[Verschlüsseltes Backup]]<br />
### [[duplicity|duplicity (SSH/SCP, RSync, FTP, WebDAV, IMAP, Amazon S3 + optionale Verschlüsselung)]]<br />
### [[WebDAV-Speicher mithilfe von davfs2 direkt in die DS einbinden]]<br />
### [[Zeitgesteuerte Sicherung mittels wget inkl. Protokoll]]<br />
###[[CrashPlan Headless Client]]<br />
##Download Modifikationen<br />
###[[pyLoad]]<br />
###[[appleJuice]]<br />
##Multimedia Modifikationen<br />
###[[TwonkyVision]]<br />
###[[Twonky auf der DS211j installieren]]<br />
###[[Swisscenter_auf_Diskstation_installieren|Swisscenter installieren]]<br />
###[[Fuppes]]<br />
###[[PS3 Mediaserver]]<br />
###[[iTunes Playlists Importieren]]<br />
###[[Einbinden einer DS über NFS bei älteren Samsung-TVs]]<br />
##Datenträger Mods<br />
###[[Upgrade eines None-RAID Volume zu RAID1 / RAID5]]<br />
###[[Hartnäckigen USB-Stick mit ext2/3 formatieren und einbinden]]<br />
###[[Verschlüsselte_Container|Verschlüsselte Container auf der DS]]<br />
## <span id="mailstation">Mailstation Mods</span><br />
### Dovecot Server (imap/pop3)<br />
#### [[Externe_Accounts_abrufen|Externe Accounts mit getmail abrufen]]<br />
#### [[Virtuelle_E-Mail_Nutzer_mit_dovecot|Virtuelle User]]<br />
#### [[E-mails_filtern_mit_dovecot-sieve|Dovecot-sieve zum Filtern von E-Mails]]<br />
#### [[Abwesenheitsmeldungen_mit_dovecot-sieve|AutoReply]]<br />
### Postfix Server (smtp)<br />
#### [[SMTP_Dialog_Restriktionen|Client Restriktionen]]<br />
#### [[Virtuelle_E-Mail_Nutzer_mit_postfix|Virtuelle User]]<br />
#### [[Zusaetzliche_Ports_fuer_Postfix|Zusätzliche Ports]]<br />
#### [[Mail-Relay_mit_Postfix|SMTP Relay einrichten]]<br />
#### [[Postgrey_greylisting_fuer_postfix|Greylisting mit postgrey]]<br />
#### [[Postfwd_firewall_fuer_postfix|Postfix Firewall postfwd]]<br />
#### [[Abwesenheitsmeldungen_mit_postfix|Autoreply]]<br />
### Spamassassin<br />
#### [[Externe_Accounts_abrufen#SpamAssassin_installieren_und_einrichten|Spamassassin installieren]]<br />
#### [[Regeln_von_Spamassassin|Die Regeln des Spamassassin]]<br />
#### [[Postfix_und_Spamassassin|Spamfilterung mit Postfix und Spamassassin]]<br />
### Various<br />
#### [[Fehlersuche in der Mailstation]]<br />
#### [[Nuetzliche_Kommandos_fuer_Mailstation|Nützliche Kommandos der Mailstation]]<br />
#### [[Mailinglisten_mit_mailman|Mailing-Listen mit mailman]]<br />
#### [[Getmail_script|getmail nutzen mit Hibernate der Festplatten]]<br />
#### [[Virtuelle_E-Mail_User_erstellen|Script zur Erstellung von virtuellen Nutzern (E-Mail)]]<br />
#### [[Roundcube als Webmail-Client für externen IMAP-Account verwenden]]<br />
## Sonstige Modifikationen<br />
### [[USV Shutdown an Mac über Netzerk weiterleiten mit Growl]]<br />
### [[Installation der Online Teamlösung eGroupWare Community Edition]]<br />
### [[Verteiltes Rechnen mit der DiskStation anhand von distributed.net]]<br />
### [[Hits der Photostation zuruecksetzen]]<br />
### [[Boost Joomla Performance]]<br />
### [[Druckerverwaltung und Netzwerkdrucker einbinden]]<br />
###[[Wake on LAN (WOL) nur mit PHP, auch über das Internet]]<br />
###[[DdnsAutoLogin|ddnsAutoLogin]]<br />
###[[PXE|PXE - Preboot eXecution Environment]]<br />
###[[OpenVPN zu einer Easybox 904 xDSL: Konfiganpassung via Konsole]]<br />
###[[Wörterbücher für Volltextsuche mit PostgreSQL erstellen]]<br />
###[[Guacamole mit Docker|Guacamole mit Docker]]<br />
###[[Synapse mit Docker|Synapse mit Docker]]<br />
###[[TvHeadend mit Docker und Sundtek SkyTV Ultimate|TvHeadend mit Docker und Sundtek SkyTV Ultimate]]<br />
<br />
#[[IPKG]]<br />
##[[Apache IPKG|Alternativer Apache-Server]]<br />
##[[OpenVPN_auf_der_Diskstation|OpenVPN auf einer DS betreiben]]<br />
##[[Streamripper]]<br />
##[[Samba_via_ipkg_installieren|Alternativer Samba-Server]]<br />
##[[Icecast_via_ipkg_installieren|Icecast Server]]<br />
##[[vsFTP installieren|Alternativer FTP Dienst]]<br />
##[[SFTP_SCP|SFTP und SCP]]<br />
##[[SVN-Server installieren|SVN-Server]]<br />
##[[Gitolite|Git + Gitolite installieren]]<br />
##[[TFTP-Daemon einrichten und verwenden]]<br />
##[[Java|Java installieren]]<br />
##[[Xinetd_via_ipkg_installieren|xinetd Daemon via ipkg installieren]]<br />
###[[Xinetd_Beispiel_Eigener_Dienst|Eigener Dienst per xinetd]]<br />
##[[Syslog-ng via ipkg installieren]]<br />
##[[YouGrabber]]<br />
##[[Geschwindigkeitsmessung mit iperf]]<br />
##[[Installation torrentflux-b4rt]]<br />
##[[Bind9 DNS-Server]]<br />
##[[Streaming server (ggrab) für DBox2-Aufnahmen einrichten]]<br />
##[[USB Schaltbare Steckdosenleiste]]<br />
##[[Tinyproxy]]<br />
##[[DHCP-Server]]<br />
##[[MoinMoin-Wiki]]<br />
##[[Inetutils|Inetutils, ftp, tftp, rcp, rsh, ping, ping6]]<br />
##[[Nail|Mit Nail ein E-Mail verschicken]]<br />
##[[Nmap|Portscanner Nmap]]<br />
##[[Mpd|Music Player Daemon mpd]]<br />
#[[:Category:3rd-Party-Apps|3rd-party Applikationen]]<br />
##[[Konfiguration von 3rd-party Applikationen]]<br />
###[[Aufbau eines Synology Packages (SPK)]]<br />
###[[Aufbau der Datei 'INFO']]<br />
###[[Aufbau der Datei 'application.cfg']]<br />
###[[Aufbau der Datei 'config']]<br />
###Integration einer Hilfe in DSM<br />
####[[Integration einer Hilfe in DSM 3.x|DSM 3.x]]<br />
####[[Integration einer Hilfe in DSM 4.0-5.0|DSM 4.0 - 5.0]]<br />
####[[Integration einer Hilfe in DSM 5.1-|DSM 5.1 - 6.1]]<br />
##[[Integration von 3rd-party Applikationen]]<br />
###[[phpMyAdmin als 3rd-Party Applikation|phpMyAdmin]]<br />
###[[phpPgAdmin als 3rd-Party Applikation|phpPgAdmin]]<br />
###[[phpSysInfo als 3rd-Party Applikation|phpSysInfo]]<br />
###[[aMule IP-Filter Download als 3rd-Party Applikation|aMule IP-Filter]]<br />
###[[eXtplorer als 3rd-party Applikation|eXtplorer (Alternative zur File Station)]]<br />
###[[3rd Party Application Manager]]<br />
###[[HttpWakeUp Wake-On-LAN Pakete per Webinterface verschicken]]<br />
###[[Rootkit Hunter als 3rd-Party Applikation|Rootkit Hunter]]<br />
###[[AdminTool]]<br />
###[[TeamSpeak 2 Server]]<br />
###[[TeamSpeak 3 Server]]<br />
###[[TeamSpeak 3 Server in Debian Chroot]]<br />
###[[FSyncMS|FSyncMS – ein Firefox Sync Server]]<br />
###[[Lesezeichen/Passwörter Synchronisation mit SyncPlaces für Firefox (über WebDAV auf der DS)]]<br />
###[[iStat Server]]<br />
### SqueezeCenter<br />
####[[SqueezeCenter-Existierende-MySQL-Instanz-verwenden|Bestehende Instanz verwenden]]<br />
###[[Minecraft-Server auf der Synology]]<br />
###[[SynoBox|SynoBox - ein Dropbox Client]]<br />
###[[AirSonos|AirSonos - per Airplay auf Sonos streamen]]<br />
###[[CoD2|Call of Duty 2 Server auf Synology]]<br />
#Kompilieren eigener Programme<br />
##[[Luadch]]<br />
##[[MediaInfo]]<br />
##[[bluetooth Treiber]]<br />
##[[sma-bluetooth]]<br />
#Hardware Modifikationen<br />
##[[DiskStation 209+ flüsterleise machen]]<br />
##[[DiskStation 106 automatisch einschalten]]<br />
##[[DiskStation 107 automatisch einschalten]]<br />
##[[DiskStation 211 automatisch einschalten]]<br />
##[[DiskStation 408 automatisch einschalten]]<br />
##[[DiskStation 106 WOL Wake-On-LAN Umbau]]<br />
#[[Veraltete Artikel der Kategorie „Modding Themen“]]<br />
|}</div>Itommeshttps://www.synology-wiki.de/index.php?title=Modifikationen&diff=7400Modifikationen2023-03-25T11:45:11Z<p>Itommes: Änderung 7382 von Itommes (Diskussion) rückgängig gemacht.</p>
<hr />
<div>[[Category:Portal]]<br />
{|width="100%" height="100%" border=0 cellpadding=5 cellspacing=7 style="border: 1px solid #c0c0c0;background-color:#e0e0e0"<br />
|style="background-color:#c0c0c0; border: 1px solid #a0a0a0; font-size:120%; font-weight: bold"|[[Modifikationen|Modding Themen]]<br />
|-<br />
|<br />
#[[Wichtige Informationen zum Modden der Synology Stations]]<br />
#[[Übersicht über verfügbare 3rd-Party-Apps aus unserer Community]]<br />
#Grundsätzliches zur Hard- und Software des Synology-Servers<br />
##[[Wie funktioniert ein Computer?]]<br />
##[[Platten, RAIDs und Dateisysteme]]<br />
##[[Überblick über Modifizierungen des Synology-Servers]]<br />
##[[Welchen Prozessortyp besitzt mein System?]]<br />
##[[Welche Performance besitzt mein System?]]<br />
##[[Arbeitsweise der Synology Stations]]<br />
##[[LEDs und Buttons]]<br />
##[[Viren auf dem Synology-Server?]]<br />
##[[Stromverbrauchswerte User]]<br />
#[[Die Kommandozeile]]<br />
##[[Grundlegende Befehle auf der Kommandozeile]]<br />
##[[Vergleich von Texteditoren]]<br />
###[[vi]]<br />
###[[vim]]<br />
###[[nano]]<br />
##[[less|Alternativer Pager less]]<br />
##[[Synology Toolset]]<br />
##[[Locale-UTF8|UTF-8–Kodierung einstellen]]<br />
##[[synogear: weitere Tools]]<br />
#[[Wo ist was im Linux-System]]<br />
##[[Dateien im /etc-Verzeichnis|/etc-Verzeichnis]]<br />
##[[Dateien im /dev-Verzeichnis|/dev-Verzeichnis]]<br />
##[[Dateien im /lib-Verzeichnis|/lib-Verzeichnis]]<br />
##[[Dateien im /tmp-Verzeichnis|/tmp-Verzeichnis]]<br />
##[[Dateien im /usr-Verzeichnis|/usr-Verzeichnis]]<br />
##[[Dateien im /var-Verzeichnis|/var-Verzeichnis]]<br />
##[[Dateien im /volume1-Verzeichnis|/volume1-Verzeichnis]]<br />
#[[Nicht unterstützte Konfigurationsänderungen]]<br />
##Systemmanagement<br />
###[[3rd_Party_Applications_absichern|3rd Party Applications vor unberechtigten Zugriffen schützen]]<br />
###[[Cron|Cron konfigurieren]]<br />
###[[Generierung eines eigenen SSL-Zertifikats]]<br />
###[[SSL-Zertifikat von ready2host einbinden]]<br />
###[[Downgrade der Synology-Firmware]]<br />
###[[Mount Bind]]<br />
###[[Gemeinsames Homeverzeichnis für mehrere User]]<br />
###[[User-Apache alle Zugriffe via Browser loggen lassen|Logdatei für den Apache-Server erstellen]]<br />
###[[Anzahl der möglichen Terminalfenster erhöhen]]<br />
###[[ssh_mit_Zertifikaten_absichern|Secure Shell (ssh) Zugriff nur mit Schlüssel]]<br />
###[[Ssh_clients_blocken|PHP Script zum Logfile Scan nach ssh Fehlern]]<br />
###[[Automatisches Herunterfahren wenn kein Ping möglich]]<br />
###[[Statusmail von der Diskstation]]<br />
###[[Aktuellen Status twittern (CPU, RAM, Speicher)]]<br />
###[[DSM Zugriff auf IP-Ebene beschränken]]<br />
###[[Debian auf der DiskStation]]<br />
###[[Thumbnailerzeugung beschleunigen ]]<br />
###[[Cacti Monitoring auf Diskstation installieren]]<br />
###[[SSMTP: Mit Bordmitteln eine E-Mail über die Konsole versenden.]]<br />
##Firmware-Upgrades<br />
###[[Upgrade von DS101g+ auf DS107]]<br />
##Backup Modifikationen<br />
###[[Alternierendes Backup]]<br />
###[[Backup der MySQL-Datenbank über einen cronjob]]<br />
###[[Backup über RSync auf einen angeschlossenen Datenträger]]<br />
###[[rsnapshot|Backups mit Rsnapshot erstellen]]<br />
###[[Offsite Backup von DS auf WebDAV-Speicher (z.B. von 1und1, GMX, Web.de, Strato, iDisk (MobileMe))]]<br />
### [[Generationsbackup_mit_rsync_und_rsnapshot_im_Netzwerk|Generationsbackup über Netzwerk]]<br />
### [[Verschlüsseltes Backup]]<br />
### [[duplicity|duplicity (SSH/SCP, RSync, FTP, WebDAV, IMAP, Amazon S3 + optionale Verschlüsselung)]]<br />
### [[WebDAV-Speicher mithilfe von davfs2 direkt in die DS einbinden]]<br />
### [[Zeitgesteuerte Sicherung mittels wget inkl. Protokoll]]<br />
###[[CrashPlan Headless Client]]<br />
##Download Modifikationen<br />
###[[pyLoad]]<br />
###[[appleJuice]]<br />
##Multimedia Modifikationen<br />
###[[TwonkyVision]]<br />
###[[Twonky auf der DS211j installieren]]<br />
###[[Swisscenter_auf_Diskstation_installieren|Swisscenter installieren]]<br />
###[[Fuppes]]<br />
###[[PS3 Mediaserver]]<br />
###[[iTunes Playlists Importieren]]<br />
###[[Einbinden einer DS über NFS bei älteren Samsung-TVs]]<br />
##Datenträger Mods<br />
###[[Upgrade eines None-RAID Volume zu RAID1 / RAID5]]<br />
###[[Hartnäckigen USB-Stick mit ext2/3 formatieren und einbinden]]<br />
###[[Verschlüsselte_Container|Verschlüsselte Container auf der DS]]<br />
## <span id="mailstation">Mailstation Mods</span><br />
### Dovecot Server (imap/pop3)<br />
#### [[Externe_Accounts_abrufen|Externe Accounts mit getmail abrufen]]<br />
#### [[Virtuelle_E-Mail_Nutzer_mit_dovecot|Virtuelle User]]<br />
#### [[E-mails_filtern_mit_dovecot-sieve|Dovecot-sieve zum Filtern von E-Mails]]<br />
#### [[Abwesenheitsmeldungen_mit_dovecot-sieve|AutoReply]]<br />
### Postfix Server (smtp)<br />
#### [[SMTP_Dialog_Restriktionen|Client Restriktionen]]<br />
#### [[Virtuelle_E-Mail_Nutzer_mit_postfix|Virtuelle User]]<br />
#### [[Zusaetzliche_Ports_fuer_Postfix|Zusätzliche Ports]]<br />
#### [[Mail-Relay_mit_Postfix|SMTP Relay einrichten]]<br />
#### [[Postgrey_greylisting_fuer_postfix|Greylisting mit postgrey]]<br />
#### [[Postfwd_firewall_fuer_postfix|Postfix Firewall postfwd]]<br />
#### [[Abwesenheitsmeldungen_mit_postfix|Autoreply]]<br />
### Spamassassin<br />
#### [[Externe_Accounts_abrufen#SpamAssassin_installieren_und_einrichten|Spamassassin installieren]]<br />
#### [[Regeln_von_Spamassassin|Die Regeln des Spamassassin]]<br />
#### [[Postfix_und_Spamassassin|Spamfilterung mit Postfix und Spamassassin]]<br />
### Various<br />
#### [[Fehlersuche in der Mailstation]]<br />
#### [[Nuetzliche_Kommandos_fuer_Mailstation|Nützliche Kommandos der Mailstation]]<br />
#### [[Mailinglisten_mit_mailman|Mailing-Listen mit mailman]]<br />
#### [[Getmail_script|getmail nutzen mit Hibernate der Festplatten]]<br />
#### [[Virtuelle_E-Mail_User_erstellen|Script zur Erstellung von virtuellen Nutzern (E-Mail)]]<br />
#### [[Roundcube als Webmail-Client für externen IMAP-Account verwenden]]<br />
## Sonstige Modifikationen<br />
### [[USV Shutdown an Mac über Netzerk weiterleiten mit Growl]]<br />
### [[Installation der Online Teamlösung eGroupWare Community Edition]]<br />
### [[Verteiltes Rechnen mit der DiskStation anhand von distributed.net]]<br />
### [[Hits der Photostation zuruecksetzen]]<br />
### [[Boost Joomla Performance]]<br />
### [[Druckerverwaltung und Netzwerkdrucker einbinden]]<br />
###[[Wake on LAN (WOL) nur mit PHP, auch über das Internet]]<br />
###[[DdnsAutoLogin|ddnsAutoLogin]]<br />
###[[PXE|PXE - Preboot eXecution Environment]]<br />
###[[OpenVPN zu einer Easybox 904 xDSL: Konfiganpassung via Konsole]]<br />
###[[Wörterbücher für Volltextsuche mit PostgreSQL erstellen]]<br />
###[[Guacamole mit Docker|Guacamole mit Docker]]<br />
###[[Synapse mit Docker|Synapse mit Docker]]<br />
###[[TvHeadend mit Docker und Sundtek SkyTV Ultimate|TvHeadend mit Docker und Sundtek SkyTV Ultimate]]<br />
<br />
#[[IPKG]]<br />
##[[Apache IPKG|Alternativer Apache-Server]]<br />
##[[OpenVPN_auf_der_Diskstation|OpenVPN auf einer DS betreiben]]<br />
##[[Streamripper]]<br />
##[[Samba_via_ipkg_installieren|Alternativer Samba-Server]]<br />
##[[Icecast_via_ipkg_installieren|Icecast Server]]<br />
##[[vsFTP installieren|Alternativer FTP Dienst]]<br />
##[[SFTP_SCP|SFTP und SCP]]<br />
##[[SVN-Server installieren|SVN-Server]]<br />
##[[Gitolite|Git + Gitolite installieren]]<br />
##[[TFTP-Daemon einrichten und verwenden]]<br />
##[[Java|Java installieren]]<br />
##[[Xinetd_via_ipkg_installieren|xinetd Daemon via ipkg installieren]]<br />
###[[Xinetd_Beispiel_Eigener_Dienst|Eigener Dienst per xinetd]]<br />
##[[Syslog-ng via ipkg installieren]]<br />
##[[YouGrabber]]<br />
##[[Geschwindigkeitsmessung mit iperf]]<br />
##[[Installation torrentflux-b4rt]]<br />
##[[Bind9 DNS-Server]]<br />
##[[Streaming server (ggrab) für DBox2-Aufnahmen einrichten]]<br />
##[[USB Schaltbare Steckdosenleiste]]<br />
##[[Tinyproxy]]<br />
##[[DHCP-Server]]<br />
##[[MoinMoin-Wiki]]<br />
##[[Inetutils|Inetutils, ftp, tftp, rcp, rsh, ping, ping6]]<br />
##[[Nail|Mit Nail ein E-Mail verschicken]]<br />
##[[Nmap|Portscanner Nmap]]<br />
##[[Mpd|Music Player Daemon mpd]]<br />
#[[:Category:3rd-Party-Apps|3rd-party Applikationen]]<br />
##[[Konfiguration von 3rd-party Applikationen]]<br />
###[[Aufbau eines Synology Packages (SPK)]]<br />
###[[Aufbau der Datei 'INFO']]<br />
###[[Aufbau der Datei 'application.cfg']]<br />
###[[Aufbau der Datei 'config']]<br />
###Integration einer Hilfe in DSM<br />
####[[Integration einer Hilfe in DSM 3.x|DSM 3.x]]<br />
####[[Integration einer Hilfe in DSM 4.0-5.0|DSM 4.0 - 5.0]]<br />
####[[Integration einer Hilfe in DSM 5.1-|DSM 5.1 - 6.1]]<br />
##[[Integration von 3rd-party Applikationen]]<br />
###[[phpMyAdmin als 3rd-Party Applikation|phpMyAdmin]]<br />
###[[phpPgAdmin als 3rd-Party Applikation|phpPgAdmin]]<br />
###[[phpSysInfo als 3rd-Party Applikation|phpSysInfo]]<br />
###[[aMule IP-Filter Download als 3rd-Party Applikation|aMule IP-Filter]]<br />
###[[eXtplorer als 3rd-party Applikation|eXtplorer (Alternative zur File Station)]]<br />
###[[3rd Party Application Manager]]<br />
###[[HttpWakeUp Wake-On-LAN Pakete per Webinterface verschicken]]<br />
###[[Rootkit Hunter als 3rd-Party Applikation|Rootkit Hunter]]<br />
###[[AdminTool]]<br />
###[[TeamSpeak 2 Server]]<br />
###[[TeamSpeak 3 Server]]<br />
###[[TeamSpeak 3 Server in Debian Chroot]]<br />
###[[FSyncMS|FSyncMS – ein Firefox Sync Server]]<br />
###[[Lesezeichen/Passwörter Synchronisation mit SyncPlaces für Firefox (über WebDAV auf der DS)]]<br />
###[[iStat Server]]<br />
### SqueezeCenter<br />
####[[SqueezeCenter-Existierende-MySQL-Instanz-verwenden|Bestehende Instanz verwenden]]<br />
###[[Minecraft-Server auf der Synology]]<br />
###[[SynoBox|SynoBox - ein Dropbox Client]]<br />
###[[AirSonos|AirSonos - per Airplay auf Sonos streamen]]<br />
###[[CoD2|Call of Duty 2 Server auf Synology]]<br />
#Kompilieren eigener Programme<br />
##[[Luadch]]<br />
##[[MediaInfo]]<br />
##[[bluetooth Treiber]]<br />
##[[sma-bluetooth]]<br />
#[[Veraltete Artikel der Kategorie „Modding Themen“]]<br />
#Hardware Modifikationen<br />
##[[DiskStation 209+ flüsterleise machen]]<br />
##[[DiskStation 106 automatisch einschalten]]<br />
##[[DiskStation 107 automatisch einschalten]]<br />
##[[DiskStation 211 automatisch einschalten]]<br />
##[[DiskStation 408 automatisch einschalten]]<br />
##[[DiskStation 106 WOL Wake-On-LAN Umbau]]<br />
|}</div>Itommeshttps://www.synology-wiki.de/index.php?title=Modifikationen&diff=7399Modifikationen2023-03-25T11:45:01Z<p>Itommes: Änderung 7383 von Itommes (Diskussion) rückgängig gemacht.</p>
<hr />
<div>[[Category:Portal]]<br />
{|width="100%" height="100%" border=0 cellpadding=5 cellspacing=7 style="border: 1px solid #c0c0c0;background-color:#e0e0e0"<br />
|style="background-color:#c0c0c0; border: 1px solid #a0a0a0; font-size:120%; font-weight: bold"|[[Modifikationen|Modding Themen]]<br />
|-<br />
|<br />
#[[Wichtige Informationen zum Modden der Synology Stations]]<br />
#[[Übersicht über verfügbare 3rd-Party-Apps aus unserer Community]]<br />
#Grundsätzliches zur Hard- und Software des Synology-Servers<br />
##[[Wie funktioniert ein Computer?]]<br />
##[[Platten, RAIDs und Dateisysteme]]<br />
##[[Überblick über Modifizierungen des Synology-Servers]]<br />
##[[Welchen Prozessortyp besitzt mein System?]]<br />
##[[Welche Performance besitzt mein System?]]<br />
##[[Arbeitsweise der Synology Stations]]<br />
##[[LEDs und Buttons]]<br />
##[[Viren auf dem Synology-Server?]]<br />
##[[Stromverbrauchswerte User]]<br />
#[[Die Kommandozeile]]<br />
##[[Grundlegende Befehle auf der Kommandozeile]]<br />
##[[Vergleich von Texteditoren]]<br />
###[[vi]]<br />
###[[vim]]<br />
###[[nano]]<br />
##[[less|Alternativer Pager less]]<br />
##[[Synology Toolset]]<br />
##[[Locale-UTF8|UTF-8–Kodierung einstellen]]<br />
##[[synogear: weitere Tools]]<br />
#[[Wo ist was im Linux-System]]<br />
##[[Dateien im /etc-Verzeichnis|/etc-Verzeichnis]]<br />
##[[Dateien im /dev-Verzeichnis|/dev-Verzeichnis]]<br />
##[[Dateien im /lib-Verzeichnis|/lib-Verzeichnis]]<br />
##[[Dateien im /tmp-Verzeichnis|/tmp-Verzeichnis]]<br />
##[[Dateien im /usr-Verzeichnis|/usr-Verzeichnis]]<br />
##[[Dateien im /var-Verzeichnis|/var-Verzeichnis]]<br />
##[[Dateien im /volume1-Verzeichnis|/volume1-Verzeichnis]]<br />
#[[Nicht unterstützte Konfigurationsänderungen]]<br />
##Systemmanagement<br />
###[[3rd_Party_Applications_absichern|3rd Party Applications vor unberechtigten Zugriffen schützen]]<br />
###[[Cron|Cron konfigurieren]]<br />
###[[Generierung eines eigenen SSL-Zertifikats]]<br />
###[[SSL-Zertifikat von ready2host einbinden]]<br />
###[[Downgrade der Synology-Firmware]]<br />
###[[Mount Bind]]<br />
###[[Gemeinsames Homeverzeichnis für mehrere User]]<br />
###[[User-Apache alle Zugriffe via Browser loggen lassen|Logdatei für den Apache-Server erstellen]]<br />
###[[Anzahl der möglichen Terminalfenster erhöhen]]<br />
###[[ssh_mit_Zertifikaten_absichern|Secure Shell (ssh) Zugriff nur mit Schlüssel]]<br />
###[[Ssh_clients_blocken|PHP Script zum Logfile Scan nach ssh Fehlern]]<br />
###[[Automatisches Herunterfahren wenn kein Ping möglich]]<br />
###[[Statusmail von der Diskstation]]<br />
###[[Aktuellen Status twittern (CPU, RAM, Speicher)]]<br />
###[[DSM Zugriff auf IP-Ebene beschränken]]<br />
###[[Debian auf der DiskStation]]<br />
###[[Thumbnailerzeugung beschleunigen ]]<br />
###[[Cacti Monitoring auf Diskstation installieren]]<br />
###[[SSMTP: Mit Bordmitteln eine E-Mail über die Konsole versenden.]]<br />
##Firmware-Upgrades<br />
###[[Upgrade von DS101g+ auf DS107]]<br />
##Backup Modifikationen<br />
###[[Alternierendes Backup]]<br />
###[[Backup der MySQL-Datenbank über einen cronjob]]<br />
###[[Backup über RSync auf einen angeschlossenen Datenträger]]<br />
###[[rsnapshot|Backups mit Rsnapshot erstellen]]<br />
###[[Offsite Backup von DS auf WebDAV-Speicher (z.B. von 1und1, GMX, Web.de, Strato, iDisk (MobileMe))]]<br />
### [[Generationsbackup_mit_rsync_und_rsnapshot_im_Netzwerk|Generationsbackup über Netzwerk]]<br />
### [[Verschlüsseltes Backup]]<br />
### [[duplicity|duplicity (SSH/SCP, RSync, FTP, WebDAV, IMAP, Amazon S3 + optionale Verschlüsselung)]]<br />
### [[WebDAV-Speicher mithilfe von davfs2 direkt in die DS einbinden]]<br />
### [[Zeitgesteuerte Sicherung mittels wget inkl. Protokoll]]<br />
###[[CrashPlan Headless Client]]<br />
##Download Modifikationen<br />
###[[pyLoad]]<br />
###[[appleJuice]]<br />
##Multimedia Modifikationen<br />
###[[TwonkyVision]]<br />
###[[Twonky auf der DS211j installieren]]<br />
###[[Swisscenter_auf_Diskstation_installieren|Swisscenter installieren]]<br />
###[[Fuppes]]<br />
###[[PS3 Mediaserver]]<br />
###[[iTunes Playlists Importieren]]<br />
###[[Einbinden einer DS über NFS bei älteren Samsung-TVs]]<br />
##Datenträger Mods<br />
###[[Upgrade eines None-RAID Volume zu RAID1 / RAID5]]<br />
###[[Hartnäckigen USB-Stick mit ext2/3 formatieren und einbinden]]<br />
###[[Verschlüsselte_Container|Verschlüsselte Container auf der DS]]<br />
## <span id="mailstation">Mailstation Mods</span><br />
### Dovecot Server (imap/pop3)<br />
#### [[Externe_Accounts_abrufen|Externe Accounts mit getmail abrufen]]<br />
#### [[Virtuelle_E-Mail_Nutzer_mit_dovecot|Virtuelle User]]<br />
#### [[E-mails_filtern_mit_dovecot-sieve|Dovecot-sieve zum Filtern von E-Mails]]<br />
#### [[Abwesenheitsmeldungen_mit_dovecot-sieve|AutoReply]]<br />
### Postfix Server (smtp)<br />
#### [[SMTP_Dialog_Restriktionen|Client Restriktionen]]<br />
#### [[Virtuelle_E-Mail_Nutzer_mit_postfix|Virtuelle User]]<br />
#### [[Zusaetzliche_Ports_fuer_Postfix|Zusätzliche Ports]]<br />
#### [[Mail-Relay_mit_Postfix|SMTP Relay einrichten]]<br />
#### [[Postgrey_greylisting_fuer_postfix|Greylisting mit postgrey]]<br />
#### [[Postfwd_firewall_fuer_postfix|Postfix Firewall postfwd]]<br />
#### [[Abwesenheitsmeldungen_mit_postfix|Autoreply]]<br />
### Spamassassin<br />
#### [[Externe_Accounts_abrufen#SpamAssassin_installieren_und_einrichten|Spamassassin installieren]]<br />
#### [[Regeln_von_Spamassassin|Die Regeln des Spamassassin]]<br />
#### [[Postfix_und_Spamassassin|Spamfilterung mit Postfix und Spamassassin]]<br />
### Various<br />
#### [[Fehlersuche in der Mailstation]]<br />
#### [[Nuetzliche_Kommandos_fuer_Mailstation|Nützliche Kommandos der Mailstation]]<br />
#### [[Mailinglisten_mit_mailman|Mailing-Listen mit mailman]]<br />
#### [[Getmail_script|getmail nutzen mit Hibernate der Festplatten]]<br />
#### [[Virtuelle_E-Mail_User_erstellen|Script zur Erstellung von virtuellen Nutzern (E-Mail)]]<br />
#### [[Roundcube als Webmail-Client für externen IMAP-Account verwenden]]<br />
## Sonstige Modifikationen<br />
### [[USV Shutdown an Mac über Netzerk weiterleiten mit Growl]]<br />
### [[Installation der Online Teamlösung eGroupWare Community Edition]]<br />
### [[Verteiltes Rechnen mit der DiskStation anhand von distributed.net]]<br />
### [[Hits der Photostation zuruecksetzen]]<br />
### [[Boost Joomla Performance]]<br />
### [[Druckerverwaltung und Netzwerkdrucker einbinden]]<br />
###[[Wake on LAN (WOL) nur mit PHP, auch über das Internet]]<br />
###[[DdnsAutoLogin|ddnsAutoLogin]]<br />
###[[PXE|PXE - Preboot eXecution Environment]]<br />
###[[OpenVPN zu einer Easybox 904 xDSL: Konfiganpassung via Konsole]]<br />
###[[Wörterbücher für Volltextsuche mit PostgreSQL erstellen]]<br />
###[[Guacamole mit Docker|Guacamole mit Docker]]<br />
###[[Synapse mit Docker|Synapse mit Docker]]<br />
###[[TvHeadend mit Docker und Sundtek SkyTV Ultimate|TvHeadend mit Docker und Sundtek SkyTV Ultimate]]<br />
<br />
#[[IPKG]]<br />
##[[Apache IPKG|Alternativer Apache-Server]]<br />
##[[OpenVPN_auf_der_Diskstation|OpenVPN auf einer DS betreiben]]<br />
##[[Streamripper]]<br />
##[[Samba_via_ipkg_installieren|Alternativer Samba-Server]]<br />
##[[Icecast_via_ipkg_installieren|Icecast Server]]<br />
##[[vsFTP installieren|Alternativer FTP Dienst]]<br />
##[[SFTP_SCP|SFTP und SCP]]<br />
##[[SVN-Server installieren|SVN-Server]]<br />
##[[Gitolite|Git + Gitolite installieren]]<br />
##[[TFTP-Daemon einrichten und verwenden]]<br />
##[[Java|Java installieren]]<br />
##[[Xinetd_via_ipkg_installieren|xinetd Daemon via ipkg installieren]]<br />
###[[Xinetd_Beispiel_Eigener_Dienst|Eigener Dienst per xinetd]]<br />
##[[Syslog-ng via ipkg installieren]]<br />
##[[YouGrabber]]<br />
##[[Geschwindigkeitsmessung mit iperf]]<br />
##[[Installation torrentflux-b4rt]]<br />
##[[Bind9 DNS-Server]]<br />
##[[Streaming server (ggrab) für DBox2-Aufnahmen einrichten]]<br />
##[[USB Schaltbare Steckdosenleiste]]<br />
##[[Tinyproxy]]<br />
##[[DHCP-Server]]<br />
##[[MoinMoin-Wiki]]<br />
##[[Inetutils|Inetutils, ftp, tftp, rcp, rsh, ping, ping6]]<br />
##[[Nail|Mit Nail ein E-Mail verschicken]]<br />
##[[Nmap|Portscanner Nmap]]<br />
##[[Mpd|Music Player Daemon mpd]]<br />
#[[:Category:3rd-Party-Apps|3rd-party Applikationen]]<br />
##[[Konfiguration von 3rd-party Applikationen]]<br />
###[[Aufbau eines Synology Packages (SPK)]]<br />
###[[Aufbau der Datei 'INFO']]<br />
###[[Aufbau der Datei 'application.cfg']]<br />
###[[Aufbau der Datei 'config']]<br />
###Integration einer Hilfe in DSM<br />
####[[Integration einer Hilfe in DSM 3.x|DSM 3.x]]<br />
####[[Integration einer Hilfe in DSM 4.0-5.0|DSM 4.0 - 5.0]]<br />
####[[Integration einer Hilfe in DSM 5.1-|DSM 5.1 - 6.1]]<br />
##[[Integration von 3rd-party Applikationen]]<br />
###[[phpMyAdmin als 3rd-Party Applikation|phpMyAdmin]]<br />
###[[phpPgAdmin als 3rd-Party Applikation|phpPgAdmin]]<br />
###[[phpSysInfo als 3rd-Party Applikation|phpSysInfo]]<br />
###[[aMule IP-Filter Download als 3rd-Party Applikation|aMule IP-Filter]]<br />
###[[eXtplorer als 3rd-party Applikation|eXtplorer (Alternative zur File Station)]]<br />
###[[3rd Party Application Manager]]<br />
###[[HttpWakeUp Wake-On-LAN Pakete per Webinterface verschicken]]<br />
###[[Rootkit Hunter als 3rd-Party Applikation|Rootkit Hunter]]<br />
###[[AdminTool]]<br />
###[[TeamSpeak 2 Server]]<br />
###[[TeamSpeak 3 Server]]<br />
###[[TeamSpeak 3 Server in Debian Chroot]]<br />
###[[FSyncMS|FSyncMS – ein Firefox Sync Server]]<br />
###[[Lesezeichen/Passwörter Synchronisation mit SyncPlaces für Firefox (über WebDAV auf der DS)]]<br />
###[[iStat Server]]<br />
### SqueezeCenter<br />
####[[SqueezeCenter-Existierende-MySQL-Instanz-verwenden|Bestehende Instanz verwenden]]<br />
###[[Minecraft-Server auf der Synology]]<br />
###[[SynoBox|SynoBox - ein Dropbox Client]]<br />
###[[AirSonos|AirSonos - per Airplay auf Sonos streamen]]<br />
###[[CoD2|Call of Duty 2 Server auf Synology]]<br />
#Kompilieren eigener Programme<br />
##[[Luadch]]<br />
##[[MediaInfo]]<br />
##[[bluetooth Treiber]]<br />
##[[sma-bluetooth]]<br />
#[[Veraltete Artikel der Kategorie „Modding Themen“]]<br />
##Hardware Modifikationen<br />
###[[DiskStation 209+ flüsterleise machen]]<br />
###[[DiskStation 106 automatisch einschalten]]<br />
###[[DiskStation 107 automatisch einschalten]]<br />
###[[DiskStation 211 automatisch einschalten]]<br />
###[[DiskStation 408 automatisch einschalten]]<br />
###[[DiskStation 106 WOL Wake-On-LAN Umbau]]<br />
|}</div>Itommeshttps://www.synology-wiki.de/index.php?title=Modifikationen&diff=7398Modifikationen2023-03-25T11:44:48Z<p>Itommes: Änderung 7384 von Itommes (Diskussion) rückgängig gemacht.</p>
<hr />
<div>[[Category:Portal]]<br />
{|width="100%" height="100%" border=0 cellpadding=5 cellspacing=7 style="border: 1px solid #c0c0c0;background-color:#e0e0e0"<br />
|style="background-color:#c0c0c0; border: 1px solid #a0a0a0; font-size:120%; font-weight: bold"|[[Modifikationen|Modding Themen]]<br />
|-<br />
|<br />
#[[Wichtige Informationen zum Modden der Synology Stations]]<br />
#[[Übersicht über verfügbare 3rd-Party-Apps aus unserer Community]]<br />
#Grundsätzliches zur Hard- und Software des Synology-Servers<br />
##[[Wie funktioniert ein Computer?]]<br />
##[[Platten, RAIDs und Dateisysteme]]<br />
##[[Überblick über Modifizierungen des Synology-Servers]]<br />
##[[Welchen Prozessortyp besitzt mein System?]]<br />
##[[Welche Performance besitzt mein System?]]<br />
##[[Arbeitsweise der Synology Stations]]<br />
##[[LEDs und Buttons]]<br />
##[[Viren auf dem Synology-Server?]]<br />
##[[Stromverbrauchswerte User]]<br />
#[[Die Kommandozeile]]<br />
##[[Grundlegende Befehle auf der Kommandozeile]]<br />
##[[Vergleich von Texteditoren]]<br />
###[[vi]]<br />
###[[vim]]<br />
###[[nano]]<br />
##[[less|Alternativer Pager less]]<br />
##[[Synology Toolset]]<br />
##[[Locale-UTF8|UTF-8–Kodierung einstellen]]<br />
##[[synogear: weitere Tools]]<br />
#[[Wo ist was im Linux-System]]<br />
##[[Dateien im /etc-Verzeichnis|/etc-Verzeichnis]]<br />
##[[Dateien im /dev-Verzeichnis|/dev-Verzeichnis]]<br />
##[[Dateien im /lib-Verzeichnis|/lib-Verzeichnis]]<br />
##[[Dateien im /tmp-Verzeichnis|/tmp-Verzeichnis]]<br />
##[[Dateien im /usr-Verzeichnis|/usr-Verzeichnis]]<br />
##[[Dateien im /var-Verzeichnis|/var-Verzeichnis]]<br />
##[[Dateien im /volume1-Verzeichnis|/volume1-Verzeichnis]]<br />
#[[Nicht unterstützte Konfigurationsänderungen]]<br />
##Systemmanagement<br />
###[[3rd_Party_Applications_absichern|3rd Party Applications vor unberechtigten Zugriffen schützen]]<br />
###[[Cron|Cron konfigurieren]]<br />
###[[Generierung eines eigenen SSL-Zertifikats]]<br />
###[[SSL-Zertifikat von ready2host einbinden]]<br />
###[[Downgrade der Synology-Firmware]]<br />
###[[Mount Bind]]<br />
###[[Gemeinsames Homeverzeichnis für mehrere User]]<br />
###[[User-Apache alle Zugriffe via Browser loggen lassen|Logdatei für den Apache-Server erstellen]]<br />
###[[Anzahl der möglichen Terminalfenster erhöhen]]<br />
###[[ssh_mit_Zertifikaten_absichern|Secure Shell (ssh) Zugriff nur mit Schlüssel]]<br />
###[[Ssh_clients_blocken|PHP Script zum Logfile Scan nach ssh Fehlern]]<br />
###[[Automatisches Herunterfahren wenn kein Ping möglich]]<br />
###[[Statusmail von der Diskstation]]<br />
###[[Aktuellen Status twittern (CPU, RAM, Speicher)]]<br />
###[[DSM Zugriff auf IP-Ebene beschränken]]<br />
###[[Debian auf der DiskStation]]<br />
###[[Thumbnailerzeugung beschleunigen ]]<br />
###[[Cacti Monitoring auf Diskstation installieren]]<br />
###[[SSMTP: Mit Bordmitteln eine E-Mail über die Konsole versenden.]]<br />
##Firmware-Upgrades<br />
###[[Upgrade von DS101g+ auf DS107]]<br />
##Backup Modifikationen<br />
###[[Alternierendes Backup]]<br />
###[[Backup der MySQL-Datenbank über einen cronjob]]<br />
###[[Backup über RSync auf einen angeschlossenen Datenträger]]<br />
###[[rsnapshot|Backups mit Rsnapshot erstellen]]<br />
###[[Offsite Backup von DS auf WebDAV-Speicher (z.B. von 1und1, GMX, Web.de, Strato, iDisk (MobileMe))]]<br />
### [[Generationsbackup_mit_rsync_und_rsnapshot_im_Netzwerk|Generationsbackup über Netzwerk]]<br />
### [[Verschlüsseltes Backup]]<br />
### [[duplicity|duplicity (SSH/SCP, RSync, FTP, WebDAV, IMAP, Amazon S3 + optionale Verschlüsselung)]]<br />
### [[WebDAV-Speicher mithilfe von davfs2 direkt in die DS einbinden]]<br />
### [[Zeitgesteuerte Sicherung mittels wget inkl. Protokoll]]<br />
###[[CrashPlan Headless Client]]<br />
##Download Modifikationen<br />
###[[pyLoad]]<br />
###[[appleJuice]]<br />
##Multimedia Modifikationen<br />
###[[TwonkyVision]]<br />
###[[Twonky auf der DS211j installieren]]<br />
###[[Swisscenter_auf_Diskstation_installieren|Swisscenter installieren]]<br />
###[[Fuppes]]<br />
###[[PS3 Mediaserver]]<br />
###[[iTunes Playlists Importieren]]<br />
###[[Einbinden einer DS über NFS bei älteren Samsung-TVs]]<br />
##Datenträger Mods<br />
###[[Upgrade eines None-RAID Volume zu RAID1 / RAID5]]<br />
###[[Hartnäckigen USB-Stick mit ext2/3 formatieren und einbinden]]<br />
###[[Verschlüsselte_Container|Verschlüsselte Container auf der DS]]<br />
## <span id="mailstation">Mailstation Mods</span><br />
### Dovecot Server (imap/pop3)<br />
#### [[Externe_Accounts_abrufen|Externe Accounts mit getmail abrufen]]<br />
#### [[Virtuelle_E-Mail_Nutzer_mit_dovecot|Virtuelle User]]<br />
#### [[E-mails_filtern_mit_dovecot-sieve|Dovecot-sieve zum Filtern von E-Mails]]<br />
#### [[Abwesenheitsmeldungen_mit_dovecot-sieve|AutoReply]]<br />
### Postfix Server (smtp)<br />
#### [[SMTP_Dialog_Restriktionen|Client Restriktionen]]<br />
#### [[Virtuelle_E-Mail_Nutzer_mit_postfix|Virtuelle User]]<br />
#### [[Zusaetzliche_Ports_fuer_Postfix|Zusätzliche Ports]]<br />
#### [[Mail-Relay_mit_Postfix|SMTP Relay einrichten]]<br />
#### [[Postgrey_greylisting_fuer_postfix|Greylisting mit postgrey]]<br />
#### [[Postfwd_firewall_fuer_postfix|Postfix Firewall postfwd]]<br />
#### [[Abwesenheitsmeldungen_mit_postfix|Autoreply]]<br />
### Spamassassin<br />
#### [[Externe_Accounts_abrufen#SpamAssassin_installieren_und_einrichten|Spamassassin installieren]]<br />
#### [[Regeln_von_Spamassassin|Die Regeln des Spamassassin]]<br />
#### [[Postfix_und_Spamassassin|Spamfilterung mit Postfix und Spamassassin]]<br />
### Various<br />
#### [[Fehlersuche in der Mailstation]]<br />
#### [[Nuetzliche_Kommandos_fuer_Mailstation|Nützliche Kommandos der Mailstation]]<br />
#### [[Mailinglisten_mit_mailman|Mailing-Listen mit mailman]]<br />
#### [[Getmail_script|getmail nutzen mit Hibernate der Festplatten]]<br />
#### [[Virtuelle_E-Mail_User_erstellen|Script zur Erstellung von virtuellen Nutzern (E-Mail)]]<br />
#### [[Roundcube als Webmail-Client für externen IMAP-Account verwenden]]<br />
## Sonstige Modifikationen<br />
### [[USV Shutdown an Mac über Netzerk weiterleiten mit Growl]]<br />
### [[Installation der Online Teamlösung eGroupWare Community Edition]]<br />
### [[Verteiltes Rechnen mit der DiskStation anhand von distributed.net]]<br />
### [[Hits der Photostation zuruecksetzen]]<br />
### [[Boost Joomla Performance]]<br />
### [[Druckerverwaltung und Netzwerkdrucker einbinden]]<br />
###[[Wake on LAN (WOL) nur mit PHP, auch über das Internet]]<br />
###[[DdnsAutoLogin|ddnsAutoLogin]]<br />
###[[PXE|PXE - Preboot eXecution Environment]]<br />
###[[OpenVPN zu einer Easybox 904 xDSL: Konfiganpassung via Konsole]]<br />
###[[Wörterbücher für Volltextsuche mit PostgreSQL erstellen]]<br />
###[[Guacamole mit Docker|Guacamole mit Docker]]<br />
###[[Synapse mit Docker|Synapse mit Docker]]<br />
###[[TvHeadend mit Docker und Sundtek SkyTV Ultimate|TvHeadend mit Docker und Sundtek SkyTV Ultimate]]<br />
<br />
#[[IPKG]]<br />
##[[Apache IPKG|Alternativer Apache-Server]]<br />
##[[OpenVPN_auf_der_Diskstation|OpenVPN auf einer DS betreiben]]<br />
##[[Streamripper]]<br />
##[[Samba_via_ipkg_installieren|Alternativer Samba-Server]]<br />
##[[Icecast_via_ipkg_installieren|Icecast Server]]<br />
##[[vsFTP installieren|Alternativer FTP Dienst]]<br />
##[[SFTP_SCP|SFTP und SCP]]<br />
##[[SVN-Server installieren|SVN-Server]]<br />
##[[Gitolite|Git + Gitolite installieren]]<br />
##[[TFTP-Daemon einrichten und verwenden]]<br />
##[[Java|Java installieren]]<br />
##[[Xinetd_via_ipkg_installieren|xinetd Daemon via ipkg installieren]]<br />
###[[Xinetd_Beispiel_Eigener_Dienst|Eigener Dienst per xinetd]]<br />
##[[Syslog-ng via ipkg installieren]]<br />
##[[YouGrabber]]<br />
##[[Geschwindigkeitsmessung mit iperf]]<br />
##[[Installation torrentflux-b4rt]]<br />
##[[Bind9 DNS-Server]]<br />
##[[Streaming server (ggrab) für DBox2-Aufnahmen einrichten]]<br />
##[[USB Schaltbare Steckdosenleiste]]<br />
##[[Tinyproxy]]<br />
##[[DHCP-Server]]<br />
##[[MoinMoin-Wiki]]<br />
##[[Inetutils|Inetutils, ftp, tftp, rcp, rsh, ping, ping6]]<br />
##[[Nail|Mit Nail ein E-Mail verschicken]]<br />
##[[Nmap|Portscanner Nmap]]<br />
##[[Mpd|Music Player Daemon mpd]]<br />
#[[:Category:3rd-Party-Apps|3rd-party Applikationen]]<br />
##[[Konfiguration von 3rd-party Applikationen]]<br />
###Integration einer Hilfe in DSM<br />
####[[Integration einer Hilfe in DSM 5.1-|DSM 5.1 - 6.1]]<br />
##[[Integration von 3rd-party Applikationen]]<br />
###[[phpMyAdmin als 3rd-Party Applikation|phpMyAdmin]]<br />
###[[phpPgAdmin als 3rd-Party Applikation|phpPgAdmin]]<br />
###[[phpSysInfo als 3rd-Party Applikation|phpSysInfo]]<br />
###[[aMule IP-Filter Download als 3rd-Party Applikation|aMule IP-Filter]]<br />
###[[eXtplorer als 3rd-party Applikation|eXtplorer (Alternative zur File Station)]]<br />
###[[3rd Party Application Manager]]<br />
###[[HttpWakeUp Wake-On-LAN Pakete per Webinterface verschicken]]<br />
###[[Rootkit Hunter als 3rd-Party Applikation|Rootkit Hunter]]<br />
###[[AdminTool]]<br />
###[[TeamSpeak 2 Server]]<br />
###[[TeamSpeak 3 Server]]<br />
###[[TeamSpeak 3 Server in Debian Chroot]]<br />
###[[FSyncMS|FSyncMS – ein Firefox Sync Server]]<br />
###[[Lesezeichen/Passwörter Synchronisation mit SyncPlaces für Firefox (über WebDAV auf der DS)]]<br />
###[[iStat Server]]<br />
### SqueezeCenter<br />
####[[SqueezeCenter-Existierende-MySQL-Instanz-verwenden|Bestehende Instanz verwenden]]<br />
###[[Minecraft-Server auf der Synology]]<br />
###[[SynoBox|SynoBox - ein Dropbox Client]]<br />
###[[AirSonos|AirSonos - per Airplay auf Sonos streamen]]<br />
###[[CoD2|Call of Duty 2 Server auf Synology]]<br />
#Kompilieren eigener Programme<br />
##[[Luadch]]<br />
##[[MediaInfo]]<br />
##[[bluetooth Treiber]]<br />
##[[sma-bluetooth]]<br />
<br />
#[[Veraltete Artikel der Kategorie „Modding Themen“]]<br />
##[[:Category:3rd-Party-Apps|3rd-party Applikationen]]<br />
###[[Konfiguration von 3rd-party Applikationen]]<br />
####[[Aufbau eines Synology Packages (SPK)]]<br />
####[[Aufbau der Datei 'INFO']]<br />
####[[Aufbau der Datei 'application.cfg']]<br />
####[[Aufbau der Datei 'config']]<br />
####Integration einer Hilfe in DSM<br />
#####[[Integration einer Hilfe in DSM 3.x|DSM 3.x]]<br />
#####[[Integration einer Hilfe in DSM 4.0-5.0|DSM 4.0 - 5.0]]<br />
##Hardware Modifikationen<br />
###[[DiskStation 209+ flüsterleise machen]]<br />
###[[DiskStation 106 automatisch einschalten]]<br />
###[[DiskStation 107 automatisch einschalten]]<br />
###[[DiskStation 211 automatisch einschalten]]<br />
###[[DiskStation 408 automatisch einschalten]]<br />
###[[DiskStation 106 WOL Wake-On-LAN Umbau]]<br />
|}</div>Itommeshttps://www.synology-wiki.de/index.php?title=Modifikationen&diff=7397Modifikationen2023-03-25T11:44:38Z<p>Itommes: Änderung 7385 von Itommes (Diskussion) rückgängig gemacht.</p>
<hr />
<div>[[Category:Portal]]<br />
{|width="100%" height="100%" border=0 cellpadding=5 cellspacing=7 style="border: 1px solid #c0c0c0;background-color:#e0e0e0"<br />
|style="background-color:#c0c0c0; border: 1px solid #a0a0a0; font-size:120%; font-weight: bold"|[[Modifikationen|Modding Themen]]<br />
|-<br />
|<br />
#[[Wichtige Informationen zum Modden der Synology Stations]]<br />
#[[Übersicht über verfügbare 3rd-Party-Apps aus unserer Community]]<br />
#Grundsätzliches zur Hard- und Software des Synology-Servers<br />
##[[Wie funktioniert ein Computer?]]<br />
##[[Platten, RAIDs und Dateisysteme]]<br />
##[[Überblick über Modifizierungen des Synology-Servers]]<br />
##[[Welchen Prozessortyp besitzt mein System?]]<br />
##[[Welche Performance besitzt mein System?]]<br />
##[[Arbeitsweise der Synology Stations]]<br />
##[[LEDs und Buttons]]<br />
##[[Viren auf dem Synology-Server?]]<br />
##[[Stromverbrauchswerte User]]<br />
#[[Die Kommandozeile]]<br />
##[[Grundlegende Befehle auf der Kommandozeile]]<br />
##[[Vergleich von Texteditoren]]<br />
###[[vi]]<br />
###[[vim]]<br />
###[[nano]]<br />
##[[less|Alternativer Pager less]]<br />
##[[Synology Toolset]]<br />
##[[Locale-UTF8|UTF-8–Kodierung einstellen]]<br />
##[[synogear: weitere Tools]]<br />
#[[Wo ist was im Linux-System]]<br />
##[[Dateien im /etc-Verzeichnis|/etc-Verzeichnis]]<br />
##[[Dateien im /dev-Verzeichnis|/dev-Verzeichnis]]<br />
##[[Dateien im /lib-Verzeichnis|/lib-Verzeichnis]]<br />
##[[Dateien im /tmp-Verzeichnis|/tmp-Verzeichnis]]<br />
##[[Dateien im /usr-Verzeichnis|/usr-Verzeichnis]]<br />
##[[Dateien im /var-Verzeichnis|/var-Verzeichnis]]<br />
##[[Dateien im /volume1-Verzeichnis|/volume1-Verzeichnis]]<br />
#[[Nicht unterstützte Konfigurationsänderungen]]<br />
##Systemmanagement<br />
###[[3rd_Party_Applications_absichern|3rd Party Applications vor unberechtigten Zugriffen schützen]]<br />
###[[Cron|Cron konfigurieren]]<br />
###[[Generierung eines eigenen SSL-Zertifikats]]<br />
###[[SSL-Zertifikat von ready2host einbinden]]<br />
###[[Downgrade der Synology-Firmware]]<br />
###[[Mount Bind]]<br />
###[[Gemeinsames Homeverzeichnis für mehrere User]]<br />
###[[User-Apache alle Zugriffe via Browser loggen lassen|Logdatei für den Apache-Server erstellen]]<br />
###[[Anzahl der möglichen Terminalfenster erhöhen]]<br />
###[[ssh_mit_Zertifikaten_absichern|Secure Shell (ssh) Zugriff nur mit Schlüssel]]<br />
###[[Ssh_clients_blocken|PHP Script zum Logfile Scan nach ssh Fehlern]]<br />
###[[Automatisches Herunterfahren wenn kein Ping möglich]]<br />
###[[Statusmail von der Diskstation]]<br />
###[[Aktuellen Status twittern (CPU, RAM, Speicher)]]<br />
###[[DSM Zugriff auf IP-Ebene beschränken]]<br />
###[[Debian auf der DiskStation]]<br />
###[[Thumbnailerzeugung beschleunigen ]]<br />
###[[Cacti Monitoring auf Diskstation installieren]]<br />
###[[SSMTP: Mit Bordmitteln eine E-Mail über die Konsole versenden.]]<br />
##Firmware-Upgrades<br />
###[[Upgrade von DS101g+ auf DS107]]<br />
##Backup Modifikationen<br />
###[[Alternierendes Backup]]<br />
###[[Backup der MySQL-Datenbank über einen cronjob]]<br />
###[[Backup über RSync auf einen angeschlossenen Datenträger]]<br />
###[[rsnapshot|Backups mit Rsnapshot erstellen]]<br />
###[[Offsite Backup von DS auf WebDAV-Speicher (z.B. von 1und1, GMX, Web.de, Strato, iDisk (MobileMe))]]<br />
### [[Generationsbackup_mit_rsync_und_rsnapshot_im_Netzwerk|Generationsbackup über Netzwerk]]<br />
### [[Verschlüsseltes Backup]]<br />
### [[duplicity|duplicity (SSH/SCP, RSync, FTP, WebDAV, IMAP, Amazon S3 + optionale Verschlüsselung)]]<br />
### [[WebDAV-Speicher mithilfe von davfs2 direkt in die DS einbinden]]<br />
### [[Zeitgesteuerte Sicherung mittels wget inkl. Protokoll]]<br />
###[[CrashPlan Headless Client]]<br />
##Download Modifikationen<br />
###[[pyLoad]]<br />
###[[appleJuice]]<br />
##Multimedia Modifikationen<br />
###[[TwonkyVision]]<br />
###[[Twonky auf der DS211j installieren]]<br />
###[[Swisscenter_auf_Diskstation_installieren|Swisscenter installieren]]<br />
###[[Fuppes]]<br />
###[[PS3 Mediaserver]]<br />
###[[iTunes Playlists Importieren]]<br />
###[[Einbinden einer DS über NFS bei älteren Samsung-TVs]]<br />
##Datenträger Mods<br />
###[[Upgrade eines None-RAID Volume zu RAID1 / RAID5]]<br />
###[[Hartnäckigen USB-Stick mit ext2/3 formatieren und einbinden]]<br />
###[[Verschlüsselte_Container|Verschlüsselte Container auf der DS]]<br />
## <span id="mailstation">Mailstation Mods</span><br />
### Dovecot Server (imap/pop3)<br />
#### [[Externe_Accounts_abrufen|Externe Accounts mit getmail abrufen]]<br />
#### [[Virtuelle_E-Mail_Nutzer_mit_dovecot|Virtuelle User]]<br />
#### [[E-mails_filtern_mit_dovecot-sieve|Dovecot-sieve zum Filtern von E-Mails]]<br />
#### [[Abwesenheitsmeldungen_mit_dovecot-sieve|AutoReply]]<br />
### Postfix Server (smtp)<br />
#### [[SMTP_Dialog_Restriktionen|Client Restriktionen]]<br />
#### [[Virtuelle_E-Mail_Nutzer_mit_postfix|Virtuelle User]]<br />
#### [[Zusaetzliche_Ports_fuer_Postfix|Zusätzliche Ports]]<br />
#### [[Mail-Relay_mit_Postfix|SMTP Relay einrichten]]<br />
#### [[Postgrey_greylisting_fuer_postfix|Greylisting mit postgrey]]<br />
#### [[Postfwd_firewall_fuer_postfix|Postfix Firewall postfwd]]<br />
#### [[Abwesenheitsmeldungen_mit_postfix|Autoreply]]<br />
### Spamassassin<br />
#### [[Externe_Accounts_abrufen#SpamAssassin_installieren_und_einrichten|Spamassassin installieren]]<br />
#### [[Regeln_von_Spamassassin|Die Regeln des Spamassassin]]<br />
#### [[Postfix_und_Spamassassin|Spamfilterung mit Postfix und Spamassassin]]<br />
### Various<br />
#### [[Fehlersuche in der Mailstation]]<br />
#### [[Nuetzliche_Kommandos_fuer_Mailstation|Nützliche Kommandos der Mailstation]]<br />
#### [[Mailinglisten_mit_mailman|Mailing-Listen mit mailman]]<br />
#### [[Getmail_script|getmail nutzen mit Hibernate der Festplatten]]<br />
#### [[Virtuelle_E-Mail_User_erstellen|Script zur Erstellung von virtuellen Nutzern (E-Mail)]]<br />
#### [[Roundcube als Webmail-Client für externen IMAP-Account verwenden]]<br />
## Sonstige Modifikationen<br />
### [[USV Shutdown an Mac über Netzerk weiterleiten mit Growl]]<br />
### [[Installation der Online Teamlösung eGroupWare Community Edition]]<br />
### [[Verteiltes Rechnen mit der DiskStation anhand von distributed.net]]<br />
### [[Hits der Photostation zuruecksetzen]]<br />
### [[Boost Joomla Performance]]<br />
### [[Druckerverwaltung und Netzwerkdrucker einbinden]]<br />
###[[Wake on LAN (WOL) nur mit PHP, auch über das Internet]]<br />
###[[DdnsAutoLogin|ddnsAutoLogin]]<br />
###[[PXE|PXE - Preboot eXecution Environment]]<br />
###[[OpenVPN zu einer Easybox 904 xDSL: Konfiganpassung via Konsole]]<br />
###[[Wörterbücher für Volltextsuche mit PostgreSQL erstellen]]<br />
###[[Guacamole mit Docker|Guacamole mit Docker]]<br />
###[[Synapse mit Docker|Synapse mit Docker]]<br />
###[[TvHeadend mit Docker und Sundtek SkyTV Ultimate|TvHeadend mit Docker und Sundtek SkyTV Ultimate]]<br />
<br />
#[[IPKG]]<br />
##[[Apache IPKG|Alternativer Apache-Server]]<br />
##[[OpenVPN_auf_der_Diskstation|OpenVPN auf einer DS betreiben]]<br />
##[[Streamripper]]<br />
##[[Samba_via_ipkg_installieren|Alternativer Samba-Server]]<br />
##[[Icecast_via_ipkg_installieren|Icecast Server]]<br />
##[[vsFTP installieren|Alternativer FTP Dienst]]<br />
##[[SFTP_SCP|SFTP und SCP]]<br />
##[[SVN-Server installieren|SVN-Server]]<br />
##[[Gitolite|Git + Gitolite installieren]]<br />
##[[TFTP-Daemon einrichten und verwenden]]<br />
##[[Java|Java installieren]]<br />
##[[Xinetd_via_ipkg_installieren|xinetd Daemon via ipkg installieren]]<br />
###[[Xinetd_Beispiel_Eigener_Dienst|Eigener Dienst per xinetd]]<br />
##[[Syslog-ng via ipkg installieren]]<br />
##[[YouGrabber]]<br />
##[[Geschwindigkeitsmessung mit iperf]]<br />
##[[Installation torrentflux-b4rt]]<br />
##[[Bind9 DNS-Server]]<br />
##[[Streaming server (ggrab) für DBox2-Aufnahmen einrichten]]<br />
##[[USB Schaltbare Steckdosenleiste]]<br />
##[[Tinyproxy]]<br />
##[[DHCP-Server]]<br />
##[[MoinMoin-Wiki]]<br />
##[[Inetutils|Inetutils, ftp, tftp, rcp, rsh, ping, ping6]]<br />
##[[Nail|Mit Nail ein E-Mail verschicken]]<br />
##[[Nmap|Portscanner Nmap]]<br />
##[[Mpd|Music Player Daemon mpd]]<br />
#[[:Category:3rd-Party-Apps|3rd-party Applikationen]]<br />
##[[Konfiguration von 3rd-party Applikationen]]<br />
###Integration einer Hilfe in DSM<br />
####[[Integration einer Hilfe in DSM 5.1-|DSM 5.1 - 6.1]]<br />
##[[Integration von 3rd-party Applikationen]]<br />
###[[phpMyAdmin als 3rd-Party Applikation|phpMyAdmin]]<br />
###[[phpPgAdmin als 3rd-Party Applikation|phpPgAdmin]]<br />
###[[phpSysInfo als 3rd-Party Applikation|phpSysInfo]]<br />
###[[aMule IP-Filter Download als 3rd-Party Applikation|aMule IP-Filter]]<br />
###[[eXtplorer als 3rd-party Applikation|eXtplorer (Alternative zur File Station)]]<br />
###[[3rd Party Application Manager]]<br />
###[[HttpWakeUp Wake-On-LAN Pakete per Webinterface verschicken]]<br />
###[[Rootkit Hunter als 3rd-Party Applikation|Rootkit Hunter]]<br />
###[[AdminTool]]<br />
###[[TeamSpeak 2 Server]]<br />
###[[TeamSpeak 3 Server]]<br />
###[[TeamSpeak 3 Server in Debian Chroot]]<br />
###[[FSyncMS|FSyncMS – ein Firefox Sync Server]]<br />
###[[Lesezeichen/Passwörter Synchronisation mit SyncPlaces für Firefox (über WebDAV auf der DS)]]<br />
###[[iStat Server]]<br />
### SqueezeCenter<br />
####[[SqueezeCenter-Existierende-MySQL-Instanz-verwenden|Bestehende Instanz verwenden]]<br />
###[[Minecraft-Server auf der Synology]]<br />
###[[SynoBox|SynoBox - ein Dropbox Client]]<br />
###[[AirSonos|AirSonos - per Airplay auf Sonos streamen]]<br />
###[[CoD2|Call of Duty 2 Server auf Synology]]<br />
#Kompilieren eigener Programme<br />
##[[Luadch]]<br />
##[[MediaInfo]]<br />
##[[bluetooth Treiber]]<br />
##[[sma-bluetooth]]<br />
<br />
#[[Veraltete Artikel der Kategorie „Modding Themen“]]<br />
##3rd-party Applikationen<br />
###Konfiguration von 3rd-party Applikationen<br />
####[[Aufbau eines Synology Packages (SPK)]]<br />
####[[Aufbau der Datei 'INFO']]<br />
####[[Aufbau der Datei 'application.cfg']]<br />
####[[Aufbau der Datei 'config']]<br />
####Integration einer Hilfe in DSM<br />
#####[[Integration einer Hilfe in DSM 3.x|DSM 3.x]]<br />
#####[[Integration einer Hilfe in DSM 4.0-5.0|DSM 4.0 - 5.0]]<br />
##Hardware Modifikationen<br />
###[[DiskStation 209+ flüsterleise machen]]<br />
###[[DiskStation 106 automatisch einschalten]]<br />
###[[DiskStation 107 automatisch einschalten]]<br />
###[[DiskStation 211 automatisch einschalten]]<br />
###[[DiskStation 408 automatisch einschalten]]<br />
###[[DiskStation 106 WOL Wake-On-LAN Umbau]]<br />
|}</div>Itommeshttps://www.synology-wiki.de/index.php?title=Modifikationen&diff=7396Modifikationen2023-03-25T11:44:24Z<p>Itommes: Änderung 7386 von Itommes (Diskussion) rückgängig gemacht.</p>
<hr />
<div>[[Category:Portal]]<br />
{|width="100%" height="100%" border=0 cellpadding=5 cellspacing=7 style="border: 1px solid #c0c0c0;background-color:#e0e0e0"<br />
|style="background-color:#c0c0c0; border: 1px solid #a0a0a0; font-size:120%; font-weight: bold"|[[Modifikationen|Modding Themen]]<br />
|-<br />
|<br />
#[[Wichtige Informationen zum Modden der Synology Stations]]<br />
#[[Übersicht über verfügbare 3rd-Party-Apps aus unserer Community]]<br />
#Grundsätzliches zur Hard- und Software des Synology-Servers<br />
##[[Wie funktioniert ein Computer?]]<br />
##[[Platten, RAIDs und Dateisysteme]]<br />
##[[Überblick über Modifizierungen des Synology-Servers]]<br />
##[[Welchen Prozessortyp besitzt mein System?]]<br />
##[[Welche Performance besitzt mein System?]]<br />
##[[Arbeitsweise der Synology Stations]]<br />
##[[LEDs und Buttons]]<br />
##[[Viren auf dem Synology-Server?]]<br />
##[[Stromverbrauchswerte User]]<br />
#[[Die Kommandozeile]]<br />
##[[Grundlegende Befehle auf der Kommandozeile]]<br />
##[[Vergleich von Texteditoren]]<br />
###[[vi]]<br />
###[[vim]]<br />
###[[nano]]<br />
##[[less|Alternativer Pager less]]<br />
##[[Synology Toolset]]<br />
##[[Locale-UTF8|UTF-8–Kodierung einstellen]]<br />
##[[synogear: weitere Tools]]<br />
#[[Wo ist was im Linux-System]]<br />
##[[Dateien im /etc-Verzeichnis|/etc-Verzeichnis]]<br />
##[[Dateien im /dev-Verzeichnis|/dev-Verzeichnis]]<br />
##[[Dateien im /lib-Verzeichnis|/lib-Verzeichnis]]<br />
##[[Dateien im /tmp-Verzeichnis|/tmp-Verzeichnis]]<br />
##[[Dateien im /usr-Verzeichnis|/usr-Verzeichnis]]<br />
##[[Dateien im /var-Verzeichnis|/var-Verzeichnis]]<br />
##[[Dateien im /volume1-Verzeichnis|/volume1-Verzeichnis]]<br />
#[[Nicht unterstützte Konfigurationsänderungen]]<br />
##Systemmanagement<br />
###[[3rd_Party_Applications_absichern|3rd Party Applications vor unberechtigten Zugriffen schützen]]<br />
###[[Cron|Cron konfigurieren]]<br />
###[[Generierung eines eigenen SSL-Zertifikats]]<br />
###[[SSL-Zertifikat von ready2host einbinden]]<br />
###[[Downgrade der Synology-Firmware]]<br />
###[[Mount Bind]]<br />
###[[Gemeinsames Homeverzeichnis für mehrere User]]<br />
###[[User-Apache alle Zugriffe via Browser loggen lassen|Logdatei für den Apache-Server erstellen]]<br />
###[[Anzahl der möglichen Terminalfenster erhöhen]]<br />
###[[ssh_mit_Zertifikaten_absichern|Secure Shell (ssh) Zugriff nur mit Schlüssel]]<br />
###[[Ssh_clients_blocken|PHP Script zum Logfile Scan nach ssh Fehlern]]<br />
###[[Automatisches Herunterfahren wenn kein Ping möglich]]<br />
###[[Statusmail von der Diskstation]]<br />
###[[Aktuellen Status twittern (CPU, RAM, Speicher)]]<br />
###[[DSM Zugriff auf IP-Ebene beschränken]]<br />
###[[Debian auf der DiskStation]]<br />
###[[Thumbnailerzeugung beschleunigen ]]<br />
###[[Cacti Monitoring auf Diskstation installieren]]<br />
###[[SSMTP: Mit Bordmitteln eine E-Mail über die Konsole versenden.]]<br />
##Firmware-Upgrades<br />
###[[Upgrade von DS101g+ auf DS107]]<br />
##Backup Modifikationen<br />
###[[Alternierendes Backup]]<br />
###[[Backup der MySQL-Datenbank über einen cronjob]]<br />
###[[Backup über RSync auf einen angeschlossenen Datenträger]]<br />
###[[rsnapshot|Backups mit Rsnapshot erstellen]]<br />
###[[Offsite Backup von DS auf WebDAV-Speicher (z.B. von 1und1, GMX, Web.de, Strato, iDisk (MobileMe))]]<br />
### [[Generationsbackup_mit_rsync_und_rsnapshot_im_Netzwerk|Generationsbackup über Netzwerk]]<br />
### [[Verschlüsseltes Backup]]<br />
### [[duplicity|duplicity (SSH/SCP, RSync, FTP, WebDAV, IMAP, Amazon S3 + optionale Verschlüsselung)]]<br />
### [[WebDAV-Speicher mithilfe von davfs2 direkt in die DS einbinden]]<br />
### [[Zeitgesteuerte Sicherung mittels wget inkl. Protokoll]]<br />
###[[CrashPlan Headless Client]]<br />
##Download Modifikationen<br />
###[[pyLoad]]<br />
###[[appleJuice]]<br />
##Multimedia Modifikationen<br />
###[[TwonkyVision]]<br />
###[[Twonky auf der DS211j installieren]]<br />
###[[Swisscenter_auf_Diskstation_installieren|Swisscenter installieren]]<br />
###[[Fuppes]]<br />
###[[PS3 Mediaserver]]<br />
###[[iTunes Playlists Importieren]]<br />
###[[Einbinden einer DS über NFS bei älteren Samsung-TVs]]<br />
##Datenträger Mods<br />
###[[Upgrade eines None-RAID Volume zu RAID1 / RAID5]]<br />
###[[Hartnäckigen USB-Stick mit ext2/3 formatieren und einbinden]]<br />
###[[Verschlüsselte_Container|Verschlüsselte Container auf der DS]]<br />
## <span id="mailstation">Mailstation Mods</span><br />
### Dovecot Server (imap/pop3)<br />
#### [[Externe_Accounts_abrufen|Externe Accounts mit getmail abrufen]]<br />
#### [[Virtuelle_E-Mail_Nutzer_mit_dovecot|Virtuelle User]]<br />
#### [[E-mails_filtern_mit_dovecot-sieve|Dovecot-sieve zum Filtern von E-Mails]]<br />
#### [[Abwesenheitsmeldungen_mit_dovecot-sieve|AutoReply]]<br />
### Postfix Server (smtp)<br />
#### [[SMTP_Dialog_Restriktionen|Client Restriktionen]]<br />
#### [[Virtuelle_E-Mail_Nutzer_mit_postfix|Virtuelle User]]<br />
#### [[Zusaetzliche_Ports_fuer_Postfix|Zusätzliche Ports]]<br />
#### [[Mail-Relay_mit_Postfix|SMTP Relay einrichten]]<br />
#### [[Postgrey_greylisting_fuer_postfix|Greylisting mit postgrey]]<br />
#### [[Postfwd_firewall_fuer_postfix|Postfix Firewall postfwd]]<br />
#### [[Abwesenheitsmeldungen_mit_postfix|Autoreply]]<br />
### Spamassassin<br />
#### [[Externe_Accounts_abrufen#SpamAssassin_installieren_und_einrichten|Spamassassin installieren]]<br />
#### [[Regeln_von_Spamassassin|Die Regeln des Spamassassin]]<br />
#### [[Postfix_und_Spamassassin|Spamfilterung mit Postfix und Spamassassin]]<br />
### Various<br />
#### [[Fehlersuche in der Mailstation]]<br />
#### [[Nuetzliche_Kommandos_fuer_Mailstation|Nützliche Kommandos der Mailstation]]<br />
#### [[Mailinglisten_mit_mailman|Mailing-Listen mit mailman]]<br />
#### [[Getmail_script|getmail nutzen mit Hibernate der Festplatten]]<br />
#### [[Virtuelle_E-Mail_User_erstellen|Script zur Erstellung von virtuellen Nutzern (E-Mail)]]<br />
#### [[Roundcube als Webmail-Client für externen IMAP-Account verwenden]]<br />
## Sonstige Modifikationen<br />
### [[USV Shutdown an Mac über Netzerk weiterleiten mit Growl]]<br />
### [[Installation der Online Teamlösung eGroupWare Community Edition]]<br />
### [[Verteiltes Rechnen mit der DiskStation anhand von distributed.net]]<br />
### [[Hits der Photostation zuruecksetzen]]<br />
### [[Boost Joomla Performance]]<br />
### [[Druckerverwaltung und Netzwerkdrucker einbinden]]<br />
###[[Wake on LAN (WOL) nur mit PHP, auch über das Internet]]<br />
###[[DdnsAutoLogin|ddnsAutoLogin]]<br />
###[[PXE|PXE - Preboot eXecution Environment]]<br />
###[[OpenVPN zu einer Easybox 904 xDSL: Konfiganpassung via Konsole]]<br />
###[[Wörterbücher für Volltextsuche mit PostgreSQL erstellen]]<br />
###[[Guacamole mit Docker|Guacamole mit Docker]]<br />
###[[Synapse mit Docker|Synapse mit Docker]]<br />
###[[TvHeadend mit Docker und Sundtek SkyTV Ultimate|TvHeadend mit Docker und Sundtek SkyTV Ultimate]]<br />
<br />
#[[IPKG]]<br />
##[[Apache IPKG|Alternativer Apache-Server]]<br />
##[[OpenVPN_auf_der_Diskstation|OpenVPN auf einer DS betreiben]]<br />
##[[Streamripper]]<br />
##[[Samba_via_ipkg_installieren|Alternativer Samba-Server]]<br />
##[[Icecast_via_ipkg_installieren|Icecast Server]]<br />
##[[vsFTP installieren|Alternativer FTP Dienst]]<br />
##[[SFTP_SCP|SFTP und SCP]]<br />
##[[SVN-Server installieren|SVN-Server]]<br />
##[[Gitolite|Git + Gitolite installieren]]<br />
##[[TFTP-Daemon einrichten und verwenden]]<br />
##[[Java|Java installieren]]<br />
##[[Xinetd_via_ipkg_installieren|xinetd Daemon via ipkg installieren]]<br />
###[[Xinetd_Beispiel_Eigener_Dienst|Eigener Dienst per xinetd]]<br />
##[[Syslog-ng via ipkg installieren]]<br />
##[[YouGrabber]]<br />
##[[Geschwindigkeitsmessung mit iperf]]<br />
##[[Installation torrentflux-b4rt]]<br />
##[[Bind9 DNS-Server]]<br />
##[[Streaming server (ggrab) für DBox2-Aufnahmen einrichten]]<br />
##[[USB Schaltbare Steckdosenleiste]]<br />
##[[Tinyproxy]]<br />
##[[DHCP-Server]]<br />
##[[MoinMoin-Wiki]]<br />
##[[Inetutils|Inetutils, ftp, tftp, rcp, rsh, ping, ping6]]<br />
##[[Nail|Mit Nail ein E-Mail verschicken]]<br />
##[[Nmap|Portscanner Nmap]]<br />
##[[Mpd|Music Player Daemon mpd]]<br />
#[[:Category:3rd-Party-Apps|3rd-party Applikationen]]<br />
##Konfiguration von 3rd-party Applikationen<br />
###Integration einer Hilfe in DSM<br />
####[[Integration einer Hilfe in DSM 5.1-|DSM 5.1 - 6.1]]<br />
#Kompilieren eigener Programme<br />
##[[Luadch]]<br />
##[[MediaInfo]]<br />
##[[bluetooth Treiber]]<br />
##[[sma-bluetooth]]<br />
<br />
#[[Veraltete Artikel der Kategorie „Modding Themen“]]<br />
##3rd-party Applikationen<br />
###Konfiguration von 3rd-party Applikationen<br />
####[[Aufbau eines Synology Packages (SPK)]]<br />
####[[Aufbau der Datei 'INFO']]<br />
####[[Aufbau der Datei 'application.cfg']]<br />
####[[Aufbau der Datei 'config']]<br />
####Integration einer Hilfe in DSM<br />
#####[[Integration einer Hilfe in DSM 3.x|DSM 3.x]]<br />
#####[[Integration einer Hilfe in DSM 4.0-5.0|DSM 4.0 - 5.0]]<br />
##[[Integration von 3rd-party Applikationen]]<br />
###[[phpMyAdmin als 3rd-Party Applikation|phpMyAdmin]]<br />
###[[phpPgAdmin als 3rd-Party Applikation|phpPgAdmin]]<br />
###[[phpSysInfo als 3rd-Party Applikation|phpSysInfo]]<br />
###[[aMule IP-Filter Download als 3rd-Party Applikation|aMule IP-Filter]]<br />
###[[eXtplorer als 3rd-party Applikation|eXtplorer (Alternative zur File Station)]]<br />
###[[3rd Party Application Manager]]<br />
###[[HttpWakeUp Wake-On-LAN Pakete per Webinterface verschicken]]<br />
###[[Rootkit Hunter als 3rd-Party Applikation|Rootkit Hunter]]<br />
###[[AdminTool]]<br />
###[[TeamSpeak 2 Server]]<br />
###[[TeamSpeak 3 Server]]<br />
###[[TeamSpeak 3 Server in Debian Chroot]]<br />
###[[FSyncMS|FSyncMS – ein Firefox Sync Server]]<br />
###[[Lesezeichen/Passwörter Synchronisation mit SyncPlaces für Firefox (über WebDAV auf der DS)]]<br />
###[[iStat Server]]<br />
### SqueezeCenter<br />
####[[SqueezeCenter-Existierende-MySQL-Instanz-verwenden|Bestehende Instanz verwenden]]<br />
###[[Minecraft-Server auf der Synology]]<br />
###[[SynoBox|SynoBox - ein Dropbox Client]]<br />
###[[AirSonos|AirSonos - per Airplay auf Sonos streamen]]<br />
###[[CoD2|Call of Duty 2 Server auf Synology]]<br />
##Hardware Modifikationen<br />
###[[DiskStation 209+ flüsterleise machen]]<br />
###[[DiskStation 106 automatisch einschalten]]<br />
###[[DiskStation 107 automatisch einschalten]]<br />
###[[DiskStation 211 automatisch einschalten]]<br />
###[[DiskStation 408 automatisch einschalten]]<br />
###[[DiskStation 106 WOL Wake-On-LAN Umbau]]<br />
|}</div>Itommeshttps://www.synology-wiki.de/index.php?title=Modifikationen&diff=7395Modifikationen2023-03-25T11:43:35Z<p>Itommes: Änderung 7387 von Itommes (Diskussion) rückgängig gemacht.</p>
<hr />
<div>[[Category:Portal]]<br />
{|width="100%" height="100%" border=0 cellpadding=5 cellspacing=7 style="border: 1px solid #c0c0c0;background-color:#e0e0e0"<br />
|style="background-color:#c0c0c0; border: 1px solid #a0a0a0; font-size:120%; font-weight: bold"|[[Modifikationen|Modding Themen]]<br />
|-<br />
|<br />
#[[Wichtige Informationen zum Modden der Synology Stations]]<br />
#[[Übersicht über verfügbare 3rd-Party-Apps aus unserer Community]]<br />
#Grundsätzliches zur Hard- und Software des Synology-Servers<br />
##[[Wie funktioniert ein Computer?]]<br />
##[[Platten, RAIDs und Dateisysteme]]<br />
##[[Überblick über Modifizierungen des Synology-Servers]]<br />
##[[Welchen Prozessortyp besitzt mein System?]]<br />
##[[Welche Performance besitzt mein System?]]<br />
##[[Arbeitsweise der Synology Stations]]<br />
##[[LEDs und Buttons]]<br />
##[[Viren auf dem Synology-Server?]]<br />
##[[Stromverbrauchswerte User]]<br />
#[[Die Kommandozeile]]<br />
##[[Grundlegende Befehle auf der Kommandozeile]]<br />
##[[Vergleich von Texteditoren]]<br />
###[[vi]]<br />
###[[vim]]<br />
###[[nano]]<br />
##[[less|Alternativer Pager less]]<br />
##[[Synology Toolset]]<br />
##[[Locale-UTF8|UTF-8–Kodierung einstellen]]<br />
##[[synogear: weitere Tools]]<br />
#[[Wo ist was im Linux-System]]<br />
##[[Dateien im /etc-Verzeichnis|/etc-Verzeichnis]]<br />
##[[Dateien im /dev-Verzeichnis|/dev-Verzeichnis]]<br />
##[[Dateien im /lib-Verzeichnis|/lib-Verzeichnis]]<br />
##[[Dateien im /tmp-Verzeichnis|/tmp-Verzeichnis]]<br />
##[[Dateien im /usr-Verzeichnis|/usr-Verzeichnis]]<br />
##[[Dateien im /var-Verzeichnis|/var-Verzeichnis]]<br />
##[[Dateien im /volume1-Verzeichnis|/volume1-Verzeichnis]]<br />
#[[Nicht unterstützte Konfigurationsänderungen]]<br />
##Systemmanagement<br />
###[[3rd_Party_Applications_absichern|3rd Party Applications vor unberechtigten Zugriffen schützen]]<br />
###[[Cron|Cron konfigurieren]]<br />
###[[Generierung eines eigenen SSL-Zertifikats]]<br />
###[[SSL-Zertifikat von ready2host einbinden]]<br />
###[[Downgrade der Synology-Firmware]]<br />
###[[Mount Bind]]<br />
###[[Gemeinsames Homeverzeichnis für mehrere User]]<br />
###[[User-Apache alle Zugriffe via Browser loggen lassen|Logdatei für den Apache-Server erstellen]]<br />
###[[Anzahl der möglichen Terminalfenster erhöhen]]<br />
###[[ssh_mit_Zertifikaten_absichern|Secure Shell (ssh) Zugriff nur mit Schlüssel]]<br />
###[[Ssh_clients_blocken|PHP Script zum Logfile Scan nach ssh Fehlern]]<br />
###[[Automatisches Herunterfahren wenn kein Ping möglich]]<br />
###[[Statusmail von der Diskstation]]<br />
###[[Aktuellen Status twittern (CPU, RAM, Speicher)]]<br />
###[[DSM Zugriff auf IP-Ebene beschränken]]<br />
###[[Debian auf der DiskStation]]<br />
###[[Thumbnailerzeugung beschleunigen ]]<br />
###[[Cacti Monitoring auf Diskstation installieren]]<br />
###[[SSMTP: Mit Bordmitteln eine E-Mail über die Konsole versenden.]]<br />
##Firmware-Upgrades<br />
###[[Upgrade von DS101g+ auf DS107]]<br />
##Backup Modifikationen<br />
###[[Alternierendes Backup]]<br />
###[[Backup der MySQL-Datenbank über einen cronjob]]<br />
###[[Backup über RSync auf einen angeschlossenen Datenträger]]<br />
###[[rsnapshot|Backups mit Rsnapshot erstellen]]<br />
###[[Offsite Backup von DS auf WebDAV-Speicher (z.B. von 1und1, GMX, Web.de, Strato, iDisk (MobileMe))]]<br />
### [[Generationsbackup_mit_rsync_und_rsnapshot_im_Netzwerk|Generationsbackup über Netzwerk]]<br />
### [[Verschlüsseltes Backup]]<br />
### [[duplicity|duplicity (SSH/SCP, RSync, FTP, WebDAV, IMAP, Amazon S3 + optionale Verschlüsselung)]]<br />
### [[WebDAV-Speicher mithilfe von davfs2 direkt in die DS einbinden]]<br />
### [[Zeitgesteuerte Sicherung mittels wget inkl. Protokoll]]<br />
###[[CrashPlan Headless Client]]<br />
##Download Modifikationen<br />
###[[pyLoad]]<br />
###[[appleJuice]]<br />
##Multimedia Modifikationen<br />
###[[TwonkyVision]]<br />
###[[Twonky auf der DS211j installieren]]<br />
###[[Swisscenter_auf_Diskstation_installieren|Swisscenter installieren]]<br />
###[[Fuppes]]<br />
###[[PS3 Mediaserver]]<br />
###[[iTunes Playlists Importieren]]<br />
###[[Einbinden einer DS über NFS bei älteren Samsung-TVs]]<br />
##Datenträger Mods<br />
###[[Upgrade eines None-RAID Volume zu RAID1 / RAID5]]<br />
###[[Hartnäckigen USB-Stick mit ext2/3 formatieren und einbinden]]<br />
###[[Verschlüsselte_Container|Verschlüsselte Container auf der DS]]<br />
## <span id="mailstation">Mailstation Mods</span><br />
### Dovecot Server (imap/pop3)<br />
#### [[Externe_Accounts_abrufen|Externe Accounts mit getmail abrufen]]<br />
#### [[Virtuelle_E-Mail_Nutzer_mit_dovecot|Virtuelle User]]<br />
#### [[E-mails_filtern_mit_dovecot-sieve|Dovecot-sieve zum Filtern von E-Mails]]<br />
#### [[Abwesenheitsmeldungen_mit_dovecot-sieve|AutoReply]]<br />
### Postfix Server (smtp)<br />
#### [[SMTP_Dialog_Restriktionen|Client Restriktionen]]<br />
#### [[Virtuelle_E-Mail_Nutzer_mit_postfix|Virtuelle User]]<br />
#### [[Zusaetzliche_Ports_fuer_Postfix|Zusätzliche Ports]]<br />
#### [[Mail-Relay_mit_Postfix|SMTP Relay einrichten]]<br />
#### [[Postgrey_greylisting_fuer_postfix|Greylisting mit postgrey]]<br />
#### [[Postfwd_firewall_fuer_postfix|Postfix Firewall postfwd]]<br />
#### [[Abwesenheitsmeldungen_mit_postfix|Autoreply]]<br />
### Spamassassin<br />
#### [[Externe_Accounts_abrufen#SpamAssassin_installieren_und_einrichten|Spamassassin installieren]]<br />
#### [[Regeln_von_Spamassassin|Die Regeln des Spamassassin]]<br />
#### [[Postfix_und_Spamassassin|Spamfilterung mit Postfix und Spamassassin]]<br />
### Various<br />
#### [[Fehlersuche in der Mailstation]]<br />
#### [[Nuetzliche_Kommandos_fuer_Mailstation|Nützliche Kommandos der Mailstation]]<br />
#### [[Mailinglisten_mit_mailman|Mailing-Listen mit mailman]]<br />
#### [[Getmail_script|getmail nutzen mit Hibernate der Festplatten]]<br />
#### [[Virtuelle_E-Mail_User_erstellen|Script zur Erstellung von virtuellen Nutzern (E-Mail)]]<br />
#### [[Roundcube als Webmail-Client für externen IMAP-Account verwenden]]<br />
## Sonstige Modifikationen<br />
### [[USV Shutdown an Mac über Netzerk weiterleiten mit Growl]]<br />
### [[Installation der Online Teamlösung eGroupWare Community Edition]]<br />
### [[Verteiltes Rechnen mit der DiskStation anhand von distributed.net]]<br />
### [[Hits der Photostation zuruecksetzen]]<br />
### [[Boost Joomla Performance]]<br />
### [[Druckerverwaltung und Netzwerkdrucker einbinden]]<br />
###[[Wake on LAN (WOL) nur mit PHP, auch über das Internet]]<br />
###[[DdnsAutoLogin|ddnsAutoLogin]]<br />
###[[PXE|PXE - Preboot eXecution Environment]]<br />
###[[OpenVPN zu einer Easybox 904 xDSL: Konfiganpassung via Konsole]]<br />
###[[Wörterbücher für Volltextsuche mit PostgreSQL erstellen]]<br />
###[[Guacamole mit Docker|Guacamole mit Docker]]<br />
###[[Synapse mit Docker|Synapse mit Docker]]<br />
###[[TvHeadend mit Docker und Sundtek SkyTV Ultimate|TvHeadend mit Docker und Sundtek SkyTV Ultimate]]<br />
<br />
#[[IPKG]]<br />
##[[Apache IPKG|Alternativer Apache-Server]]<br />
##[[OpenVPN_auf_der_Diskstation|OpenVPN auf einer DS betreiben]]<br />
##[[Streamripper]]<br />
##[[Samba_via_ipkg_installieren|Alternativer Samba-Server]]<br />
##[[Icecast_via_ipkg_installieren|Icecast Server]]<br />
##[[vsFTP installieren|Alternativer FTP Dienst]]<br />
##[[SFTP_SCP|SFTP und SCP]]<br />
##[[SVN-Server installieren|SVN-Server]]<br />
##[[Gitolite|Git + Gitolite installieren]]<br />
##[[TFTP-Daemon einrichten und verwenden]]<br />
##[[Java|Java installieren]]<br />
##[[Xinetd_via_ipkg_installieren|xinetd Daemon via ipkg installieren]]<br />
###[[Xinetd_Beispiel_Eigener_Dienst|Eigener Dienst per xinetd]]<br />
##[[Syslog-ng via ipkg installieren]]<br />
##[[YouGrabber]]<br />
##[[Geschwindigkeitsmessung mit iperf]]<br />
##[[Installation torrentflux-b4rt]]<br />
##[[Bind9 DNS-Server]]<br />
##[[Streaming server (ggrab) für DBox2-Aufnahmen einrichten]]<br />
##[[USB Schaltbare Steckdosenleiste]]<br />
##[[Tinyproxy]]<br />
##[[DHCP-Server]]<br />
##[[MoinMoin-Wiki]]<br />
##[[Inetutils|Inetutils, ftp, tftp, rcp, rsh, ping, ping6]]<br />
##[[Nail|Mit Nail ein E-Mail verschicken]]<br />
##[[Nmap|Portscanner Nmap]]<br />
##[[Mpd|Music Player Daemon mpd]]<br />
#[[:Category:3rd-Party-Apps|3rd-party Applikationen]]<br />
##Konfiguration von 3rd-party Applikationen<br />
###Integration einer Hilfe in DSM<br />
####[[Integration einer Hilfe in DSM 5.1-|DSM 5.1 - 6.1]]<br />
<br />
<br />
#[[Veraltete Artikel der Kategorie „Modding Themen“]]<br />
##3rd-party Applikationen<br />
###Konfiguration von 3rd-party Applikationen<br />
####[[Aufbau eines Synology Packages (SPK)]]<br />
####[[Aufbau der Datei 'INFO']]<br />
####[[Aufbau der Datei 'application.cfg']]<br />
####[[Aufbau der Datei 'config']]<br />
####Integration einer Hilfe in DSM<br />
#####[[Integration einer Hilfe in DSM 3.x|DSM 3.x]]<br />
#####[[Integration einer Hilfe in DSM 4.0-5.0|DSM 4.0 - 5.0]]<br />
##[[Integration von 3rd-party Applikationen]]<br />
###[[phpMyAdmin als 3rd-Party Applikation|phpMyAdmin]]<br />
###[[phpPgAdmin als 3rd-Party Applikation|phpPgAdmin]]<br />
###[[phpSysInfo als 3rd-Party Applikation|phpSysInfo]]<br />
###[[aMule IP-Filter Download als 3rd-Party Applikation|aMule IP-Filter]]<br />
###[[eXtplorer als 3rd-party Applikation|eXtplorer (Alternative zur File Station)]]<br />
###[[3rd Party Application Manager]]<br />
###[[HttpWakeUp Wake-On-LAN Pakete per Webinterface verschicken]]<br />
###[[Rootkit Hunter als 3rd-Party Applikation|Rootkit Hunter]]<br />
###[[AdminTool]]<br />
###[[TeamSpeak 2 Server]]<br />
###[[TeamSpeak 3 Server]]<br />
###[[TeamSpeak 3 Server in Debian Chroot]]<br />
###[[FSyncMS|FSyncMS – ein Firefox Sync Server]]<br />
###[[Lesezeichen/Passwörter Synchronisation mit SyncPlaces für Firefox (über WebDAV auf der DS)]]<br />
###[[iStat Server]]<br />
### SqueezeCenter<br />
####[[SqueezeCenter-Existierende-MySQL-Instanz-verwenden|Bestehende Instanz verwenden]]<br />
###[[Minecraft-Server auf der Synology]]<br />
###[[SynoBox|SynoBox - ein Dropbox Client]]<br />
###[[AirSonos|AirSonos - per Airplay auf Sonos streamen]]<br />
###[[CoD2|Call of Duty 2 Server auf Synology]]<br />
##Kompilieren eigener Programme<br />
##[[Luadch]]<br />
###[[MediaInfo]]<br />
###[[bluetooth Treiber]]<br />
###[[sma-bluetooth]]<br />
###Hardware Modifikationen<br />
###[[DiskStation 209+ flüsterleise machen]]<br />
###[[DiskStation 106 automatisch einschalten]]<br />
###[[DiskStation 107 automatisch einschalten]]<br />
###[[DiskStation 211 automatisch einschalten]]<br />
###[[DiskStation 408 automatisch einschalten]]<br />
###[[DiskStation 106 WOL Wake-On-LAN Umbau]]<br />
|}</div>Itommeshttps://www.synology-wiki.de/index.php?title=Modifikationen&diff=7394Modifikationen2023-03-25T11:43:10Z<p>Itommes: Änderung 7388 von Itommes (Diskussion) rückgängig gemacht.</p>
<hr />
<div>[[Category:Portal]]<br />
{|width="100%" height="100%" border=0 cellpadding=5 cellspacing=7 style="border: 1px solid #c0c0c0;background-color:#e0e0e0"<br />
|style="background-color:#c0c0c0; border: 1px solid #a0a0a0; font-size:120%; font-weight: bold"|[[Modifikationen|Modding Themen]]<br />
|-<br />
|<br />
#[[Wichtige Informationen zum Modden der Synology Stations]]<br />
#[[Übersicht über verfügbare 3rd-Party-Apps aus unserer Community]]<br />
#Grundsätzliches zur Hard- und Software des Synology-Servers<br />
##[[Wie funktioniert ein Computer?]]<br />
##[[Platten, RAIDs und Dateisysteme]]<br />
##[[Überblick über Modifizierungen des Synology-Servers]]<br />
##[[Welchen Prozessortyp besitzt mein System?]]<br />
##[[Welche Performance besitzt mein System?]]<br />
##[[Arbeitsweise der Synology Stations]]<br />
##[[LEDs und Buttons]]<br />
##[[Viren auf dem Synology-Server?]]<br />
##[[Stromverbrauchswerte User]]<br />
#[[Die Kommandozeile]]<br />
##[[Grundlegende Befehle auf der Kommandozeile]]<br />
##[[Vergleich von Texteditoren]]<br />
###[[vi]]<br />
###[[vim]]<br />
###[[nano]]<br />
##[[less|Alternativer Pager less]]<br />
##[[Synology Toolset]]<br />
##[[Locale-UTF8|UTF-8–Kodierung einstellen]]<br />
##[[synogear: weitere Tools]]<br />
#[[Wo ist was im Linux-System]]<br />
##[[Dateien im /etc-Verzeichnis|/etc-Verzeichnis]]<br />
##[[Dateien im /dev-Verzeichnis|/dev-Verzeichnis]]<br />
##[[Dateien im /lib-Verzeichnis|/lib-Verzeichnis]]<br />
##[[Dateien im /tmp-Verzeichnis|/tmp-Verzeichnis]]<br />
##[[Dateien im /usr-Verzeichnis|/usr-Verzeichnis]]<br />
##[[Dateien im /var-Verzeichnis|/var-Verzeichnis]]<br />
##[[Dateien im /volume1-Verzeichnis|/volume1-Verzeichnis]]<br />
#[[Nicht unterstützte Konfigurationsänderungen]]<br />
##Systemmanagement<br />
###[[3rd_Party_Applications_absichern|3rd Party Applications vor unberechtigten Zugriffen schützen]]<br />
###[[Cron|Cron konfigurieren]]<br />
###[[Generierung eines eigenen SSL-Zertifikats]]<br />
###[[SSL-Zertifikat von ready2host einbinden]]<br />
###[[Downgrade der Synology-Firmware]]<br />
###[[Mount Bind]]<br />
###[[Gemeinsames Homeverzeichnis für mehrere User]]<br />
###[[User-Apache alle Zugriffe via Browser loggen lassen|Logdatei für den Apache-Server erstellen]]<br />
###[[Anzahl der möglichen Terminalfenster erhöhen]]<br />
###[[ssh_mit_Zertifikaten_absichern|Secure Shell (ssh) Zugriff nur mit Schlüssel]]<br />
###[[Ssh_clients_blocken|PHP Script zum Logfile Scan nach ssh Fehlern]]<br />
###[[Automatisches Herunterfahren wenn kein Ping möglich]]<br />
###[[Statusmail von der Diskstation]]<br />
###[[Aktuellen Status twittern (CPU, RAM, Speicher)]]<br />
###[[DSM Zugriff auf IP-Ebene beschränken]]<br />
###[[Debian auf der DiskStation]]<br />
###[[Thumbnailerzeugung beschleunigen ]]<br />
###[[Cacti Monitoring auf Diskstation installieren]]<br />
###[[SSMTP: Mit Bordmitteln eine E-Mail über die Konsole versenden.]]<br />
##Firmware-Upgrades<br />
###[[Upgrade von DS101g+ auf DS107]]<br />
##Backup Modifikationen<br />
###[[Alternierendes Backup]]<br />
###[[Backup der MySQL-Datenbank über einen cronjob]]<br />
###[[Backup über RSync auf einen angeschlossenen Datenträger]]<br />
###[[rsnapshot|Backups mit Rsnapshot erstellen]]<br />
###[[Offsite Backup von DS auf WebDAV-Speicher (z.B. von 1und1, GMX, Web.de, Strato, iDisk (MobileMe))]]<br />
### [[Generationsbackup_mit_rsync_und_rsnapshot_im_Netzwerk|Generationsbackup über Netzwerk]]<br />
### [[Verschlüsseltes Backup]]<br />
### [[duplicity|duplicity (SSH/SCP, RSync, FTP, WebDAV, IMAP, Amazon S3 + optionale Verschlüsselung)]]<br />
### [[WebDAV-Speicher mithilfe von davfs2 direkt in die DS einbinden]]<br />
### [[Zeitgesteuerte Sicherung mittels wget inkl. Protokoll]]<br />
###[[CrashPlan Headless Client]]<br />
##Download Modifikationen<br />
###[[pyLoad]]<br />
###[[appleJuice]]<br />
##Multimedia Modifikationen<br />
###[[TwonkyVision]]<br />
###[[Twonky auf der DS211j installieren]]<br />
###[[Swisscenter_auf_Diskstation_installieren|Swisscenter installieren]]<br />
###[[Fuppes]]<br />
###[[PS3 Mediaserver]]<br />
###[[iTunes Playlists Importieren]]<br />
###[[Einbinden einer DS über NFS bei älteren Samsung-TVs]]<br />
##Datenträger Mods<br />
###[[Upgrade eines None-RAID Volume zu RAID1 / RAID5]]<br />
###[[Hartnäckigen USB-Stick mit ext2/3 formatieren und einbinden]]<br />
###[[Verschlüsselte_Container|Verschlüsselte Container auf der DS]]<br />
## <span id="mailstation">Mailstation Mods</span><br />
### Dovecot Server (imap/pop3)<br />
#### [[Externe_Accounts_abrufen|Externe Accounts mit getmail abrufen]]<br />
#### [[Virtuelle_E-Mail_Nutzer_mit_dovecot|Virtuelle User]]<br />
#### [[E-mails_filtern_mit_dovecot-sieve|Dovecot-sieve zum Filtern von E-Mails]]<br />
#### [[Abwesenheitsmeldungen_mit_dovecot-sieve|AutoReply]]<br />
### Postfix Server (smtp)<br />
#### [[SMTP_Dialog_Restriktionen|Client Restriktionen]]<br />
#### [[Virtuelle_E-Mail_Nutzer_mit_postfix|Virtuelle User]]<br />
#### [[Zusaetzliche_Ports_fuer_Postfix|Zusätzliche Ports]]<br />
#### [[Mail-Relay_mit_Postfix|SMTP Relay einrichten]]<br />
#### [[Postgrey_greylisting_fuer_postfix|Greylisting mit postgrey]]<br />
#### [[Postfwd_firewall_fuer_postfix|Postfix Firewall postfwd]]<br />
#### [[Abwesenheitsmeldungen_mit_postfix|Autoreply]]<br />
### Spamassassin<br />
#### [[Externe_Accounts_abrufen#SpamAssassin_installieren_und_einrichten|Spamassassin installieren]]<br />
#### [[Regeln_von_Spamassassin|Die Regeln des Spamassassin]]<br />
#### [[Postfix_und_Spamassassin|Spamfilterung mit Postfix und Spamassassin]]<br />
### Various<br />
#### [[Fehlersuche in der Mailstation]]<br />
#### [[Nuetzliche_Kommandos_fuer_Mailstation|Nützliche Kommandos der Mailstation]]<br />
#### [[Mailinglisten_mit_mailman|Mailing-Listen mit mailman]]<br />
#### [[Getmail_script|getmail nutzen mit Hibernate der Festplatten]]<br />
#### [[Virtuelle_E-Mail_User_erstellen|Script zur Erstellung von virtuellen Nutzern (E-Mail)]]<br />
#### [[Roundcube als Webmail-Client für externen IMAP-Account verwenden]]<br />
## Sonstige Modifikationen<br />
### [[USV Shutdown an Mac über Netzerk weiterleiten mit Growl]]<br />
### [[Installation der Online Teamlösung eGroupWare Community Edition]]<br />
### [[Verteiltes Rechnen mit der DiskStation anhand von distributed.net]]<br />
### [[Hits der Photostation zuruecksetzen]]<br />
### [[Boost Joomla Performance]]<br />
### [[Druckerverwaltung und Netzwerkdrucker einbinden]]<br />
###[[Wake on LAN (WOL) nur mit PHP, auch über das Internet]]<br />
###[[DdnsAutoLogin|ddnsAutoLogin]]<br />
###[[PXE|PXE - Preboot eXecution Environment]]<br />
###[[OpenVPN zu einer Easybox 904 xDSL: Konfiganpassung via Konsole]]<br />
###[[Wörterbücher für Volltextsuche mit PostgreSQL erstellen]]<br />
###[[Guacamole mit Docker|Guacamole mit Docker]]<br />
###[[Synapse mit Docker|Synapse mit Docker]]<br />
###[[TvHeadend mit Docker und Sundtek SkyTV Ultimate|TvHeadend mit Docker und Sundtek SkyTV Ultimate]]<br />
<br />
#[[IPKG]]<br />
##[[Apache IPKG|Alternativer Apache-Server]]<br />
##[[OpenVPN_auf_der_Diskstation|OpenVPN auf einer DS betreiben]]<br />
##[[Streamripper]]<br />
##[[Samba_via_ipkg_installieren|Alternativer Samba-Server]]<br />
##[[Icecast_via_ipkg_installieren|Icecast Server]]<br />
##[[vsFTP installieren|Alternativer FTP Dienst]]<br />
##[[SFTP_SCP|SFTP und SCP]]<br />
##[[SVN-Server installieren|SVN-Server]]<br />
##[[Gitolite|Git + Gitolite installieren]]<br />
##[[TFTP-Daemon einrichten und verwenden]]<br />
##[[Java|Java installieren]]<br />
##[[Xinetd_via_ipkg_installieren|xinetd Daemon via ipkg installieren]]<br />
###[[Xinetd_Beispiel_Eigener_Dienst|Eigener Dienst per xinetd]]<br />
##[[Syslog-ng via ipkg installieren]]<br />
##[[YouGrabber]]<br />
##[[Geschwindigkeitsmessung mit iperf]]<br />
##[[Installation torrentflux-b4rt]]<br />
##[[Bind9 DNS-Server]]<br />
##[[Streaming server (ggrab) für DBox2-Aufnahmen einrichten]]<br />
##[[USB Schaltbare Steckdosenleiste]]<br />
##[[Tinyproxy]]<br />
##[[DHCP-Server]]<br />
##[[MoinMoin-Wiki]]<br />
##[[Inetutils|Inetutils, ftp, tftp, rcp, rsh, ping, ping6]]<br />
##[[Nail|Mit Nail ein E-Mail verschicken]]<br />
##[[Nmap|Portscanner Nmap]]<br />
##[[Mpd|Music Player Daemon mpd]]<br />
#[[:Category:3rd-Party-Apps|3rd-party Applikationen]]<br />
##Konfiguration von 3rd-party Applikationen<br />
###Integration einer Hilfe in DSM<br />
####[[Integration einer Hilfe in DSM 5.1-|DSM 5.1 - 6.1]]<br />
<br />
<br />
#[[Veraltete Artikel der Kategorie „Modding Themen“]]<br />
##3rd-party Applikationen<br />
###Konfiguration von 3rd-party Applikationen<br />
####[[Aufbau eines Synology Packages (SPK)]]<br />
####[[Aufbau der Datei 'INFO']]<br />
####[[Aufbau der Datei 'application.cfg']]<br />
####[[Aufbau der Datei 'config']]<br />
####Integration einer Hilfe in DSM<br />
#####[[Integration einer Hilfe in DSM 3.x|DSM 3.x]]<br />
#####[[Integration einer Hilfe in DSM 4.0-5.0|DSM 4.0 - 5.0]]<br />
##[[Integration von 3rd-party Applikationen]]<br />
###[[phpMyAdmin als 3rd-Party Applikation|phpMyAdmin]]<br />
###[[phpPgAdmin als 3rd-Party Applikation|phpPgAdmin]]<br />
###[[phpSysInfo als 3rd-Party Applikation|phpSysInfo]]<br />
###[[aMule IP-Filter Download als 3rd-Party Applikation|aMule IP-Filter]]<br />
###[[eXtplorer als 3rd-party Applikation|eXtplorer (Alternative zur File Station)]]<br />
###[[3rd Party Application Manager]]<br />
###[[HttpWakeUp Wake-On-LAN Pakete per Webinterface verschicken]]<br />
###[[Rootkit Hunter als 3rd-Party Applikation|Rootkit Hunter]]<br />
###[[AdminTool]]<br />
###[[TeamSpeak 2 Server]]<br />
###[[TeamSpeak 3 Server]]<br />
###[[TeamSpeak 3 Server in Debian Chroot]]<br />
###[[FSyncMS|FSyncMS – ein Firefox Sync Server]]<br />
###[[Lesezeichen/Passwörter Synchronisation mit SyncPlaces für Firefox (über WebDAV auf der DS)]]<br />
###[[iStat Server]]<br />
### SqueezeCenter<br />
####[[SqueezeCenter-Existierende-MySQL-Instanz-verwenden|Bestehende Instanz verwenden]]<br />
###[[Minecraft-Server auf der Synology]]<br />
###[[SynoBox|SynoBox - ein Dropbox Client]]<br />
###[[AirSonos|AirSonos - per Airplay auf Sonos streamen]]<br />
###[[CoD2|Call of Duty 2 Server auf Synology]]<br />
##Kompilieren eigener Programme<br />
###[[Luadch]]<br />
###[[MediaInfo]]<br />
###[[bluetooth Treiber]]<br />
###[[sma-bluetooth]]<br />
##Hardware Modifikationen<br />
###[[DiskStation 209+ flüsterleise machen]]<br />
###[[DiskStation 106 automatisch einschalten]]<br />
###[[DiskStation 107 automatisch einschalten]]<br />
###[[DiskStation 211 automatisch einschalten]]<br />
###[[DiskStation 408 automatisch einschalten]]<br />
###[[DiskStation 106 WOL Wake-On-LAN Umbau]]<br />
|}</div>Itommeshttps://www.synology-wiki.de/index.php?title=Modifikationen&diff=7393Modifikationen2023-03-25T11:42:45Z<p>Itommes: Änderung 7389 von Itommes (Diskussion) rückgängig gemacht.</p>
<hr />
<div>[[Category:Portal]]<br />
{|width="100%" height="100%" border=0 cellpadding=5 cellspacing=7 style="border: 1px solid #c0c0c0;background-color:#e0e0e0"<br />
|style="background-color:#c0c0c0; border: 1px solid #a0a0a0; font-size:120%; font-weight: bold"|[[Modifikationen|Modding Themen]]<br />
|-<br />
|<br />
#[[Wichtige Informationen zum Modden der Synology Stations]]<br />
#[[Übersicht über verfügbare 3rd-Party-Apps aus unserer Community]]<br />
#Grundsätzliches zur Hard- und Software des Synology-Servers<br />
##[[Wie funktioniert ein Computer?]]<br />
##[[Platten, RAIDs und Dateisysteme]]<br />
##[[Überblick über Modifizierungen des Synology-Servers]]<br />
##[[Welchen Prozessortyp besitzt mein System?]]<br />
##[[Welche Performance besitzt mein System?]]<br />
##[[Arbeitsweise der Synology Stations]]<br />
##[[LEDs und Buttons]]<br />
##[[Viren auf dem Synology-Server?]]<br />
##[[Stromverbrauchswerte User]]<br />
#[[Die Kommandozeile]]<br />
##[[Grundlegende Befehle auf der Kommandozeile]]<br />
##[[Vergleich von Texteditoren]]<br />
###[[vi]]<br />
###[[vim]]<br />
###[[nano]]<br />
##[[less|Alternativer Pager less]]<br />
##[[Synology Toolset]]<br />
##[[Locale-UTF8|UTF-8–Kodierung einstellen]]<br />
##[[synogear: weitere Tools]]<br />
#[[Wo ist was im Linux-System]]<br />
##[[Dateien im /etc-Verzeichnis|/etc-Verzeichnis]]<br />
##[[Dateien im /dev-Verzeichnis|/dev-Verzeichnis]]<br />
##[[Dateien im /lib-Verzeichnis|/lib-Verzeichnis]]<br />
##[[Dateien im /tmp-Verzeichnis|/tmp-Verzeichnis]]<br />
##[[Dateien im /usr-Verzeichnis|/usr-Verzeichnis]]<br />
##[[Dateien im /var-Verzeichnis|/var-Verzeichnis]]<br />
##[[Dateien im /volume1-Verzeichnis|/volume1-Verzeichnis]]<br />
#[[Nicht unterstützte Konfigurationsänderungen]]<br />
##Systemmanagement<br />
###[[3rd_Party_Applications_absichern|3rd Party Applications vor unberechtigten Zugriffen schützen]]<br />
###[[Cron|Cron konfigurieren]]<br />
###[[Generierung eines eigenen SSL-Zertifikats]]<br />
###[[SSL-Zertifikat von ready2host einbinden]]<br />
###[[Downgrade der Synology-Firmware]]<br />
###[[Mount Bind]]<br />
###[[Gemeinsames Homeverzeichnis für mehrere User]]<br />
###[[User-Apache alle Zugriffe via Browser loggen lassen|Logdatei für den Apache-Server erstellen]]<br />
###[[Anzahl der möglichen Terminalfenster erhöhen]]<br />
###[[ssh_mit_Zertifikaten_absichern|Secure Shell (ssh) Zugriff nur mit Schlüssel]]<br />
###[[Ssh_clients_blocken|PHP Script zum Logfile Scan nach ssh Fehlern]]<br />
###[[Automatisches Herunterfahren wenn kein Ping möglich]]<br />
###[[Statusmail von der Diskstation]]<br />
###[[Aktuellen Status twittern (CPU, RAM, Speicher)]]<br />
###[[DSM Zugriff auf IP-Ebene beschränken]]<br />
###[[Debian auf der DiskStation]]<br />
###[[Thumbnailerzeugung beschleunigen ]]<br />
###[[Cacti Monitoring auf Diskstation installieren]]<br />
###[[SSMTP: Mit Bordmitteln eine E-Mail über die Konsole versenden.]]<br />
##Firmware-Upgrades<br />
###[[Upgrade von DS101g+ auf DS107]]<br />
##Backup Modifikationen<br />
###[[Alternierendes Backup]]<br />
###[[Backup der MySQL-Datenbank über einen cronjob]]<br />
###[[Backup über RSync auf einen angeschlossenen Datenträger]]<br />
###[[rsnapshot|Backups mit Rsnapshot erstellen]]<br />
###[[Offsite Backup von DS auf WebDAV-Speicher (z.B. von 1und1, GMX, Web.de, Strato, iDisk (MobileMe))]]<br />
### [[Generationsbackup_mit_rsync_und_rsnapshot_im_Netzwerk|Generationsbackup über Netzwerk]]<br />
### [[Verschlüsseltes Backup]]<br />
### [[duplicity|duplicity (SSH/SCP, RSync, FTP, WebDAV, IMAP, Amazon S3 + optionale Verschlüsselung)]]<br />
### [[WebDAV-Speicher mithilfe von davfs2 direkt in die DS einbinden]]<br />
### [[Zeitgesteuerte Sicherung mittels wget inkl. Protokoll]]<br />
###[[CrashPlan Headless Client]]<br />
##Download Modifikationen<br />
###[[pyLoad]]<br />
###[[appleJuice]]<br />
##Multimedia Modifikationen<br />
###[[TwonkyVision]]<br />
###[[Twonky auf der DS211j installieren]]<br />
###[[Swisscenter_auf_Diskstation_installieren|Swisscenter installieren]]<br />
###[[Fuppes]]<br />
###[[PS3 Mediaserver]]<br />
###[[iTunes Playlists Importieren]]<br />
###[[Einbinden einer DS über NFS bei älteren Samsung-TVs]]<br />
##Datenträger Mods<br />
###[[Upgrade eines None-RAID Volume zu RAID1 / RAID5]]<br />
###[[Hartnäckigen USB-Stick mit ext2/3 formatieren und einbinden]]<br />
###[[Verschlüsselte_Container|Verschlüsselte Container auf der DS]]<br />
## <span id="mailstation">Mailstation Mods</span><br />
### Dovecot Server (imap/pop3)<br />
#### [[Externe_Accounts_abrufen|Externe Accounts mit getmail abrufen]]<br />
#### [[Virtuelle_E-Mail_Nutzer_mit_dovecot|Virtuelle User]]<br />
#### [[E-mails_filtern_mit_dovecot-sieve|Dovecot-sieve zum Filtern von E-Mails]]<br />
#### [[Abwesenheitsmeldungen_mit_dovecot-sieve|AutoReply]]<br />
### Postfix Server (smtp)<br />
#### [[SMTP_Dialog_Restriktionen|Client Restriktionen]]<br />
#### [[Virtuelle_E-Mail_Nutzer_mit_postfix|Virtuelle User]]<br />
#### [[Zusaetzliche_Ports_fuer_Postfix|Zusätzliche Ports]]<br />
#### [[Mail-Relay_mit_Postfix|SMTP Relay einrichten]]<br />
#### [[Postgrey_greylisting_fuer_postfix|Greylisting mit postgrey]]<br />
#### [[Postfwd_firewall_fuer_postfix|Postfix Firewall postfwd]]<br />
#### [[Abwesenheitsmeldungen_mit_postfix|Autoreply]]<br />
### Spamassassin<br />
#### [[Externe_Accounts_abrufen#SpamAssassin_installieren_und_einrichten|Spamassassin installieren]]<br />
#### [[Regeln_von_Spamassassin|Die Regeln des Spamassassin]]<br />
#### [[Postfix_und_Spamassassin|Spamfilterung mit Postfix und Spamassassin]]<br />
### Various<br />
#### [[Fehlersuche in der Mailstation]]<br />
#### [[Nuetzliche_Kommandos_fuer_Mailstation|Nützliche Kommandos der Mailstation]]<br />
#### [[Mailinglisten_mit_mailman|Mailing-Listen mit mailman]]<br />
#### [[Getmail_script|getmail nutzen mit Hibernate der Festplatten]]<br />
#### [[Virtuelle_E-Mail_User_erstellen|Script zur Erstellung von virtuellen Nutzern (E-Mail)]]<br />
#### [[Roundcube als Webmail-Client für externen IMAP-Account verwenden]]<br />
## Sonstige Modifikationen<br />
### [[USV Shutdown an Mac über Netzerk weiterleiten mit Growl]]<br />
### [[Installation der Online Teamlösung eGroupWare Community Edition]]<br />
### [[Verteiltes Rechnen mit der DiskStation anhand von distributed.net]]<br />
### [[Hits der Photostation zuruecksetzen]]<br />
### [[Boost Joomla Performance]]<br />
### [[Druckerverwaltung und Netzwerkdrucker einbinden]]<br />
###[[Wake on LAN (WOL) nur mit PHP, auch über das Internet]]<br />
###[[DdnsAutoLogin|ddnsAutoLogin]]<br />
###[[PXE|PXE - Preboot eXecution Environment]]<br />
###[[OpenVPN zu einer Easybox 904 xDSL: Konfiganpassung via Konsole]]<br />
###[[Wörterbücher für Volltextsuche mit PostgreSQL erstellen]]<br />
###[[Guacamole mit Docker|Guacamole mit Docker]]<br />
###[[Synapse mit Docker|Synapse mit Docker]]<br />
###[[TvHeadend mit Docker und Sundtek SkyTV Ultimate|TvHeadend mit Docker und Sundtek SkyTV Ultimate]]<br />
<br />
#[[IPKG]]<br />
##[[Apache IPKG|Alternativer Apache-Server]]<br />
##[[OpenVPN_auf_der_Diskstation|OpenVPN auf einer DS betreiben]]<br />
##[[Streamripper]]<br />
##[[Samba_via_ipkg_installieren|Alternativer Samba-Server]]<br />
##[[Icecast_via_ipkg_installieren|Icecast Server]]<br />
##[[vsFTP installieren|Alternativer FTP Dienst]]<br />
##[[SFTP_SCP|SFTP und SCP]]<br />
##[[SVN-Server installieren|SVN-Server]]<br />
##[[Gitolite|Git + Gitolite installieren]]<br />
##[[TFTP-Daemon einrichten und verwenden]]<br />
##[[Java|Java installieren]]<br />
##[[Xinetd_via_ipkg_installieren|xinetd Daemon via ipkg installieren]]<br />
###[[Xinetd_Beispiel_Eigener_Dienst|Eigener Dienst per xinetd]]<br />
##[[Syslog-ng via ipkg installieren]]<br />
##[[YouGrabber]]<br />
##[[Geschwindigkeitsmessung mit iperf]]<br />
##[[Installation torrentflux-b4rt]]<br />
##[[Bind9 DNS-Server]]<br />
##[[Streaming server (ggrab) für DBox2-Aufnahmen einrichten]]<br />
##[[USB Schaltbare Steckdosenleiste]]<br />
##[[Tinyproxy]]<br />
##[[DHCP-Server]]<br />
##[[MoinMoin-Wiki]]<br />
##[[Inetutils|Inetutils, ftp, tftp, rcp, rsh, ping, ping6]]<br />
##[[Nail|Mit Nail ein E-Mail verschicken]]<br />
##[[Nmap|Portscanner Nmap]]<br />
##[[Mpd|Music Player Daemon mpd]]<br />
#[[:Category:3rd-Party-Apps|3rd-party Applikationen]]<br />
##Konfiguration von 3rd-party Applikationen<br />
###Integration einer Hilfe in DSM<br />
####[[Integration einer Hilfe in DSM 5.1-|DSM 5.1 - 6.1]]<br />
<br />
<br />
#[[Veraltete Artikel der Kategorie „Modding Themen“]]<br />
<br />
#[[Veraltete Artikel der Kategorie „IPKG“]]<br />
##3rd-party Applikationen<br />
###Konfiguration von 3rd-party Applikationen<br />
####[[Aufbau eines Synology Packages (SPK)]]<br />
####[[Aufbau der Datei 'INFO']]<br />
####[[Aufbau der Datei 'application.cfg']]<br />
####[[Aufbau der Datei 'config']]<br />
####Integration einer Hilfe in DSM<br />
#####[[Integration einer Hilfe in DSM 3.x|DSM 3.x]]<br />
#####[[Integration einer Hilfe in DSM 4.0-5.0|DSM 4.0 - 5.0]]<br />
##[[Integration von 3rd-party Applikationen]]<br />
###[[phpMyAdmin als 3rd-Party Applikation|phpMyAdmin]]<br />
###[[phpPgAdmin als 3rd-Party Applikation|phpPgAdmin]]<br />
###[[phpSysInfo als 3rd-Party Applikation|phpSysInfo]]<br />
###[[aMule IP-Filter Download als 3rd-Party Applikation|aMule IP-Filter]]<br />
###[[eXtplorer als 3rd-party Applikation|eXtplorer (Alternative zur File Station)]]<br />
###[[3rd Party Application Manager]]<br />
###[[HttpWakeUp Wake-On-LAN Pakete per Webinterface verschicken]]<br />
###[[Rootkit Hunter als 3rd-Party Applikation|Rootkit Hunter]]<br />
###[[AdminTool]]<br />
###[[TeamSpeak 2 Server]]<br />
###[[TeamSpeak 3 Server]]<br />
###[[TeamSpeak 3 Server in Debian Chroot]]<br />
###[[FSyncMS|FSyncMS – ein Firefox Sync Server]]<br />
###[[Lesezeichen/Passwörter Synchronisation mit SyncPlaces für Firefox (über WebDAV auf der DS)]]<br />
###[[iStat Server]]<br />
### SqueezeCenter<br />
####[[SqueezeCenter-Existierende-MySQL-Instanz-verwenden|Bestehende Instanz verwenden]]<br />
###[[Minecraft-Server auf der Synology]]<br />
###[[SynoBox|SynoBox - ein Dropbox Client]]<br />
###[[AirSonos|AirSonos - per Airplay auf Sonos streamen]]<br />
###[[CoD2|Call of Duty 2 Server auf Synology]]<br />
##Kompilieren eigener Programme<br />
###[[Luadch]]<br />
###[[MediaInfo]]<br />
###[[bluetooth Treiber]]<br />
###[[sma-bluetooth]]<br />
##Hardware Modifikationen<br />
###[[DiskStation 209+ flüsterleise machen]]<br />
###[[DiskStation 106 automatisch einschalten]]<br />
###[[DiskStation 107 automatisch einschalten]]<br />
###[[DiskStation 211 automatisch einschalten]]<br />
###[[DiskStation 408 automatisch einschalten]]<br />
###[[DiskStation 106 WOL Wake-On-LAN Umbau]]<br />
|}</div>Itommeshttps://www.synology-wiki.de/index.php?title=Modifikationen&diff=7392Modifikationen2023-03-25T11:37:21Z<p>Itommes: Änderung 7390 von Itommes (Diskussion) rückgängig gemacht.</p>
<hr />
<div>[[Category:Portal]]<br />
{|width="100%" height="100%" border=0 cellpadding=5 cellspacing=7 style="border: 1px solid #c0c0c0;background-color:#e0e0e0"<br />
|style="background-color:#c0c0c0; border: 1px solid #a0a0a0; font-size:120%; font-weight: bold"|[[Modifikationen|Modding Themen]]<br />
|-<br />
|<br />
#[[Wichtige Informationen zum Modden der Synology Stations]]<br />
#[[Übersicht über verfügbare 3rd-Party-Apps aus unserer Community]]<br />
#Grundsätzliches zur Hard- und Software des Synology-Servers<br />
##[[Wie funktioniert ein Computer?]]<br />
##[[Platten, RAIDs und Dateisysteme]]<br />
##[[Überblick über Modifizierungen des Synology-Servers]]<br />
##[[Welchen Prozessortyp besitzt mein System?]]<br />
##[[Welche Performance besitzt mein System?]]<br />
##[[Arbeitsweise der Synology Stations]]<br />
##[[LEDs und Buttons]]<br />
##[[Viren auf dem Synology-Server?]]<br />
##[[Stromverbrauchswerte User]]<br />
#[[Die Kommandozeile]]<br />
##[[Grundlegende Befehle auf der Kommandozeile]]<br />
##[[Vergleich von Texteditoren]]<br />
###[[vi]]<br />
###[[vim]]<br />
###[[nano]]<br />
##[[less|Alternativer Pager less]]<br />
##[[Synology Toolset]]<br />
##[[Locale-UTF8|UTF-8–Kodierung einstellen]]<br />
##[[synogear: weitere Tools]]<br />
#[[Wo ist was im Linux-System]]<br />
##[[Dateien im /etc-Verzeichnis|/etc-Verzeichnis]]<br />
##[[Dateien im /dev-Verzeichnis|/dev-Verzeichnis]]<br />
##[[Dateien im /lib-Verzeichnis|/lib-Verzeichnis]]<br />
##[[Dateien im /tmp-Verzeichnis|/tmp-Verzeichnis]]<br />
##[[Dateien im /usr-Verzeichnis|/usr-Verzeichnis]]<br />
##[[Dateien im /var-Verzeichnis|/var-Verzeichnis]]<br />
##[[Dateien im /volume1-Verzeichnis|/volume1-Verzeichnis]]<br />
#[[Nicht unterstützte Konfigurationsänderungen]]<br />
##Systemmanagement<br />
###[[3rd_Party_Applications_absichern|3rd Party Applications vor unberechtigten Zugriffen schützen]]<br />
###[[Cron|Cron konfigurieren]]<br />
###[[Generierung eines eigenen SSL-Zertifikats]]<br />
###[[SSL-Zertifikat von ready2host einbinden]]<br />
###[[Downgrade der Synology-Firmware]]<br />
###[[Mount Bind]]<br />
###[[Gemeinsames Homeverzeichnis für mehrere User]]<br />
###[[User-Apache alle Zugriffe via Browser loggen lassen|Logdatei für den Apache-Server erstellen]]<br />
###[[Anzahl der möglichen Terminalfenster erhöhen]]<br />
###[[ssh_mit_Zertifikaten_absichern|Secure Shell (ssh) Zugriff nur mit Schlüssel]]<br />
###[[Ssh_clients_blocken|PHP Script zum Logfile Scan nach ssh Fehlern]]<br />
###[[Automatisches Herunterfahren wenn kein Ping möglich]]<br />
###[[Statusmail von der Diskstation]]<br />
###[[Aktuellen Status twittern (CPU, RAM, Speicher)]]<br />
###[[DSM Zugriff auf IP-Ebene beschränken]]<br />
###[[Debian auf der DiskStation]]<br />
###[[Thumbnailerzeugung beschleunigen ]]<br />
###[[Cacti Monitoring auf Diskstation installieren]]<br />
###[[SSMTP: Mit Bordmitteln eine E-Mail über die Konsole versenden.]]<br />
##Firmware-Upgrades<br />
###[[Upgrade von DS101g+ auf DS107]]<br />
##Backup Modifikationen<br />
###[[Alternierendes Backup]]<br />
###[[Backup der MySQL-Datenbank über einen cronjob]]<br />
###[[Backup über RSync auf einen angeschlossenen Datenträger]]<br />
###[[rsnapshot|Backups mit Rsnapshot erstellen]]<br />
###[[Offsite Backup von DS auf WebDAV-Speicher (z.B. von 1und1, GMX, Web.de, Strato, iDisk (MobileMe))]]<br />
### [[Generationsbackup_mit_rsync_und_rsnapshot_im_Netzwerk|Generationsbackup über Netzwerk]]<br />
### [[Verschlüsseltes Backup]]<br />
### [[duplicity|duplicity (SSH/SCP, RSync, FTP, WebDAV, IMAP, Amazon S3 + optionale Verschlüsselung)]]<br />
### [[WebDAV-Speicher mithilfe von davfs2 direkt in die DS einbinden]]<br />
### [[Zeitgesteuerte Sicherung mittels wget inkl. Protokoll]]<br />
###[[CrashPlan Headless Client]]<br />
##Download Modifikationen<br />
###[[pyLoad]]<br />
###[[appleJuice]]<br />
##Multimedia Modifikationen<br />
###[[TwonkyVision]]<br />
###[[Twonky auf der DS211j installieren]]<br />
###[[Swisscenter_auf_Diskstation_installieren|Swisscenter installieren]]<br />
###[[Fuppes]]<br />
###[[PS3 Mediaserver]]<br />
###[[iTunes Playlists Importieren]]<br />
###[[Einbinden einer DS über NFS bei älteren Samsung-TVs]]<br />
##Datenträger Mods<br />
###[[Upgrade eines None-RAID Volume zu RAID1 / RAID5]]<br />
###[[Hartnäckigen USB-Stick mit ext2/3 formatieren und einbinden]]<br />
###[[Verschlüsselte_Container|Verschlüsselte Container auf der DS]]<br />
## <span id="mailstation">Mailstation Mods</span><br />
### Dovecot Server (imap/pop3)<br />
#### [[Externe_Accounts_abrufen|Externe Accounts mit getmail abrufen]]<br />
#### [[Virtuelle_E-Mail_Nutzer_mit_dovecot|Virtuelle User]]<br />
#### [[E-mails_filtern_mit_dovecot-sieve|Dovecot-sieve zum Filtern von E-Mails]]<br />
#### [[Abwesenheitsmeldungen_mit_dovecot-sieve|AutoReply]]<br />
### Postfix Server (smtp)<br />
#### [[SMTP_Dialog_Restriktionen|Client Restriktionen]]<br />
#### [[Virtuelle_E-Mail_Nutzer_mit_postfix|Virtuelle User]]<br />
#### [[Zusaetzliche_Ports_fuer_Postfix|Zusätzliche Ports]]<br />
#### [[Mail-Relay_mit_Postfix|SMTP Relay einrichten]]<br />
#### [[Postgrey_greylisting_fuer_postfix|Greylisting mit postgrey]]<br />
#### [[Postfwd_firewall_fuer_postfix|Postfix Firewall postfwd]]<br />
#### [[Abwesenheitsmeldungen_mit_postfix|Autoreply]]<br />
### Spamassassin<br />
#### [[Externe_Accounts_abrufen#SpamAssassin_installieren_und_einrichten|Spamassassin installieren]]<br />
#### [[Regeln_von_Spamassassin|Die Regeln des Spamassassin]]<br />
#### [[Postfix_und_Spamassassin|Spamfilterung mit Postfix und Spamassassin]]<br />
### Various<br />
#### [[Fehlersuche in der Mailstation]]<br />
#### [[Nuetzliche_Kommandos_fuer_Mailstation|Nützliche Kommandos der Mailstation]]<br />
#### [[Mailinglisten_mit_mailman|Mailing-Listen mit mailman]]<br />
#### [[Getmail_script|getmail nutzen mit Hibernate der Festplatten]]<br />
#### [[Virtuelle_E-Mail_User_erstellen|Script zur Erstellung von virtuellen Nutzern (E-Mail)]]<br />
#### [[Roundcube als Webmail-Client für externen IMAP-Account verwenden]]<br />
## Sonstige Modifikationen<br />
### [[USV Shutdown an Mac über Netzerk weiterleiten mit Growl]]<br />
### [[Installation der Online Teamlösung eGroupWare Community Edition]]<br />
### [[Verteiltes Rechnen mit der DiskStation anhand von distributed.net]]<br />
### [[Hits der Photostation zuruecksetzen]]<br />
### [[Boost Joomla Performance]]<br />
### [[Druckerverwaltung und Netzwerkdrucker einbinden]]<br />
###[[Wake on LAN (WOL) nur mit PHP, auch über das Internet]]<br />
###[[DdnsAutoLogin|ddnsAutoLogin]]<br />
###[[PXE|PXE - Preboot eXecution Environment]]<br />
###[[OpenVPN zu einer Easybox 904 xDSL: Konfiganpassung via Konsole]]<br />
###[[Wörterbücher für Volltextsuche mit PostgreSQL erstellen]]<br />
###[[Guacamole mit Docker|Guacamole mit Docker]]<br />
###[[Synapse mit Docker|Synapse mit Docker]]<br />
###[[TvHeadend mit Docker und Sundtek SkyTV Ultimate|TvHeadend mit Docker und Sundtek SkyTV Ultimate]]<br />
<br />
#[[IPKG]]<br />
##[[Apache IPKG|Alternativer Apache-Server]]<br />
##[[OpenVPN_auf_der_Diskstation|OpenVPN auf einer DS betreiben]]<br />
##[[Streamripper]]<br />
##[[Samba_via_ipkg_installieren|Alternativer Samba-Server]]<br />
##[[Icecast_via_ipkg_installieren|Icecast Server]]<br />
##[[vsFTP installieren|Alternativer FTP Dienst]]<br />
##[[SFTP_SCP|SFTP und SCP]]<br />
##[[SVN-Server installieren|SVN-Server]]<br />
##[[Gitolite|Git + Gitolite installieren]]<br />
##[[TFTP-Daemon einrichten und verwenden]]<br />
##[[Java|Java installieren]]<br />
##[[Xinetd_via_ipkg_installieren|xinetd Daemon via ipkg installieren]]<br />
###[[Xinetd_Beispiel_Eigener_Dienst|Eigener Dienst per xinetd]]<br />
##[[Syslog-ng via ipkg installieren]]<br />
##[[YouGrabber]]<br />
##[[Geschwindigkeitsmessung mit iperf]]<br />
##[[Installation torrentflux-b4rt]]<br />
##[[Bind9 DNS-Server]]<br />
##[[Streaming server (ggrab) für DBox2-Aufnahmen einrichten]]<br />
##[[USB Schaltbare Steckdosenleiste]]<br />
##[[Tinyproxy]]<br />
##[[DHCP-Server]]<br />
##[[MoinMoin-Wiki]]<br />
##[[Inetutils|Inetutils, ftp, tftp, rcp, rsh, ping, ping6]]<br />
##[[Nail|Mit Nail ein E-Mail verschicken]]<br />
##[[Nmap|Portscanner Nmap]]<br />
##[[Mpd|Music Player Daemon mpd]]<br />
#[[:Category:3rd-Party-Apps|3rd-party Applikationen]]<br />
##Konfiguration von 3rd-party Applikationen<br />
###Integration einer Hilfe in DSM<br />
####[[Integration einer Hilfe in DSM 5.1-|DSM 5.1 - 6.1]]<br />
<br />
<br />
#Veraltete Artikel der Kategorie „Modding Themen“<br />
<br />
#Veraltete Artikel der Kategorie „IPKG“<br />
##3rd-party Applikationen<br />
###Konfiguration von 3rd-party Applikationen<br />
####[[Aufbau eines Synology Packages (SPK)]]<br />
####[[Aufbau der Datei 'INFO']]<br />
####[[Aufbau der Datei 'application.cfg']]<br />
####[[Aufbau der Datei 'config']]<br />
####Integration einer Hilfe in DSM<br />
#####[[Integration einer Hilfe in DSM 3.x|DSM 3.x]]<br />
#####[[Integration einer Hilfe in DSM 4.0-5.0|DSM 4.0 - 5.0]]<br />
##[[Integration von 3rd-party Applikationen]]<br />
###[[phpMyAdmin als 3rd-Party Applikation|phpMyAdmin]]<br />
###[[phpPgAdmin als 3rd-Party Applikation|phpPgAdmin]]<br />
###[[phpSysInfo als 3rd-Party Applikation|phpSysInfo]]<br />
###[[aMule IP-Filter Download als 3rd-Party Applikation|aMule IP-Filter]]<br />
###[[eXtplorer als 3rd-party Applikation|eXtplorer (Alternative zur File Station)]]<br />
###[[3rd Party Application Manager]]<br />
###[[HttpWakeUp Wake-On-LAN Pakete per Webinterface verschicken]]<br />
###[[Rootkit Hunter als 3rd-Party Applikation|Rootkit Hunter]]<br />
###[[AdminTool]]<br />
###[[TeamSpeak 2 Server]]<br />
###[[TeamSpeak 3 Server]]<br />
###[[TeamSpeak 3 Server in Debian Chroot]]<br />
###[[FSyncMS|FSyncMS – ein Firefox Sync Server]]<br />
###[[Lesezeichen/Passwörter Synchronisation mit SyncPlaces für Firefox (über WebDAV auf der DS)]]<br />
###[[iStat Server]]<br />
### SqueezeCenter<br />
####[[SqueezeCenter-Existierende-MySQL-Instanz-verwenden|Bestehende Instanz verwenden]]<br />
###[[Minecraft-Server auf der Synology]]<br />
###[[SynoBox|SynoBox - ein Dropbox Client]]<br />
###[[AirSonos|AirSonos - per Airplay auf Sonos streamen]]<br />
###[[CoD2|Call of Duty 2 Server auf Synology]]<br />
##Kompilieren eigener Programme<br />
###[[Luadch]]<br />
###[[MediaInfo]]<br />
###[[bluetooth Treiber]]<br />
###[[sma-bluetooth]]<br />
##Hardware Modifikationen<br />
###[[DiskStation 209+ flüsterleise machen]]<br />
###[[DiskStation 106 automatisch einschalten]]<br />
###[[DiskStation 107 automatisch einschalten]]<br />
###[[DiskStation 211 automatisch einschalten]]<br />
###[[DiskStation 408 automatisch einschalten]]<br />
###[[DiskStation 106 WOL Wake-On-LAN Umbau]]<br />
|}</div>Itommeshttps://www.synology-wiki.de/index.php?title=Inhalt&diff=7391Inhalt2023-03-25T10:51:37Z<p>Itommes: </p>
<hr />
<div>[[Category:Portal]]<br />
{|width="100%" border=0 cellpadding=5 cellspacing=7 style="border: 1px solid #cee0f2;background-color:#f5faff"<br />
|style="background-color:#cee0f2; border: 1px solid #a3b1bf; font-size:120%; font-weight: bold"|[[Inhalt|Allgemeine Themen]]<br />
|-<br />
|<br />
#Vorbereitung vor der ersten Installation<br />
##[[Planung der Festplatten und Raidlevel]]<br />
##[[Vorbereitung der Festplatten]]<br />
##[https://www.synology.com/de-de/compatibility Synology Kompatibilitätslisten (Link auf www.synology.com)]<br />
##[http://forum.synology.com/wiki/index.php/User_Reported_Compatible/Incompatible_Hardware/Software Anwender Kompatibilitätslisten (Link ins internationale Synology-Wiki)]<br />
##[[Zusätzliche Kompatibilitätslisten]]<br />
##[[Problembehandlung Performance Probleme bei Festplatten mit 4 KByte Sektoren]]<br />
#Installation des Synology-Servers<br />
##[[Problembehandlung bei der Erstinstallation der Firmware]]<br />
##[[Problembehandlung beim Firmware-Update]]<br />
#Anleitungen<br />
##[[Zugriff auf die Synology-Dienste über Internet]]<br />
###[[Grundsätzliches zum Thema Netzwerksicherheit]]<br />
####[[Viren auf dem Synology-Server?]]<br />
###[[Zugriff auf die Synology-Dienste über Internet#Konfiguration des Routers|Konfiguration des Routers]]<br />
###[[Zugriff auf die Synology-Dienste über Internet#DynDNS|DynDNS]]<br />
###[[Zugriff auf die Synology-Dienste über Internet#Liste der verwendeten Ports|Liste der verwendeten Ports]]<br />
##[[Datenzugriff über Internet]]<br />
###[[Datenzugriff über Internet#Synology File Station|Synology File Station]]<br />
###[[Datenzugriff über Internet#FTP|FTP]]<br />
##[[Netzwerkzugriff auf iSCSI-Ressourcen]]<br />
##[[:Category:Backup and Recovery|Sichern und Wiederherstellen]]<br />
###[[Ein Backup mit dem Synology Data Replicator 3 einrichten]]<br />
###[[Erstellen eines Backups mittels Apple Timemachine]]<br />
####[[Defektes TimeMachine-Backup / Sparsebundle reparieren]]<br />
###[[Den Synology-Server auf eine externe USB-Festplatte sichern]]<br />
###[[Den Synology-Server auf einen anderen Synology-Server oder einen RSync-kompatiblen Server sichern]]<br />
###[[Windows-PCs mit 'robocopy' sichern]]<br />
###[[Dateibasierte RSync-Datensicherung auf externen Datenträger oder RSync kompatiblen Server]]<br />
##[[Einrichten einer Webseite mit dem Synology Server]]<br />
###[[Aktivieren von Web Station oder MySQL]]<br />
###[[Einrichten von mehreren Webseiten und Subdomains]]<br />
###[[Scannen durch Suchmaschinen verhindern]]<br />
###[[Zugriffsschutz für Webseiten einrichten]]<br />
###[[Verwalten der MySQL-Datenbank]]<br />
###[[Backup der MySQL-Datenbank mit phpmyAdmin]]<br />
###[[Programmieren mit PHP]]<br />
###[[PHP konfigurieren]]<br />
##Benutzung des Druckservers<br />
###[[Installation eines USB-Druckers, Mac Computer|Macintosh Computer]]<br />
###[[Installation eines USB-Druckers, Windows Computer|Windows Computer]]<br />
###[[Installation eines USB-Druckers, Linux|Linux]]<br />
##Nutzung der Synology Station als Fileserver<br />
###[[Einrichtung der Freigabeordner, Benutzer und Rechte]]<br />
###[[NFS-Konfiguration]]<br />
###[[Zuordnung von freigegebenen Ordnern zwischen verschiedenen Synology NAS]]<br />
###[[Zuordnung von Netzlaufwerken unter Mac OS X]]<br />
####[[Zuordnung von Netzlaufwerken unter Mac OS X#Protokolle unter Mac OS X|Protokolle unter Mac OS X]]<br />
####[[Zuordnung von Netzlaufwerken unter Mac OS X#Zuordnung von Netzwerklaufwerken mit automount|Zuordnung von Netzwerklaufwerken mit automount]]<br />
####[[Zuordnung von Netzlaufwerken unter Mac OS X#Zuordnung von Netzlaufwerken unter MAC OS 10.5.3 mit dem Automator|Zuordnung von Netzlaufwerken unter MAC OS 10.5 mit dem Automator]]<br />
###[[Offline-Ordner mit Vista]]<br />
###[[Übertragungsraten]]<br />
##Internet-Dienste<br />
###[[Apache Webserver|Dienste auf dem Apache Webserver]]<br />
####[[Subdomain via SSL erreichen|Eine Subdomain via SSL erreichbar machen]]<br />
####[[WebDAV|WebDAV für den user-Apachen]]<br />
###[[Apache Erweiterungen]]<br />
###[[Fotos über die Photo Station zugänglich machen|Photo Station]]<br />
###*[[Photo Station CSS-Benutzeranpassung|CSS-Benutzeranpassung]]<br />
###[[Verwendung des Blogs|Blog]]<br />
###[[Nutzung der Audio Station|Audio Station]]<br />
###[[Nutzung der Surveillance Station|Surveillance Station]]<br />
###[[Nutzung der Download Station|Download Station]]<br />
###*[[Firefox Plugins für Download Station|Firefox Plugins]]<br />
###Mailstation<br />
####[[Nutzung der Mail Station|Mail Station]]<br />
####[[Mailstation-de-anleitung|Mailstation Guide]]<br />
####[[Mail Station mit eigener Domain]]<br />
####[[Vorteile_und_Nachteile_der_Mail_Station|Vor- und Nachteile der Mail Station]]<br />
###Zarafa<br />
####[[Was ist Zarafa|Zarafa Die Idee dahinter]]<br />
####[[Zarafa Installation Anleitung|Anleitung (Zarafa Installation)]]<br />
####[[Offzielle Ressourcen|Offizielle Webseiten]]<br />
####[[Links und verschiedenes|Weblinks]]<br />
###[[Übersicht über weitere Webanwendungen]]<br />
###*[[Letodms|Dokumenten-Management-System (LetoDMS)]]<br />
###*[[Seeddms|Dokumenten-Management-System (Schnellinstallation SeedDMS)]]<br />
###*[[Tiny Tiny RSS|Serverbasierter Feedreader (Tiny Tiny RSS)]]<br />
###*[[CalDAV|CalDAV-Server im DSM]]<br />
###Embedding von Audio und Video in bestehende Internetseiten<br />
####[[Unter Benutzung der in der DSM integrierten Photostation|Mit der Photostation]]<br />
####[[Unter Benutzung eines externen Players - Hier mit Joomla|Mit externem Player]]<br />
##Multimedia-Dienste<br />
###[[Problembehebung DLNA-Server (Index)]]<br />
###iTunes<br />
####[[Nutzung des iTunes Media Servers|iTunes Server]]<br />
####[[Export der iTunes-Mediathek auf die DS]]<br />
##Datensicherheit<br />
###[[Verschlüsselung gemeinsamer Ordner]]<br />
#System-Wartung<br />
##[[Durchführung eines Reset am Gehäuse]]<br />
##[[Reparatur eines Raid-Volumes]]<br />
##[[Hibernation: Dinge, die den Disk-Spin-Down betreffen]]<br />
##Datenrettung<br />
###[[Datenrettungstools]]<br />
###[[Datenrettung von Raid-Systemen unter Linux]]<br />
###[[Auslesen von Daten auf einem PC]]<br />
###[[Wiederherstellen verschlüsselter Ordner]]<br />
#Weitere Informationen<br />
##[[Synology DiskStation - Kleiner Guide]]<br />
##[[Migration zwischen verschiedenen Diskstations]]<br />
##[[Liste von unterstützten Multimedia-Formaten]]<br />
##[[Versionsnummern der installierten Programme]]<br />
##[[Mailstation Links|Links für die Mailstation]]<br />
##[[Paketzentrum Quellen|SPK Quellen für das DSM Paketzentrum]]<br />
<br />
<br />
#Veraltete Artikel der Kategorie „Allgemeine Themen“<br />
|}</div>Itommeshttps://www.synology-wiki.de/index.php?title=Modifikationen&diff=7390Modifikationen2023-03-25T10:50:50Z<p>Itommes: </p>
<hr />
<div>[[Category:Portal]]<br />
{|width="100%" height="100%" border=0 cellpadding=5 cellspacing=7 style="border: 1px solid #c0c0c0;background-color:#e0e0e0"<br />
|style="background-color:#c0c0c0; border: 1px solid #a0a0a0; font-size:120%; font-weight: bold"|[[Modifikationen|Modding Themen]]<br />
|-<br />
|<br />
#[[Wichtige Informationen zum Modden der Synology Stations]]<br />
#[[Übersicht über verfügbare 3rd-Party-Apps aus unserer Community]]<br />
#Grundsätzliches zur Hard- und Software des Synology-Servers<br />
##[[Wie funktioniert ein Computer?]]<br />
##[[Platten, RAIDs und Dateisysteme]]<br />
##[[Überblick über Modifizierungen des Synology-Servers]]<br />
##[[Welchen Prozessortyp besitzt mein System?]]<br />
##[[Welche Performance besitzt mein System?]]<br />
##[[Arbeitsweise der Synology Stations]]<br />
##[[LEDs und Buttons]]<br />
##[[Viren auf dem Synology-Server?]]<br />
##[[Stromverbrauchswerte User]]<br />
#[[Die Kommandozeile]]<br />
##[[Grundlegende Befehle auf der Kommandozeile]]<br />
##[[Vergleich von Texteditoren]]<br />
###[[vi]]<br />
###[[vim]]<br />
###[[nano]]<br />
##[[less|Alternativer Pager less]]<br />
##[[Synology Toolset]]<br />
##[[Locale-UTF8|UTF-8–Kodierung einstellen]]<br />
##[[synogear: weitere Tools]]<br />
#[[Wo ist was im Linux-System]]<br />
##[[Dateien im /etc-Verzeichnis|/etc-Verzeichnis]]<br />
##[[Dateien im /dev-Verzeichnis|/dev-Verzeichnis]]<br />
##[[Dateien im /lib-Verzeichnis|/lib-Verzeichnis]]<br />
##[[Dateien im /tmp-Verzeichnis|/tmp-Verzeichnis]]<br />
##[[Dateien im /usr-Verzeichnis|/usr-Verzeichnis]]<br />
##[[Dateien im /var-Verzeichnis|/var-Verzeichnis]]<br />
##[[Dateien im /volume1-Verzeichnis|/volume1-Verzeichnis]]<br />
#[[Nicht unterstützte Konfigurationsänderungen]]<br />
##Systemmanagement<br />
###[[3rd_Party_Applications_absichern|3rd Party Applications vor unberechtigten Zugriffen schützen]]<br />
###[[Cron|Cron konfigurieren]]<br />
###[[Generierung eines eigenen SSL-Zertifikats]]<br />
###[[SSL-Zertifikat von ready2host einbinden]]<br />
###[[Downgrade der Synology-Firmware]]<br />
###[[Mount Bind]]<br />
###[[Gemeinsames Homeverzeichnis für mehrere User]]<br />
###[[User-Apache alle Zugriffe via Browser loggen lassen|Logdatei für den Apache-Server erstellen]]<br />
###[[Anzahl der möglichen Terminalfenster erhöhen]]<br />
###[[ssh_mit_Zertifikaten_absichern|Secure Shell (ssh) Zugriff nur mit Schlüssel]]<br />
###[[Ssh_clients_blocken|PHP Script zum Logfile Scan nach ssh Fehlern]]<br />
###[[Automatisches Herunterfahren wenn kein Ping möglich]]<br />
###[[Statusmail von der Diskstation]]<br />
###[[Aktuellen Status twittern (CPU, RAM, Speicher)]]<br />
###[[DSM Zugriff auf IP-Ebene beschränken]]<br />
###[[Debian auf der DiskStation]]<br />
###[[Thumbnailerzeugung beschleunigen ]]<br />
###[[Cacti Monitoring auf Diskstation installieren]]<br />
###[[SSMTP: Mit Bordmitteln eine E-Mail über die Konsole versenden.]]<br />
##Firmware-Upgrades<br />
###[[Upgrade von DS101g+ auf DS107]]<br />
##Backup Modifikationen<br />
###[[Alternierendes Backup]]<br />
###[[Backup der MySQL-Datenbank über einen cronjob]]<br />
###[[Backup über RSync auf einen angeschlossenen Datenträger]]<br />
###[[rsnapshot|Backups mit Rsnapshot erstellen]]<br />
###[[Offsite Backup von DS auf WebDAV-Speicher (z.B. von 1und1, GMX, Web.de, Strato, iDisk (MobileMe))]]<br />
### [[Generationsbackup_mit_rsync_und_rsnapshot_im_Netzwerk|Generationsbackup über Netzwerk]]<br />
### [[Verschlüsseltes Backup]]<br />
### [[duplicity|duplicity (SSH/SCP, RSync, FTP, WebDAV, IMAP, Amazon S3 + optionale Verschlüsselung)]]<br />
### [[WebDAV-Speicher mithilfe von davfs2 direkt in die DS einbinden]]<br />
### [[Zeitgesteuerte Sicherung mittels wget inkl. Protokoll]]<br />
###[[CrashPlan Headless Client]]<br />
##Download Modifikationen<br />
###[[pyLoad]]<br />
###[[appleJuice]]<br />
##Multimedia Modifikationen<br />
###[[TwonkyVision]]<br />
###[[Twonky auf der DS211j installieren]]<br />
###[[Swisscenter_auf_Diskstation_installieren|Swisscenter installieren]]<br />
###[[Fuppes]]<br />
###[[PS3 Mediaserver]]<br />
###[[iTunes Playlists Importieren]]<br />
###[[Einbinden einer DS über NFS bei älteren Samsung-TVs]]<br />
##Datenträger Mods<br />
###[[Upgrade eines None-RAID Volume zu RAID1 / RAID5]]<br />
###[[Hartnäckigen USB-Stick mit ext2/3 formatieren und einbinden]]<br />
###[[Verschlüsselte_Container|Verschlüsselte Container auf der DS]]<br />
## <span id="mailstation">Mailstation Mods</span><br />
### Dovecot Server (imap/pop3)<br />
#### [[Externe_Accounts_abrufen|Externe Accounts mit getmail abrufen]]<br />
#### [[Virtuelle_E-Mail_Nutzer_mit_dovecot|Virtuelle User]]<br />
#### [[E-mails_filtern_mit_dovecot-sieve|Dovecot-sieve zum Filtern von E-Mails]]<br />
#### [[Abwesenheitsmeldungen_mit_dovecot-sieve|AutoReply]]<br />
### Postfix Server (smtp)<br />
#### [[SMTP_Dialog_Restriktionen|Client Restriktionen]]<br />
#### [[Virtuelle_E-Mail_Nutzer_mit_postfix|Virtuelle User]]<br />
#### [[Zusaetzliche_Ports_fuer_Postfix|Zusätzliche Ports]]<br />
#### [[Mail-Relay_mit_Postfix|SMTP Relay einrichten]]<br />
#### [[Postgrey_greylisting_fuer_postfix|Greylisting mit postgrey]]<br />
#### [[Postfwd_firewall_fuer_postfix|Postfix Firewall postfwd]]<br />
#### [[Abwesenheitsmeldungen_mit_postfix|Autoreply]]<br />
### Spamassassin<br />
#### [[Externe_Accounts_abrufen#SpamAssassin_installieren_und_einrichten|Spamassassin installieren]]<br />
#### [[Regeln_von_Spamassassin|Die Regeln des Spamassassin]]<br />
#### [[Postfix_und_Spamassassin|Spamfilterung mit Postfix und Spamassassin]]<br />
### Various<br />
#### [[Fehlersuche in der Mailstation]]<br />
#### [[Nuetzliche_Kommandos_fuer_Mailstation|Nützliche Kommandos der Mailstation]]<br />
#### [[Mailinglisten_mit_mailman|Mailing-Listen mit mailman]]<br />
#### [[Getmail_script|getmail nutzen mit Hibernate der Festplatten]]<br />
#### [[Virtuelle_E-Mail_User_erstellen|Script zur Erstellung von virtuellen Nutzern (E-Mail)]]<br />
#### [[Roundcube als Webmail-Client für externen IMAP-Account verwenden]]<br />
## Sonstige Modifikationen<br />
### [[USV Shutdown an Mac über Netzerk weiterleiten mit Growl]]<br />
### [[Installation der Online Teamlösung eGroupWare Community Edition]]<br />
### [[Verteiltes Rechnen mit der DiskStation anhand von distributed.net]]<br />
### [[Hits der Photostation zuruecksetzen]]<br />
### [[Boost Joomla Performance]]<br />
### [[Druckerverwaltung und Netzwerkdrucker einbinden]]<br />
###[[Wake on LAN (WOL) nur mit PHP, auch über das Internet]]<br />
###[[DdnsAutoLogin|ddnsAutoLogin]]<br />
###[[PXE|PXE - Preboot eXecution Environment]]<br />
###[[OpenVPN zu einer Easybox 904 xDSL: Konfiganpassung via Konsole]]<br />
###[[Wörterbücher für Volltextsuche mit PostgreSQL erstellen]]<br />
###[[Guacamole mit Docker|Guacamole mit Docker]]<br />
###[[Synapse mit Docker|Synapse mit Docker]]<br />
###[[TvHeadend mit Docker und Sundtek SkyTV Ultimate|TvHeadend mit Docker und Sundtek SkyTV Ultimate]]<br />
<br />
#[[IPKG]]<br />
##[[Apache IPKG|Alternativer Apache-Server]]<br />
##[[OpenVPN_auf_der_Diskstation|OpenVPN auf einer DS betreiben]]<br />
##[[Streamripper]]<br />
##[[Samba_via_ipkg_installieren|Alternativer Samba-Server]]<br />
##[[Icecast_via_ipkg_installieren|Icecast Server]]<br />
##[[vsFTP installieren|Alternativer FTP Dienst]]<br />
##[[SFTP_SCP|SFTP und SCP]]<br />
##[[SVN-Server installieren|SVN-Server]]<br />
##[[Gitolite|Git + Gitolite installieren]]<br />
##[[TFTP-Daemon einrichten und verwenden]]<br />
##[[Java|Java installieren]]<br />
##[[Xinetd_via_ipkg_installieren|xinetd Daemon via ipkg installieren]]<br />
###[[Xinetd_Beispiel_Eigener_Dienst|Eigener Dienst per xinetd]]<br />
##[[Syslog-ng via ipkg installieren]]<br />
##[[YouGrabber]]<br />
##[[Geschwindigkeitsmessung mit iperf]]<br />
##[[Installation torrentflux-b4rt]]<br />
##[[Bind9 DNS-Server]]<br />
##[[Streaming server (ggrab) für DBox2-Aufnahmen einrichten]]<br />
##[[USB Schaltbare Steckdosenleiste]]<br />
##[[Tinyproxy]]<br />
##[[DHCP-Server]]<br />
##[[MoinMoin-Wiki]]<br />
##[[Inetutils|Inetutils, ftp, tftp, rcp, rsh, ping, ping6]]<br />
##[[Nail|Mit Nail ein E-Mail verschicken]]<br />
##[[Nmap|Portscanner Nmap]]<br />
##[[Mpd|Music Player Daemon mpd]]<br />
#[[:Category:3rd-Party-Apps|3rd-party Applikationen]]<br />
##Konfiguration von 3rd-party Applikationen<br />
###Integration einer Hilfe in DSM<br />
####[[Integration einer Hilfe in DSM 5.1-|DSM 5.1 - 6.1]]<br />
<br />
<br />
#Veraltete Artikel der Kategorie „Modding Themen“<br />
<br />
<br />
#Veraltete Artikel der Kategorie „IPKG“<br />
##3rd-party Applikationen<br />
###Konfiguration von 3rd-party Applikationen<br />
####[[Aufbau eines Synology Packages (SPK)]]<br />
####[[Aufbau der Datei 'INFO']]<br />
####[[Aufbau der Datei 'application.cfg']]<br />
####[[Aufbau der Datei 'config']]<br />
####Integration einer Hilfe in DSM<br />
#####[[Integration einer Hilfe in DSM 3.x|DSM 3.x]]<br />
#####[[Integration einer Hilfe in DSM 4.0-5.0|DSM 4.0 - 5.0]]<br />
##[[Integration von 3rd-party Applikationen]]<br />
###[[phpMyAdmin als 3rd-Party Applikation|phpMyAdmin]]<br />
###[[phpPgAdmin als 3rd-Party Applikation|phpPgAdmin]]<br />
###[[phpSysInfo als 3rd-Party Applikation|phpSysInfo]]<br />
###[[aMule IP-Filter Download als 3rd-Party Applikation|aMule IP-Filter]]<br />
###[[eXtplorer als 3rd-party Applikation|eXtplorer (Alternative zur File Station)]]<br />
###[[3rd Party Application Manager]]<br />
###[[HttpWakeUp Wake-On-LAN Pakete per Webinterface verschicken]]<br />
###[[Rootkit Hunter als 3rd-Party Applikation|Rootkit Hunter]]<br />
###[[AdminTool]]<br />
###[[TeamSpeak 2 Server]]<br />
###[[TeamSpeak 3 Server]]<br />
###[[TeamSpeak 3 Server in Debian Chroot]]<br />
###[[FSyncMS|FSyncMS – ein Firefox Sync Server]]<br />
###[[Lesezeichen/Passwörter Synchronisation mit SyncPlaces für Firefox (über WebDAV auf der DS)]]<br />
###[[iStat Server]]<br />
### SqueezeCenter<br />
####[[SqueezeCenter-Existierende-MySQL-Instanz-verwenden|Bestehende Instanz verwenden]]<br />
###[[Minecraft-Server auf der Synology]]<br />
###[[SynoBox|SynoBox - ein Dropbox Client]]<br />
###[[AirSonos|AirSonos - per Airplay auf Sonos streamen]]<br />
###[[CoD2|Call of Duty 2 Server auf Synology]]<br />
##Kompilieren eigener Programme<br />
###[[Luadch]]<br />
###[[MediaInfo]]<br />
###[[bluetooth Treiber]]<br />
###[[sma-bluetooth]]<br />
##Hardware Modifikationen<br />
###[[DiskStation 209+ flüsterleise machen]]<br />
###[[DiskStation 106 automatisch einschalten]]<br />
###[[DiskStation 107 automatisch einschalten]]<br />
###[[DiskStation 211 automatisch einschalten]]<br />
###[[DiskStation 408 automatisch einschalten]]<br />
###[[DiskStation 106 WOL Wake-On-LAN Umbau]]<br />
|}</div>Itommeshttps://www.synology-wiki.de/index.php?title=Modifikationen&diff=7389Modifikationen2023-03-25T10:49:09Z<p>Itommes: </p>
<hr />
<div>[[Category:Portal]]<br />
{|width="100%" height="100%" border=0 cellpadding=5 cellspacing=7 style="border: 1px solid #c0c0c0;background-color:#e0e0e0"<br />
|style="background-color:#c0c0c0; border: 1px solid #a0a0a0; font-size:120%; font-weight: bold"|[[Modifikationen|Modding Themen]]<br />
|-<br />
|<br />
#[[Wichtige Informationen zum Modden der Synology Stations]]<br />
#[[Übersicht über verfügbare 3rd-Party-Apps aus unserer Community]]<br />
#Grundsätzliches zur Hard- und Software des Synology-Servers<br />
##[[Wie funktioniert ein Computer?]]<br />
##[[Platten, RAIDs und Dateisysteme]]<br />
##[[Überblick über Modifizierungen des Synology-Servers]]<br />
##[[Welchen Prozessortyp besitzt mein System?]]<br />
##[[Welche Performance besitzt mein System?]]<br />
##[[Arbeitsweise der Synology Stations]]<br />
##[[LEDs und Buttons]]<br />
##[[Viren auf dem Synology-Server?]]<br />
##[[Stromverbrauchswerte User]]<br />
#[[Die Kommandozeile]]<br />
##[[Grundlegende Befehle auf der Kommandozeile]]<br />
##[[Vergleich von Texteditoren]]<br />
###[[vi]]<br />
###[[vim]]<br />
###[[nano]]<br />
##[[less|Alternativer Pager less]]<br />
##[[Synology Toolset]]<br />
##[[Locale-UTF8|UTF-8–Kodierung einstellen]]<br />
##[[synogear: weitere Tools]]<br />
#[[Wo ist was im Linux-System]]<br />
##[[Dateien im /etc-Verzeichnis|/etc-Verzeichnis]]<br />
##[[Dateien im /dev-Verzeichnis|/dev-Verzeichnis]]<br />
##[[Dateien im /lib-Verzeichnis|/lib-Verzeichnis]]<br />
##[[Dateien im /tmp-Verzeichnis|/tmp-Verzeichnis]]<br />
##[[Dateien im /usr-Verzeichnis|/usr-Verzeichnis]]<br />
##[[Dateien im /var-Verzeichnis|/var-Verzeichnis]]<br />
##[[Dateien im /volume1-Verzeichnis|/volume1-Verzeichnis]]<br />
#[[Nicht unterstützte Konfigurationsänderungen]]<br />
##Systemmanagement<br />
###[[3rd_Party_Applications_absichern|3rd Party Applications vor unberechtigten Zugriffen schützen]]<br />
###[[Cron|Cron konfigurieren]]<br />
###[[Generierung eines eigenen SSL-Zertifikats]]<br />
###[[SSL-Zertifikat von ready2host einbinden]]<br />
###[[Downgrade der Synology-Firmware]]<br />
###[[Mount Bind]]<br />
###[[Gemeinsames Homeverzeichnis für mehrere User]]<br />
###[[User-Apache alle Zugriffe via Browser loggen lassen|Logdatei für den Apache-Server erstellen]]<br />
###[[Anzahl der möglichen Terminalfenster erhöhen]]<br />
###[[ssh_mit_Zertifikaten_absichern|Secure Shell (ssh) Zugriff nur mit Schlüssel]]<br />
###[[Ssh_clients_blocken|PHP Script zum Logfile Scan nach ssh Fehlern]]<br />
###[[Automatisches Herunterfahren wenn kein Ping möglich]]<br />
###[[Statusmail von der Diskstation]]<br />
###[[Aktuellen Status twittern (CPU, RAM, Speicher)]]<br />
###[[DSM Zugriff auf IP-Ebene beschränken]]<br />
###[[Debian auf der DiskStation]]<br />
###[[Thumbnailerzeugung beschleunigen ]]<br />
###[[Cacti Monitoring auf Diskstation installieren]]<br />
###[[SSMTP: Mit Bordmitteln eine E-Mail über die Konsole versenden.]]<br />
##Firmware-Upgrades<br />
###[[Upgrade von DS101g+ auf DS107]]<br />
##Backup Modifikationen<br />
###[[Alternierendes Backup]]<br />
###[[Backup der MySQL-Datenbank über einen cronjob]]<br />
###[[Backup über RSync auf einen angeschlossenen Datenträger]]<br />
###[[rsnapshot|Backups mit Rsnapshot erstellen]]<br />
###[[Offsite Backup von DS auf WebDAV-Speicher (z.B. von 1und1, GMX, Web.de, Strato, iDisk (MobileMe))]]<br />
### [[Generationsbackup_mit_rsync_und_rsnapshot_im_Netzwerk|Generationsbackup über Netzwerk]]<br />
### [[Verschlüsseltes Backup]]<br />
### [[duplicity|duplicity (SSH/SCP, RSync, FTP, WebDAV, IMAP, Amazon S3 + optionale Verschlüsselung)]]<br />
### [[WebDAV-Speicher mithilfe von davfs2 direkt in die DS einbinden]]<br />
### [[Zeitgesteuerte Sicherung mittels wget inkl. Protokoll]]<br />
###[[CrashPlan Headless Client]]<br />
##Download Modifikationen<br />
###[[pyLoad]]<br />
###[[appleJuice]]<br />
##Multimedia Modifikationen<br />
###[[TwonkyVision]]<br />
###[[Twonky auf der DS211j installieren]]<br />
###[[Swisscenter_auf_Diskstation_installieren|Swisscenter installieren]]<br />
###[[Fuppes]]<br />
###[[PS3 Mediaserver]]<br />
###[[iTunes Playlists Importieren]]<br />
###[[Einbinden einer DS über NFS bei älteren Samsung-TVs]]<br />
##Datenträger Mods<br />
###[[Upgrade eines None-RAID Volume zu RAID1 / RAID5]]<br />
###[[Hartnäckigen USB-Stick mit ext2/3 formatieren und einbinden]]<br />
###[[Verschlüsselte_Container|Verschlüsselte Container auf der DS]]<br />
## <span id="mailstation">Mailstation Mods</span><br />
### Dovecot Server (imap/pop3)<br />
#### [[Externe_Accounts_abrufen|Externe Accounts mit getmail abrufen]]<br />
#### [[Virtuelle_E-Mail_Nutzer_mit_dovecot|Virtuelle User]]<br />
#### [[E-mails_filtern_mit_dovecot-sieve|Dovecot-sieve zum Filtern von E-Mails]]<br />
#### [[Abwesenheitsmeldungen_mit_dovecot-sieve|AutoReply]]<br />
### Postfix Server (smtp)<br />
#### [[SMTP_Dialog_Restriktionen|Client Restriktionen]]<br />
#### [[Virtuelle_E-Mail_Nutzer_mit_postfix|Virtuelle User]]<br />
#### [[Zusaetzliche_Ports_fuer_Postfix|Zusätzliche Ports]]<br />
#### [[Mail-Relay_mit_Postfix|SMTP Relay einrichten]]<br />
#### [[Postgrey_greylisting_fuer_postfix|Greylisting mit postgrey]]<br />
#### [[Postfwd_firewall_fuer_postfix|Postfix Firewall postfwd]]<br />
#### [[Abwesenheitsmeldungen_mit_postfix|Autoreply]]<br />
### Spamassassin<br />
#### [[Externe_Accounts_abrufen#SpamAssassin_installieren_und_einrichten|Spamassassin installieren]]<br />
#### [[Regeln_von_Spamassassin|Die Regeln des Spamassassin]]<br />
#### [[Postfix_und_Spamassassin|Spamfilterung mit Postfix und Spamassassin]]<br />
### Various<br />
#### [[Fehlersuche in der Mailstation]]<br />
#### [[Nuetzliche_Kommandos_fuer_Mailstation|Nützliche Kommandos der Mailstation]]<br />
#### [[Mailinglisten_mit_mailman|Mailing-Listen mit mailman]]<br />
#### [[Getmail_script|getmail nutzen mit Hibernate der Festplatten]]<br />
#### [[Virtuelle_E-Mail_User_erstellen|Script zur Erstellung von virtuellen Nutzern (E-Mail)]]<br />
#### [[Roundcube als Webmail-Client für externen IMAP-Account verwenden]]<br />
## Sonstige Modifikationen<br />
### [[USV Shutdown an Mac über Netzerk weiterleiten mit Growl]]<br />
### [[Installation der Online Teamlösung eGroupWare Community Edition]]<br />
### [[Verteiltes Rechnen mit der DiskStation anhand von distributed.net]]<br />
### [[Hits der Photostation zuruecksetzen]]<br />
### [[Boost Joomla Performance]]<br />
### [[Druckerverwaltung und Netzwerkdrucker einbinden]]<br />
###[[Wake on LAN (WOL) nur mit PHP, auch über das Internet]]<br />
###[[DdnsAutoLogin|ddnsAutoLogin]]<br />
###[[PXE|PXE - Preboot eXecution Environment]]<br />
###[[OpenVPN zu einer Easybox 904 xDSL: Konfiganpassung via Konsole]]<br />
###[[Wörterbücher für Volltextsuche mit PostgreSQL erstellen]]<br />
###[[Guacamole mit Docker|Guacamole mit Docker]]<br />
###[[Synapse mit Docker|Synapse mit Docker]]<br />
###[[TvHeadend mit Docker und Sundtek SkyTV Ultimate|TvHeadend mit Docker und Sundtek SkyTV Ultimate]]<br />
<br />
#[[IPKG]]<br />
##[[Apache IPKG|Alternativer Apache-Server]]<br />
##[[OpenVPN_auf_der_Diskstation|OpenVPN auf einer DS betreiben]]<br />
##[[Streamripper]]<br />
##[[Samba_via_ipkg_installieren|Alternativer Samba-Server]]<br />
##[[Icecast_via_ipkg_installieren|Icecast Server]]<br />
##[[vsFTP installieren|Alternativer FTP Dienst]]<br />
##[[SFTP_SCP|SFTP und SCP]]<br />
##[[SVN-Server installieren|SVN-Server]]<br />
##[[Gitolite|Git + Gitolite installieren]]<br />
##[[TFTP-Daemon einrichten und verwenden]]<br />
##[[Java|Java installieren]]<br />
##[[Xinetd_via_ipkg_installieren|xinetd Daemon via ipkg installieren]]<br />
###[[Xinetd_Beispiel_Eigener_Dienst|Eigener Dienst per xinetd]]<br />
##[[Syslog-ng via ipkg installieren]]<br />
##[[YouGrabber]]<br />
##[[Geschwindigkeitsmessung mit iperf]]<br />
##[[Installation torrentflux-b4rt]]<br />
##[[Bind9 DNS-Server]]<br />
##[[Streaming server (ggrab) für DBox2-Aufnahmen einrichten]]<br />
##[[USB Schaltbare Steckdosenleiste]]<br />
##[[Tinyproxy]]<br />
##[[DHCP-Server]]<br />
##[[MoinMoin-Wiki]]<br />
##[[Inetutils|Inetutils, ftp, tftp, rcp, rsh, ping, ping6]]<br />
##[[Nail|Mit Nail ein E-Mail verschicken]]<br />
##[[Nmap|Portscanner Nmap]]<br />
##[[Mpd|Music Player Daemon mpd]]<br />
#[[:Category:3rd-Party-Apps|3rd-party Applikationen]]<br />
##Konfiguration von 3rd-party Applikationen<br />
###Integration einer Hilfe in DSM<br />
####[[Integration einer Hilfe in DSM 5.1-|DSM 5.1 - 6.1]]<br />
<br />
<br />
#Veraltete Artikel der Kategorie „Modding Themen“<br />
<br />
#Veraltete Artikel der Kategorie „IPKG“<br />
##3rd-party Applikationen<br />
###Konfiguration von 3rd-party Applikationen<br />
####[[Aufbau eines Synology Packages (SPK)]]<br />
####[[Aufbau der Datei 'INFO']]<br />
####[[Aufbau der Datei 'application.cfg']]<br />
####[[Aufbau der Datei 'config']]<br />
####Integration einer Hilfe in DSM<br />
#####[[Integration einer Hilfe in DSM 3.x|DSM 3.x]]<br />
#####[[Integration einer Hilfe in DSM 4.0-5.0|DSM 4.0 - 5.0]]<br />
##[[Integration von 3rd-party Applikationen]]<br />
###[[phpMyAdmin als 3rd-Party Applikation|phpMyAdmin]]<br />
###[[phpPgAdmin als 3rd-Party Applikation|phpPgAdmin]]<br />
###[[phpSysInfo als 3rd-Party Applikation|phpSysInfo]]<br />
###[[aMule IP-Filter Download als 3rd-Party Applikation|aMule IP-Filter]]<br />
###[[eXtplorer als 3rd-party Applikation|eXtplorer (Alternative zur File Station)]]<br />
###[[3rd Party Application Manager]]<br />
###[[HttpWakeUp Wake-On-LAN Pakete per Webinterface verschicken]]<br />
###[[Rootkit Hunter als 3rd-Party Applikation|Rootkit Hunter]]<br />
###[[AdminTool]]<br />
###[[TeamSpeak 2 Server]]<br />
###[[TeamSpeak 3 Server]]<br />
###[[TeamSpeak 3 Server in Debian Chroot]]<br />
###[[FSyncMS|FSyncMS – ein Firefox Sync Server]]<br />
###[[Lesezeichen/Passwörter Synchronisation mit SyncPlaces für Firefox (über WebDAV auf der DS)]]<br />
###[[iStat Server]]<br />
### SqueezeCenter<br />
####[[SqueezeCenter-Existierende-MySQL-Instanz-verwenden|Bestehende Instanz verwenden]]<br />
###[[Minecraft-Server auf der Synology]]<br />
###[[SynoBox|SynoBox - ein Dropbox Client]]<br />
###[[AirSonos|AirSonos - per Airplay auf Sonos streamen]]<br />
###[[CoD2|Call of Duty 2 Server auf Synology]]<br />
##Kompilieren eigener Programme<br />
###[[Luadch]]<br />
###[[MediaInfo]]<br />
###[[bluetooth Treiber]]<br />
###[[sma-bluetooth]]<br />
##Hardware Modifikationen<br />
###[[DiskStation 209+ flüsterleise machen]]<br />
###[[DiskStation 106 automatisch einschalten]]<br />
###[[DiskStation 107 automatisch einschalten]]<br />
###[[DiskStation 211 automatisch einschalten]]<br />
###[[DiskStation 408 automatisch einschalten]]<br />
###[[DiskStation 106 WOL Wake-On-LAN Umbau]]<br />
|}</div>Itommeshttps://www.synology-wiki.de/index.php?title=Modifikationen&diff=7388Modifikationen2023-03-25T10:47:48Z<p>Itommes: </p>
<hr />
<div>[[Category:Portal]]<br />
{|width="100%" height="100%" border=0 cellpadding=5 cellspacing=7 style="border: 1px solid #c0c0c0;background-color:#e0e0e0"<br />
|style="background-color:#c0c0c0; border: 1px solid #a0a0a0; font-size:120%; font-weight: bold"|[[Modifikationen|Modding Themen]]<br />
|-<br />
|<br />
#[[Wichtige Informationen zum Modden der Synology Stations]]<br />
#[[Übersicht über verfügbare 3rd-Party-Apps aus unserer Community]]<br />
#Grundsätzliches zur Hard- und Software des Synology-Servers<br />
##[[Wie funktioniert ein Computer?]]<br />
##[[Platten, RAIDs und Dateisysteme]]<br />
##[[Überblick über Modifizierungen des Synology-Servers]]<br />
##[[Welchen Prozessortyp besitzt mein System?]]<br />
##[[Welche Performance besitzt mein System?]]<br />
##[[Arbeitsweise der Synology Stations]]<br />
##[[LEDs und Buttons]]<br />
##[[Viren auf dem Synology-Server?]]<br />
##[[Stromverbrauchswerte User]]<br />
#[[Die Kommandozeile]]<br />
##[[Grundlegende Befehle auf der Kommandozeile]]<br />
##[[Vergleich von Texteditoren]]<br />
###[[vi]]<br />
###[[vim]]<br />
###[[nano]]<br />
##[[less|Alternativer Pager less]]<br />
##[[Synology Toolset]]<br />
##[[Locale-UTF8|UTF-8–Kodierung einstellen]]<br />
##[[synogear: weitere Tools]]<br />
#[[Wo ist was im Linux-System]]<br />
##[[Dateien im /etc-Verzeichnis|/etc-Verzeichnis]]<br />
##[[Dateien im /dev-Verzeichnis|/dev-Verzeichnis]]<br />
##[[Dateien im /lib-Verzeichnis|/lib-Verzeichnis]]<br />
##[[Dateien im /tmp-Verzeichnis|/tmp-Verzeichnis]]<br />
##[[Dateien im /usr-Verzeichnis|/usr-Verzeichnis]]<br />
##[[Dateien im /var-Verzeichnis|/var-Verzeichnis]]<br />
##[[Dateien im /volume1-Verzeichnis|/volume1-Verzeichnis]]<br />
#[[Nicht unterstützte Konfigurationsänderungen]]<br />
##Systemmanagement<br />
###[[3rd_Party_Applications_absichern|3rd Party Applications vor unberechtigten Zugriffen schützen]]<br />
###[[Cron|Cron konfigurieren]]<br />
###[[Generierung eines eigenen SSL-Zertifikats]]<br />
###[[SSL-Zertifikat von ready2host einbinden]]<br />
###[[Downgrade der Synology-Firmware]]<br />
###[[Mount Bind]]<br />
###[[Gemeinsames Homeverzeichnis für mehrere User]]<br />
###[[User-Apache alle Zugriffe via Browser loggen lassen|Logdatei für den Apache-Server erstellen]]<br />
###[[Anzahl der möglichen Terminalfenster erhöhen]]<br />
###[[ssh_mit_Zertifikaten_absichern|Secure Shell (ssh) Zugriff nur mit Schlüssel]]<br />
###[[Ssh_clients_blocken|PHP Script zum Logfile Scan nach ssh Fehlern]]<br />
###[[Automatisches Herunterfahren wenn kein Ping möglich]]<br />
###[[Statusmail von der Diskstation]]<br />
###[[Aktuellen Status twittern (CPU, RAM, Speicher)]]<br />
###[[DSM Zugriff auf IP-Ebene beschränken]]<br />
###[[Debian auf der DiskStation]]<br />
###[[Thumbnailerzeugung beschleunigen ]]<br />
###[[Cacti Monitoring auf Diskstation installieren]]<br />
###[[SSMTP: Mit Bordmitteln eine E-Mail über die Konsole versenden.]]<br />
##Firmware-Upgrades<br />
###[[Upgrade von DS101g+ auf DS107]]<br />
##Backup Modifikationen<br />
###[[Alternierendes Backup]]<br />
###[[Backup der MySQL-Datenbank über einen cronjob]]<br />
###[[Backup über RSync auf einen angeschlossenen Datenträger]]<br />
###[[rsnapshot|Backups mit Rsnapshot erstellen]]<br />
###[[Offsite Backup von DS auf WebDAV-Speicher (z.B. von 1und1, GMX, Web.de, Strato, iDisk (MobileMe))]]<br />
### [[Generationsbackup_mit_rsync_und_rsnapshot_im_Netzwerk|Generationsbackup über Netzwerk]]<br />
### [[Verschlüsseltes Backup]]<br />
### [[duplicity|duplicity (SSH/SCP, RSync, FTP, WebDAV, IMAP, Amazon S3 + optionale Verschlüsselung)]]<br />
### [[WebDAV-Speicher mithilfe von davfs2 direkt in die DS einbinden]]<br />
### [[Zeitgesteuerte Sicherung mittels wget inkl. Protokoll]]<br />
###[[CrashPlan Headless Client]]<br />
##Download Modifikationen<br />
###[[pyLoad]]<br />
###[[appleJuice]]<br />
##Multimedia Modifikationen<br />
###[[TwonkyVision]]<br />
###[[Twonky auf der DS211j installieren]]<br />
###[[Swisscenter_auf_Diskstation_installieren|Swisscenter installieren]]<br />
###[[Fuppes]]<br />
###[[PS3 Mediaserver]]<br />
###[[iTunes Playlists Importieren]]<br />
###[[Einbinden einer DS über NFS bei älteren Samsung-TVs]]<br />
##Datenträger Mods<br />
###[[Upgrade eines None-RAID Volume zu RAID1 / RAID5]]<br />
###[[Hartnäckigen USB-Stick mit ext2/3 formatieren und einbinden]]<br />
###[[Verschlüsselte_Container|Verschlüsselte Container auf der DS]]<br />
## <span id="mailstation">Mailstation Mods</span><br />
### Dovecot Server (imap/pop3)<br />
#### [[Externe_Accounts_abrufen|Externe Accounts mit getmail abrufen]]<br />
#### [[Virtuelle_E-Mail_Nutzer_mit_dovecot|Virtuelle User]]<br />
#### [[E-mails_filtern_mit_dovecot-sieve|Dovecot-sieve zum Filtern von E-Mails]]<br />
#### [[Abwesenheitsmeldungen_mit_dovecot-sieve|AutoReply]]<br />
### Postfix Server (smtp)<br />
#### [[SMTP_Dialog_Restriktionen|Client Restriktionen]]<br />
#### [[Virtuelle_E-Mail_Nutzer_mit_postfix|Virtuelle User]]<br />
#### [[Zusaetzliche_Ports_fuer_Postfix|Zusätzliche Ports]]<br />
#### [[Mail-Relay_mit_Postfix|SMTP Relay einrichten]]<br />
#### [[Postgrey_greylisting_fuer_postfix|Greylisting mit postgrey]]<br />
#### [[Postfwd_firewall_fuer_postfix|Postfix Firewall postfwd]]<br />
#### [[Abwesenheitsmeldungen_mit_postfix|Autoreply]]<br />
### Spamassassin<br />
#### [[Externe_Accounts_abrufen#SpamAssassin_installieren_und_einrichten|Spamassassin installieren]]<br />
#### [[Regeln_von_Spamassassin|Die Regeln des Spamassassin]]<br />
#### [[Postfix_und_Spamassassin|Spamfilterung mit Postfix und Spamassassin]]<br />
### Various<br />
#### [[Fehlersuche in der Mailstation]]<br />
#### [[Nuetzliche_Kommandos_fuer_Mailstation|Nützliche Kommandos der Mailstation]]<br />
#### [[Mailinglisten_mit_mailman|Mailing-Listen mit mailman]]<br />
#### [[Getmail_script|getmail nutzen mit Hibernate der Festplatten]]<br />
#### [[Virtuelle_E-Mail_User_erstellen|Script zur Erstellung von virtuellen Nutzern (E-Mail)]]<br />
#### [[Roundcube als Webmail-Client für externen IMAP-Account verwenden]]<br />
## Sonstige Modifikationen<br />
### [[USV Shutdown an Mac über Netzerk weiterleiten mit Growl]]<br />
### [[Installation der Online Teamlösung eGroupWare Community Edition]]<br />
### [[Verteiltes Rechnen mit der DiskStation anhand von distributed.net]]<br />
### [[Hits der Photostation zuruecksetzen]]<br />
### [[Boost Joomla Performance]]<br />
### [[Druckerverwaltung und Netzwerkdrucker einbinden]]<br />
###[[Wake on LAN (WOL) nur mit PHP, auch über das Internet]]<br />
###[[DdnsAutoLogin|ddnsAutoLogin]]<br />
###[[PXE|PXE - Preboot eXecution Environment]]<br />
###[[OpenVPN zu einer Easybox 904 xDSL: Konfiganpassung via Konsole]]<br />
###[[Wörterbücher für Volltextsuche mit PostgreSQL erstellen]]<br />
###[[Guacamole mit Docker|Guacamole mit Docker]]<br />
###[[Synapse mit Docker|Synapse mit Docker]]<br />
###[[TvHeadend mit Docker und Sundtek SkyTV Ultimate|TvHeadend mit Docker und Sundtek SkyTV Ultimate]]<br />
<br />
#[[IPKG]]<br />
##[[Apache IPKG|Alternativer Apache-Server]]<br />
##[[OpenVPN_auf_der_Diskstation|OpenVPN auf einer DS betreiben]]<br />
##[[Streamripper]]<br />
##[[Samba_via_ipkg_installieren|Alternativer Samba-Server]]<br />
##[[Icecast_via_ipkg_installieren|Icecast Server]]<br />
##[[vsFTP installieren|Alternativer FTP Dienst]]<br />
##[[SFTP_SCP|SFTP und SCP]]<br />
##[[SVN-Server installieren|SVN-Server]]<br />
##[[Gitolite|Git + Gitolite installieren]]<br />
##[[TFTP-Daemon einrichten und verwenden]]<br />
##[[Java|Java installieren]]<br />
##[[Xinetd_via_ipkg_installieren|xinetd Daemon via ipkg installieren]]<br />
###[[Xinetd_Beispiel_Eigener_Dienst|Eigener Dienst per xinetd]]<br />
##[[Syslog-ng via ipkg installieren]]<br />
##[[YouGrabber]]<br />
##[[Geschwindigkeitsmessung mit iperf]]<br />
##[[Installation torrentflux-b4rt]]<br />
##[[Bind9 DNS-Server]]<br />
##[[Streaming server (ggrab) für DBox2-Aufnahmen einrichten]]<br />
##[[USB Schaltbare Steckdosenleiste]]<br />
##[[Tinyproxy]]<br />
##[[DHCP-Server]]<br />
##[[MoinMoin-Wiki]]<br />
##[[Inetutils|Inetutils, ftp, tftp, rcp, rsh, ping, ping6]]<br />
##[[Nail|Mit Nail ein E-Mail verschicken]]<br />
##[[Nmap|Portscanner Nmap]]<br />
##[[Mpd|Music Player Daemon mpd]]<br />
#[[:Category:3rd-Party-Apps|3rd-party Applikationen]]<br />
##Konfiguration von 3rd-party Applikationen<br />
###Integration einer Hilfe in DSM<br />
####[[Integration einer Hilfe in DSM 5.1-|DSM 5.1 - 6.1]]<br />
<br />
<br />
#[[Veraltete Artikel der Kategorie „Modding Themen“]]<br />
<br />
#[[Veraltete Artikel der Kategorie „IPKG“]]<br />
##3rd-party Applikationen<br />
###Konfiguration von 3rd-party Applikationen<br />
####[[Aufbau eines Synology Packages (SPK)]]<br />
####[[Aufbau der Datei 'INFO']]<br />
####[[Aufbau der Datei 'application.cfg']]<br />
####[[Aufbau der Datei 'config']]<br />
####Integration einer Hilfe in DSM<br />
#####[[Integration einer Hilfe in DSM 3.x|DSM 3.x]]<br />
#####[[Integration einer Hilfe in DSM 4.0-5.0|DSM 4.0 - 5.0]]<br />
##[[Integration von 3rd-party Applikationen]]<br />
###[[phpMyAdmin als 3rd-Party Applikation|phpMyAdmin]]<br />
###[[phpPgAdmin als 3rd-Party Applikation|phpPgAdmin]]<br />
###[[phpSysInfo als 3rd-Party Applikation|phpSysInfo]]<br />
###[[aMule IP-Filter Download als 3rd-Party Applikation|aMule IP-Filter]]<br />
###[[eXtplorer als 3rd-party Applikation|eXtplorer (Alternative zur File Station)]]<br />
###[[3rd Party Application Manager]]<br />
###[[HttpWakeUp Wake-On-LAN Pakete per Webinterface verschicken]]<br />
###[[Rootkit Hunter als 3rd-Party Applikation|Rootkit Hunter]]<br />
###[[AdminTool]]<br />
###[[TeamSpeak 2 Server]]<br />
###[[TeamSpeak 3 Server]]<br />
###[[TeamSpeak 3 Server in Debian Chroot]]<br />
###[[FSyncMS|FSyncMS – ein Firefox Sync Server]]<br />
###[[Lesezeichen/Passwörter Synchronisation mit SyncPlaces für Firefox (über WebDAV auf der DS)]]<br />
###[[iStat Server]]<br />
### SqueezeCenter<br />
####[[SqueezeCenter-Existierende-MySQL-Instanz-verwenden|Bestehende Instanz verwenden]]<br />
###[[Minecraft-Server auf der Synology]]<br />
###[[SynoBox|SynoBox - ein Dropbox Client]]<br />
###[[AirSonos|AirSonos - per Airplay auf Sonos streamen]]<br />
###[[CoD2|Call of Duty 2 Server auf Synology]]<br />
##Kompilieren eigener Programme<br />
###[[Luadch]]<br />
###[[MediaInfo]]<br />
###[[bluetooth Treiber]]<br />
###[[sma-bluetooth]]<br />
##Hardware Modifikationen<br />
###[[DiskStation 209+ flüsterleise machen]]<br />
###[[DiskStation 106 automatisch einschalten]]<br />
###[[DiskStation 107 automatisch einschalten]]<br />
###[[DiskStation 211 automatisch einschalten]]<br />
###[[DiskStation 408 automatisch einschalten]]<br />
###[[DiskStation 106 WOL Wake-On-LAN Umbau]]<br />
|}</div>Itommeshttps://www.synology-wiki.de/index.php?title=Modifikationen&diff=7387Modifikationen2023-03-25T10:46:25Z<p>Itommes: </p>
<hr />
<div>[[Category:Portal]]<br />
{|width="100%" height="100%" border=0 cellpadding=5 cellspacing=7 style="border: 1px solid #c0c0c0;background-color:#e0e0e0"<br />
|style="background-color:#c0c0c0; border: 1px solid #a0a0a0; font-size:120%; font-weight: bold"|[[Modifikationen|Modding Themen]]<br />
|-<br />
|<br />
#[[Wichtige Informationen zum Modden der Synology Stations]]<br />
#[[Übersicht über verfügbare 3rd-Party-Apps aus unserer Community]]<br />
#Grundsätzliches zur Hard- und Software des Synology-Servers<br />
##[[Wie funktioniert ein Computer?]]<br />
##[[Platten, RAIDs und Dateisysteme]]<br />
##[[Überblick über Modifizierungen des Synology-Servers]]<br />
##[[Welchen Prozessortyp besitzt mein System?]]<br />
##[[Welche Performance besitzt mein System?]]<br />
##[[Arbeitsweise der Synology Stations]]<br />
##[[LEDs und Buttons]]<br />
##[[Viren auf dem Synology-Server?]]<br />
##[[Stromverbrauchswerte User]]<br />
#[[Die Kommandozeile]]<br />
##[[Grundlegende Befehle auf der Kommandozeile]]<br />
##[[Vergleich von Texteditoren]]<br />
###[[vi]]<br />
###[[vim]]<br />
###[[nano]]<br />
##[[less|Alternativer Pager less]]<br />
##[[Synology Toolset]]<br />
##[[Locale-UTF8|UTF-8–Kodierung einstellen]]<br />
##[[synogear: weitere Tools]]<br />
#[[Wo ist was im Linux-System]]<br />
##[[Dateien im /etc-Verzeichnis|/etc-Verzeichnis]]<br />
##[[Dateien im /dev-Verzeichnis|/dev-Verzeichnis]]<br />
##[[Dateien im /lib-Verzeichnis|/lib-Verzeichnis]]<br />
##[[Dateien im /tmp-Verzeichnis|/tmp-Verzeichnis]]<br />
##[[Dateien im /usr-Verzeichnis|/usr-Verzeichnis]]<br />
##[[Dateien im /var-Verzeichnis|/var-Verzeichnis]]<br />
##[[Dateien im /volume1-Verzeichnis|/volume1-Verzeichnis]]<br />
#[[Nicht unterstützte Konfigurationsänderungen]]<br />
##Systemmanagement<br />
###[[3rd_Party_Applications_absichern|3rd Party Applications vor unberechtigten Zugriffen schützen]]<br />
###[[Cron|Cron konfigurieren]]<br />
###[[Generierung eines eigenen SSL-Zertifikats]]<br />
###[[SSL-Zertifikat von ready2host einbinden]]<br />
###[[Downgrade der Synology-Firmware]]<br />
###[[Mount Bind]]<br />
###[[Gemeinsames Homeverzeichnis für mehrere User]]<br />
###[[User-Apache alle Zugriffe via Browser loggen lassen|Logdatei für den Apache-Server erstellen]]<br />
###[[Anzahl der möglichen Terminalfenster erhöhen]]<br />
###[[ssh_mit_Zertifikaten_absichern|Secure Shell (ssh) Zugriff nur mit Schlüssel]]<br />
###[[Ssh_clients_blocken|PHP Script zum Logfile Scan nach ssh Fehlern]]<br />
###[[Automatisches Herunterfahren wenn kein Ping möglich]]<br />
###[[Statusmail von der Diskstation]]<br />
###[[Aktuellen Status twittern (CPU, RAM, Speicher)]]<br />
###[[DSM Zugriff auf IP-Ebene beschränken]]<br />
###[[Debian auf der DiskStation]]<br />
###[[Thumbnailerzeugung beschleunigen ]]<br />
###[[Cacti Monitoring auf Diskstation installieren]]<br />
###[[SSMTP: Mit Bordmitteln eine E-Mail über die Konsole versenden.]]<br />
##Firmware-Upgrades<br />
###[[Upgrade von DS101g+ auf DS107]]<br />
##Backup Modifikationen<br />
###[[Alternierendes Backup]]<br />
###[[Backup der MySQL-Datenbank über einen cronjob]]<br />
###[[Backup über RSync auf einen angeschlossenen Datenträger]]<br />
###[[rsnapshot|Backups mit Rsnapshot erstellen]]<br />
###[[Offsite Backup von DS auf WebDAV-Speicher (z.B. von 1und1, GMX, Web.de, Strato, iDisk (MobileMe))]]<br />
### [[Generationsbackup_mit_rsync_und_rsnapshot_im_Netzwerk|Generationsbackup über Netzwerk]]<br />
### [[Verschlüsseltes Backup]]<br />
### [[duplicity|duplicity (SSH/SCP, RSync, FTP, WebDAV, IMAP, Amazon S3 + optionale Verschlüsselung)]]<br />
### [[WebDAV-Speicher mithilfe von davfs2 direkt in die DS einbinden]]<br />
### [[Zeitgesteuerte Sicherung mittels wget inkl. Protokoll]]<br />
###[[CrashPlan Headless Client]]<br />
##Download Modifikationen<br />
###[[pyLoad]]<br />
###[[appleJuice]]<br />
##Multimedia Modifikationen<br />
###[[TwonkyVision]]<br />
###[[Twonky auf der DS211j installieren]]<br />
###[[Swisscenter_auf_Diskstation_installieren|Swisscenter installieren]]<br />
###[[Fuppes]]<br />
###[[PS3 Mediaserver]]<br />
###[[iTunes Playlists Importieren]]<br />
###[[Einbinden einer DS über NFS bei älteren Samsung-TVs]]<br />
##Datenträger Mods<br />
###[[Upgrade eines None-RAID Volume zu RAID1 / RAID5]]<br />
###[[Hartnäckigen USB-Stick mit ext2/3 formatieren und einbinden]]<br />
###[[Verschlüsselte_Container|Verschlüsselte Container auf der DS]]<br />
## <span id="mailstation">Mailstation Mods</span><br />
### Dovecot Server (imap/pop3)<br />
#### [[Externe_Accounts_abrufen|Externe Accounts mit getmail abrufen]]<br />
#### [[Virtuelle_E-Mail_Nutzer_mit_dovecot|Virtuelle User]]<br />
#### [[E-mails_filtern_mit_dovecot-sieve|Dovecot-sieve zum Filtern von E-Mails]]<br />
#### [[Abwesenheitsmeldungen_mit_dovecot-sieve|AutoReply]]<br />
### Postfix Server (smtp)<br />
#### [[SMTP_Dialog_Restriktionen|Client Restriktionen]]<br />
#### [[Virtuelle_E-Mail_Nutzer_mit_postfix|Virtuelle User]]<br />
#### [[Zusaetzliche_Ports_fuer_Postfix|Zusätzliche Ports]]<br />
#### [[Mail-Relay_mit_Postfix|SMTP Relay einrichten]]<br />
#### [[Postgrey_greylisting_fuer_postfix|Greylisting mit postgrey]]<br />
#### [[Postfwd_firewall_fuer_postfix|Postfix Firewall postfwd]]<br />
#### [[Abwesenheitsmeldungen_mit_postfix|Autoreply]]<br />
### Spamassassin<br />
#### [[Externe_Accounts_abrufen#SpamAssassin_installieren_und_einrichten|Spamassassin installieren]]<br />
#### [[Regeln_von_Spamassassin|Die Regeln des Spamassassin]]<br />
#### [[Postfix_und_Spamassassin|Spamfilterung mit Postfix und Spamassassin]]<br />
### Various<br />
#### [[Fehlersuche in der Mailstation]]<br />
#### [[Nuetzliche_Kommandos_fuer_Mailstation|Nützliche Kommandos der Mailstation]]<br />
#### [[Mailinglisten_mit_mailman|Mailing-Listen mit mailman]]<br />
#### [[Getmail_script|getmail nutzen mit Hibernate der Festplatten]]<br />
#### [[Virtuelle_E-Mail_User_erstellen|Script zur Erstellung von virtuellen Nutzern (E-Mail)]]<br />
#### [[Roundcube als Webmail-Client für externen IMAP-Account verwenden]]<br />
## Sonstige Modifikationen<br />
### [[USV Shutdown an Mac über Netzerk weiterleiten mit Growl]]<br />
### [[Installation der Online Teamlösung eGroupWare Community Edition]]<br />
### [[Verteiltes Rechnen mit der DiskStation anhand von distributed.net]]<br />
### [[Hits der Photostation zuruecksetzen]]<br />
### [[Boost Joomla Performance]]<br />
### [[Druckerverwaltung und Netzwerkdrucker einbinden]]<br />
###[[Wake on LAN (WOL) nur mit PHP, auch über das Internet]]<br />
###[[DdnsAutoLogin|ddnsAutoLogin]]<br />
###[[PXE|PXE - Preboot eXecution Environment]]<br />
###[[OpenVPN zu einer Easybox 904 xDSL: Konfiganpassung via Konsole]]<br />
###[[Wörterbücher für Volltextsuche mit PostgreSQL erstellen]]<br />
###[[Guacamole mit Docker|Guacamole mit Docker]]<br />
###[[Synapse mit Docker|Synapse mit Docker]]<br />
###[[TvHeadend mit Docker und Sundtek SkyTV Ultimate|TvHeadend mit Docker und Sundtek SkyTV Ultimate]]<br />
<br />
#[[IPKG]]<br />
##[[Apache IPKG|Alternativer Apache-Server]]<br />
##[[OpenVPN_auf_der_Diskstation|OpenVPN auf einer DS betreiben]]<br />
##[[Streamripper]]<br />
##[[Samba_via_ipkg_installieren|Alternativer Samba-Server]]<br />
##[[Icecast_via_ipkg_installieren|Icecast Server]]<br />
##[[vsFTP installieren|Alternativer FTP Dienst]]<br />
##[[SFTP_SCP|SFTP und SCP]]<br />
##[[SVN-Server installieren|SVN-Server]]<br />
##[[Gitolite|Git + Gitolite installieren]]<br />
##[[TFTP-Daemon einrichten und verwenden]]<br />
##[[Java|Java installieren]]<br />
##[[Xinetd_via_ipkg_installieren|xinetd Daemon via ipkg installieren]]<br />
###[[Xinetd_Beispiel_Eigener_Dienst|Eigener Dienst per xinetd]]<br />
##[[Syslog-ng via ipkg installieren]]<br />
##[[YouGrabber]]<br />
##[[Geschwindigkeitsmessung mit iperf]]<br />
##[[Installation torrentflux-b4rt]]<br />
##[[Bind9 DNS-Server]]<br />
##[[Streaming server (ggrab) für DBox2-Aufnahmen einrichten]]<br />
##[[USB Schaltbare Steckdosenleiste]]<br />
##[[Tinyproxy]]<br />
##[[DHCP-Server]]<br />
##[[MoinMoin-Wiki]]<br />
##[[Inetutils|Inetutils, ftp, tftp, rcp, rsh, ping, ping6]]<br />
##[[Nail|Mit Nail ein E-Mail verschicken]]<br />
##[[Nmap|Portscanner Nmap]]<br />
##[[Mpd|Music Player Daemon mpd]]<br />
#[[:Category:3rd-Party-Apps|3rd-party Applikationen]]<br />
##Konfiguration von 3rd-party Applikationen<br />
###Integration einer Hilfe in DSM<br />
####[[Integration einer Hilfe in DSM 5.1-|DSM 5.1 - 6.1]]<br />
<br />
<br />
#[[Veraltete Artikel der Kategorie „Modding Themen“]]<br />
##3rd-party Applikationen<br />
###Konfiguration von 3rd-party Applikationen<br />
####[[Aufbau eines Synology Packages (SPK)]]<br />
####[[Aufbau der Datei 'INFO']]<br />
####[[Aufbau der Datei 'application.cfg']]<br />
####[[Aufbau der Datei 'config']]<br />
####Integration einer Hilfe in DSM<br />
#####[[Integration einer Hilfe in DSM 3.x|DSM 3.x]]<br />
#####[[Integration einer Hilfe in DSM 4.0-5.0|DSM 4.0 - 5.0]]<br />
##[[Integration von 3rd-party Applikationen]]<br />
###[[phpMyAdmin als 3rd-Party Applikation|phpMyAdmin]]<br />
###[[phpPgAdmin als 3rd-Party Applikation|phpPgAdmin]]<br />
###[[phpSysInfo als 3rd-Party Applikation|phpSysInfo]]<br />
###[[aMule IP-Filter Download als 3rd-Party Applikation|aMule IP-Filter]]<br />
###[[eXtplorer als 3rd-party Applikation|eXtplorer (Alternative zur File Station)]]<br />
###[[3rd Party Application Manager]]<br />
###[[HttpWakeUp Wake-On-LAN Pakete per Webinterface verschicken]]<br />
###[[Rootkit Hunter als 3rd-Party Applikation|Rootkit Hunter]]<br />
###[[AdminTool]]<br />
###[[TeamSpeak 2 Server]]<br />
###[[TeamSpeak 3 Server]]<br />
###[[TeamSpeak 3 Server in Debian Chroot]]<br />
###[[FSyncMS|FSyncMS – ein Firefox Sync Server]]<br />
###[[Lesezeichen/Passwörter Synchronisation mit SyncPlaces für Firefox (über WebDAV auf der DS)]]<br />
###[[iStat Server]]<br />
### SqueezeCenter<br />
####[[SqueezeCenter-Existierende-MySQL-Instanz-verwenden|Bestehende Instanz verwenden]]<br />
###[[Minecraft-Server auf der Synology]]<br />
###[[SynoBox|SynoBox - ein Dropbox Client]]<br />
###[[AirSonos|AirSonos - per Airplay auf Sonos streamen]]<br />
###[[CoD2|Call of Duty 2 Server auf Synology]]<br />
##Kompilieren eigener Programme<br />
###[[Luadch]]<br />
###[[MediaInfo]]<br />
###[[bluetooth Treiber]]<br />
###[[sma-bluetooth]]<br />
##Hardware Modifikationen<br />
###[[DiskStation 209+ flüsterleise machen]]<br />
###[[DiskStation 106 automatisch einschalten]]<br />
###[[DiskStation 107 automatisch einschalten]]<br />
###[[DiskStation 211 automatisch einschalten]]<br />
###[[DiskStation 408 automatisch einschalten]]<br />
###[[DiskStation 106 WOL Wake-On-LAN Umbau]]<br />
|}</div>Itommeshttps://www.synology-wiki.de/index.php?title=Modifikationen&diff=7386Modifikationen2023-03-25T10:45:17Z<p>Itommes: </p>
<hr />
<div>[[Category:Portal]]<br />
{|width="100%" height="100%" border=0 cellpadding=5 cellspacing=7 style="border: 1px solid #c0c0c0;background-color:#e0e0e0"<br />
|style="background-color:#c0c0c0; border: 1px solid #a0a0a0; font-size:120%; font-weight: bold"|[[Modifikationen|Modding Themen]]<br />
|-<br />
|<br />
#[[Wichtige Informationen zum Modden der Synology Stations]]<br />
#[[Übersicht über verfügbare 3rd-Party-Apps aus unserer Community]]<br />
#Grundsätzliches zur Hard- und Software des Synology-Servers<br />
##[[Wie funktioniert ein Computer?]]<br />
##[[Platten, RAIDs und Dateisysteme]]<br />
##[[Überblick über Modifizierungen des Synology-Servers]]<br />
##[[Welchen Prozessortyp besitzt mein System?]]<br />
##[[Welche Performance besitzt mein System?]]<br />
##[[Arbeitsweise der Synology Stations]]<br />
##[[LEDs und Buttons]]<br />
##[[Viren auf dem Synology-Server?]]<br />
##[[Stromverbrauchswerte User]]<br />
#[[Die Kommandozeile]]<br />
##[[Grundlegende Befehle auf der Kommandozeile]]<br />
##[[Vergleich von Texteditoren]]<br />
###[[vi]]<br />
###[[vim]]<br />
###[[nano]]<br />
##[[less|Alternativer Pager less]]<br />
##[[Synology Toolset]]<br />
##[[Locale-UTF8|UTF-8–Kodierung einstellen]]<br />
##[[synogear: weitere Tools]]<br />
#[[Wo ist was im Linux-System]]<br />
##[[Dateien im /etc-Verzeichnis|/etc-Verzeichnis]]<br />
##[[Dateien im /dev-Verzeichnis|/dev-Verzeichnis]]<br />
##[[Dateien im /lib-Verzeichnis|/lib-Verzeichnis]]<br />
##[[Dateien im /tmp-Verzeichnis|/tmp-Verzeichnis]]<br />
##[[Dateien im /usr-Verzeichnis|/usr-Verzeichnis]]<br />
##[[Dateien im /var-Verzeichnis|/var-Verzeichnis]]<br />
##[[Dateien im /volume1-Verzeichnis|/volume1-Verzeichnis]]<br />
#[[Nicht unterstützte Konfigurationsänderungen]]<br />
##Systemmanagement<br />
###[[3rd_Party_Applications_absichern|3rd Party Applications vor unberechtigten Zugriffen schützen]]<br />
###[[Cron|Cron konfigurieren]]<br />
###[[Generierung eines eigenen SSL-Zertifikats]]<br />
###[[SSL-Zertifikat von ready2host einbinden]]<br />
###[[Downgrade der Synology-Firmware]]<br />
###[[Mount Bind]]<br />
###[[Gemeinsames Homeverzeichnis für mehrere User]]<br />
###[[User-Apache alle Zugriffe via Browser loggen lassen|Logdatei für den Apache-Server erstellen]]<br />
###[[Anzahl der möglichen Terminalfenster erhöhen]]<br />
###[[ssh_mit_Zertifikaten_absichern|Secure Shell (ssh) Zugriff nur mit Schlüssel]]<br />
###[[Ssh_clients_blocken|PHP Script zum Logfile Scan nach ssh Fehlern]]<br />
###[[Automatisches Herunterfahren wenn kein Ping möglich]]<br />
###[[Statusmail von der Diskstation]]<br />
###[[Aktuellen Status twittern (CPU, RAM, Speicher)]]<br />
###[[DSM Zugriff auf IP-Ebene beschränken]]<br />
###[[Debian auf der DiskStation]]<br />
###[[Thumbnailerzeugung beschleunigen ]]<br />
###[[Cacti Monitoring auf Diskstation installieren]]<br />
###[[SSMTP: Mit Bordmitteln eine E-Mail über die Konsole versenden.]]<br />
##Firmware-Upgrades<br />
###[[Upgrade von DS101g+ auf DS107]]<br />
##Backup Modifikationen<br />
###[[Alternierendes Backup]]<br />
###[[Backup der MySQL-Datenbank über einen cronjob]]<br />
###[[Backup über RSync auf einen angeschlossenen Datenträger]]<br />
###[[rsnapshot|Backups mit Rsnapshot erstellen]]<br />
###[[Offsite Backup von DS auf WebDAV-Speicher (z.B. von 1und1, GMX, Web.de, Strato, iDisk (MobileMe))]]<br />
### [[Generationsbackup_mit_rsync_und_rsnapshot_im_Netzwerk|Generationsbackup über Netzwerk]]<br />
### [[Verschlüsseltes Backup]]<br />
### [[duplicity|duplicity (SSH/SCP, RSync, FTP, WebDAV, IMAP, Amazon S3 + optionale Verschlüsselung)]]<br />
### [[WebDAV-Speicher mithilfe von davfs2 direkt in die DS einbinden]]<br />
### [[Zeitgesteuerte Sicherung mittels wget inkl. Protokoll]]<br />
###[[CrashPlan Headless Client]]<br />
##Download Modifikationen<br />
###[[pyLoad]]<br />
###[[appleJuice]]<br />
##Multimedia Modifikationen<br />
###[[TwonkyVision]]<br />
###[[Twonky auf der DS211j installieren]]<br />
###[[Swisscenter_auf_Diskstation_installieren|Swisscenter installieren]]<br />
###[[Fuppes]]<br />
###[[PS3 Mediaserver]]<br />
###[[iTunes Playlists Importieren]]<br />
###[[Einbinden einer DS über NFS bei älteren Samsung-TVs]]<br />
##Datenträger Mods<br />
###[[Upgrade eines None-RAID Volume zu RAID1 / RAID5]]<br />
###[[Hartnäckigen USB-Stick mit ext2/3 formatieren und einbinden]]<br />
###[[Verschlüsselte_Container|Verschlüsselte Container auf der DS]]<br />
## <span id="mailstation">Mailstation Mods</span><br />
### Dovecot Server (imap/pop3)<br />
#### [[Externe_Accounts_abrufen|Externe Accounts mit getmail abrufen]]<br />
#### [[Virtuelle_E-Mail_Nutzer_mit_dovecot|Virtuelle User]]<br />
#### [[E-mails_filtern_mit_dovecot-sieve|Dovecot-sieve zum Filtern von E-Mails]]<br />
#### [[Abwesenheitsmeldungen_mit_dovecot-sieve|AutoReply]]<br />
### Postfix Server (smtp)<br />
#### [[SMTP_Dialog_Restriktionen|Client Restriktionen]]<br />
#### [[Virtuelle_E-Mail_Nutzer_mit_postfix|Virtuelle User]]<br />
#### [[Zusaetzliche_Ports_fuer_Postfix|Zusätzliche Ports]]<br />
#### [[Mail-Relay_mit_Postfix|SMTP Relay einrichten]]<br />
#### [[Postgrey_greylisting_fuer_postfix|Greylisting mit postgrey]]<br />
#### [[Postfwd_firewall_fuer_postfix|Postfix Firewall postfwd]]<br />
#### [[Abwesenheitsmeldungen_mit_postfix|Autoreply]]<br />
### Spamassassin<br />
#### [[Externe_Accounts_abrufen#SpamAssassin_installieren_und_einrichten|Spamassassin installieren]]<br />
#### [[Regeln_von_Spamassassin|Die Regeln des Spamassassin]]<br />
#### [[Postfix_und_Spamassassin|Spamfilterung mit Postfix und Spamassassin]]<br />
### Various<br />
#### [[Fehlersuche in der Mailstation]]<br />
#### [[Nuetzliche_Kommandos_fuer_Mailstation|Nützliche Kommandos der Mailstation]]<br />
#### [[Mailinglisten_mit_mailman|Mailing-Listen mit mailman]]<br />
#### [[Getmail_script|getmail nutzen mit Hibernate der Festplatten]]<br />
#### [[Virtuelle_E-Mail_User_erstellen|Script zur Erstellung von virtuellen Nutzern (E-Mail)]]<br />
#### [[Roundcube als Webmail-Client für externen IMAP-Account verwenden]]<br />
## Sonstige Modifikationen<br />
### [[USV Shutdown an Mac über Netzerk weiterleiten mit Growl]]<br />
### [[Installation der Online Teamlösung eGroupWare Community Edition]]<br />
### [[Verteiltes Rechnen mit der DiskStation anhand von distributed.net]]<br />
### [[Hits der Photostation zuruecksetzen]]<br />
### [[Boost Joomla Performance]]<br />
### [[Druckerverwaltung und Netzwerkdrucker einbinden]]<br />
###[[Wake on LAN (WOL) nur mit PHP, auch über das Internet]]<br />
###[[DdnsAutoLogin|ddnsAutoLogin]]<br />
###[[PXE|PXE - Preboot eXecution Environment]]<br />
###[[OpenVPN zu einer Easybox 904 xDSL: Konfiganpassung via Konsole]]<br />
###[[Wörterbücher für Volltextsuche mit PostgreSQL erstellen]]<br />
###[[Guacamole mit Docker|Guacamole mit Docker]]<br />
###[[Synapse mit Docker|Synapse mit Docker]]<br />
###[[TvHeadend mit Docker und Sundtek SkyTV Ultimate|TvHeadend mit Docker und Sundtek SkyTV Ultimate]]<br />
<br />
#[[IPKG]]<br />
##[[Apache IPKG|Alternativer Apache-Server]]<br />
##[[OpenVPN_auf_der_Diskstation|OpenVPN auf einer DS betreiben]]<br />
##[[Streamripper]]<br />
##[[Samba_via_ipkg_installieren|Alternativer Samba-Server]]<br />
##[[Icecast_via_ipkg_installieren|Icecast Server]]<br />
##[[vsFTP installieren|Alternativer FTP Dienst]]<br />
##[[SFTP_SCP|SFTP und SCP]]<br />
##[[SVN-Server installieren|SVN-Server]]<br />
##[[Gitolite|Git + Gitolite installieren]]<br />
##[[TFTP-Daemon einrichten und verwenden]]<br />
##[[Java|Java installieren]]<br />
##[[Xinetd_via_ipkg_installieren|xinetd Daemon via ipkg installieren]]<br />
###[[Xinetd_Beispiel_Eigener_Dienst|Eigener Dienst per xinetd]]<br />
##[[Syslog-ng via ipkg installieren]]<br />
##[[YouGrabber]]<br />
##[[Geschwindigkeitsmessung mit iperf]]<br />
##[[Installation torrentflux-b4rt]]<br />
##[[Bind9 DNS-Server]]<br />
##[[Streaming server (ggrab) für DBox2-Aufnahmen einrichten]]<br />
##[[USB Schaltbare Steckdosenleiste]]<br />
##[[Tinyproxy]]<br />
##[[DHCP-Server]]<br />
##[[MoinMoin-Wiki]]<br />
##[[Inetutils|Inetutils, ftp, tftp, rcp, rsh, ping, ping6]]<br />
##[[Nail|Mit Nail ein E-Mail verschicken]]<br />
##[[Nmap|Portscanner Nmap]]<br />
##[[Mpd|Music Player Daemon mpd]]<br />
#[[:Category:3rd-Party-Apps|3rd-party Applikationen]]<br />
##Konfiguration von 3rd-party Applikationen<br />
###Integration einer Hilfe in DSM<br />
####[[Integration einer Hilfe in DSM 5.1-|DSM 5.1 - 6.1]]<br />
<br />
<br />
#[[Veraltete Artikel der Kategorie „Modding Themen“]]<br />
##3rd-party Applikationen<br />
###Konfiguration von 3rd-party Applikationen<br />
####[[Aufbau eines Synology Packages (SPK)]]<br />
####[[Aufbau der Datei 'INFO']]<br />
####[[Aufbau der Datei 'application.cfg']]<br />
####[[Aufbau der Datei 'config']]<br />
####Integration einer Hilfe in DSM<br />
#####[[Integration einer Hilfe in DSM 3.x|DSM 3.x]]<br />
#####[[Integration einer Hilfe in DSM 4.0-5.0|DSM 4.0 - 5.0]]<br />
##[[Integration von 3rd-party Applikationen]]<br />
###[[phpMyAdmin als 3rd-Party Applikation|phpMyAdmin]]<br />
###[[phpPgAdmin als 3rd-Party Applikation|phpPgAdmin]]<br />
###[[phpSysInfo als 3rd-Party Applikation|phpSysInfo]]<br />
###[[aMule IP-Filter Download als 3rd-Party Applikation|aMule IP-Filter]]<br />
###[[eXtplorer als 3rd-party Applikation|eXtplorer (Alternative zur File Station)]]<br />
###[[3rd Party Application Manager]]<br />
###[[HttpWakeUp Wake-On-LAN Pakete per Webinterface verschicken]]<br />
###[[Rootkit Hunter als 3rd-Party Applikation|Rootkit Hunter]]<br />
###[[AdminTool]]<br />
###[[TeamSpeak 2 Server]]<br />
###[[TeamSpeak 3 Server]]<br />
###[[TeamSpeak 3 Server in Debian Chroot]]<br />
###[[FSyncMS|FSyncMS – ein Firefox Sync Server]]<br />
###[[Lesezeichen/Passwörter Synchronisation mit SyncPlaces für Firefox (über WebDAV auf der DS)]]<br />
###[[iStat Server]]<br />
### SqueezeCenter<br />
####[[SqueezeCenter-Existierende-MySQL-Instanz-verwenden|Bestehende Instanz verwenden]]<br />
###[[Minecraft-Server auf der Synology]]<br />
###[[SynoBox|SynoBox - ein Dropbox Client]]<br />
###[[AirSonos|AirSonos - per Airplay auf Sonos streamen]]<br />
###[[CoD2|Call of Duty 2 Server auf Synology]]<br />
##Kompilieren eigener Programme<br />
##[[Luadch]]<br />
###[[MediaInfo]]<br />
###[[bluetooth Treiber]]<br />
###[[sma-bluetooth]]<br />
###Hardware Modifikationen<br />
###[[DiskStation 209+ flüsterleise machen]]<br />
###[[DiskStation 106 automatisch einschalten]]<br />
###[[DiskStation 107 automatisch einschalten]]<br />
###[[DiskStation 211 automatisch einschalten]]<br />
###[[DiskStation 408 automatisch einschalten]]<br />
###[[DiskStation 106 WOL Wake-On-LAN Umbau]]<br />
|}</div>Itommeshttps://www.synology-wiki.de/index.php?title=Modifikationen&diff=7385Modifikationen2023-03-25T10:43:25Z<p>Itommes: </p>
<hr />
<div>[[Category:Portal]]<br />
{|width="100%" height="100%" border=0 cellpadding=5 cellspacing=7 style="border: 1px solid #c0c0c0;background-color:#e0e0e0"<br />
|style="background-color:#c0c0c0; border: 1px solid #a0a0a0; font-size:120%; font-weight: bold"|[[Modifikationen|Modding Themen]]<br />
|-<br />
|<br />
#[[Wichtige Informationen zum Modden der Synology Stations]]<br />
#[[Übersicht über verfügbare 3rd-Party-Apps aus unserer Community]]<br />
#Grundsätzliches zur Hard- und Software des Synology-Servers<br />
##[[Wie funktioniert ein Computer?]]<br />
##[[Platten, RAIDs und Dateisysteme]]<br />
##[[Überblick über Modifizierungen des Synology-Servers]]<br />
##[[Welchen Prozessortyp besitzt mein System?]]<br />
##[[Welche Performance besitzt mein System?]]<br />
##[[Arbeitsweise der Synology Stations]]<br />
##[[LEDs und Buttons]]<br />
##[[Viren auf dem Synology-Server?]]<br />
##[[Stromverbrauchswerte User]]<br />
#[[Die Kommandozeile]]<br />
##[[Grundlegende Befehle auf der Kommandozeile]]<br />
##[[Vergleich von Texteditoren]]<br />
###[[vi]]<br />
###[[vim]]<br />
###[[nano]]<br />
##[[less|Alternativer Pager less]]<br />
##[[Synology Toolset]]<br />
##[[Locale-UTF8|UTF-8–Kodierung einstellen]]<br />
##[[synogear: weitere Tools]]<br />
#[[Wo ist was im Linux-System]]<br />
##[[Dateien im /etc-Verzeichnis|/etc-Verzeichnis]]<br />
##[[Dateien im /dev-Verzeichnis|/dev-Verzeichnis]]<br />
##[[Dateien im /lib-Verzeichnis|/lib-Verzeichnis]]<br />
##[[Dateien im /tmp-Verzeichnis|/tmp-Verzeichnis]]<br />
##[[Dateien im /usr-Verzeichnis|/usr-Verzeichnis]]<br />
##[[Dateien im /var-Verzeichnis|/var-Verzeichnis]]<br />
##[[Dateien im /volume1-Verzeichnis|/volume1-Verzeichnis]]<br />
#[[Nicht unterstützte Konfigurationsänderungen]]<br />
##Systemmanagement<br />
###[[3rd_Party_Applications_absichern|3rd Party Applications vor unberechtigten Zugriffen schützen]]<br />
###[[Cron|Cron konfigurieren]]<br />
###[[Generierung eines eigenen SSL-Zertifikats]]<br />
###[[SSL-Zertifikat von ready2host einbinden]]<br />
###[[Downgrade der Synology-Firmware]]<br />
###[[Mount Bind]]<br />
###[[Gemeinsames Homeverzeichnis für mehrere User]]<br />
###[[User-Apache alle Zugriffe via Browser loggen lassen|Logdatei für den Apache-Server erstellen]]<br />
###[[Anzahl der möglichen Terminalfenster erhöhen]]<br />
###[[ssh_mit_Zertifikaten_absichern|Secure Shell (ssh) Zugriff nur mit Schlüssel]]<br />
###[[Ssh_clients_blocken|PHP Script zum Logfile Scan nach ssh Fehlern]]<br />
###[[Automatisches Herunterfahren wenn kein Ping möglich]]<br />
###[[Statusmail von der Diskstation]]<br />
###[[Aktuellen Status twittern (CPU, RAM, Speicher)]]<br />
###[[DSM Zugriff auf IP-Ebene beschränken]]<br />
###[[Debian auf der DiskStation]]<br />
###[[Thumbnailerzeugung beschleunigen ]]<br />
###[[Cacti Monitoring auf Diskstation installieren]]<br />
###[[SSMTP: Mit Bordmitteln eine E-Mail über die Konsole versenden.]]<br />
##Firmware-Upgrades<br />
###[[Upgrade von DS101g+ auf DS107]]<br />
##Backup Modifikationen<br />
###[[Alternierendes Backup]]<br />
###[[Backup der MySQL-Datenbank über einen cronjob]]<br />
###[[Backup über RSync auf einen angeschlossenen Datenträger]]<br />
###[[rsnapshot|Backups mit Rsnapshot erstellen]]<br />
###[[Offsite Backup von DS auf WebDAV-Speicher (z.B. von 1und1, GMX, Web.de, Strato, iDisk (MobileMe))]]<br />
### [[Generationsbackup_mit_rsync_und_rsnapshot_im_Netzwerk|Generationsbackup über Netzwerk]]<br />
### [[Verschlüsseltes Backup]]<br />
### [[duplicity|duplicity (SSH/SCP, RSync, FTP, WebDAV, IMAP, Amazon S3 + optionale Verschlüsselung)]]<br />
### [[WebDAV-Speicher mithilfe von davfs2 direkt in die DS einbinden]]<br />
### [[Zeitgesteuerte Sicherung mittels wget inkl. Protokoll]]<br />
###[[CrashPlan Headless Client]]<br />
##Download Modifikationen<br />
###[[pyLoad]]<br />
###[[appleJuice]]<br />
##Multimedia Modifikationen<br />
###[[TwonkyVision]]<br />
###[[Twonky auf der DS211j installieren]]<br />
###[[Swisscenter_auf_Diskstation_installieren|Swisscenter installieren]]<br />
###[[Fuppes]]<br />
###[[PS3 Mediaserver]]<br />
###[[iTunes Playlists Importieren]]<br />
###[[Einbinden einer DS über NFS bei älteren Samsung-TVs]]<br />
##Datenträger Mods<br />
###[[Upgrade eines None-RAID Volume zu RAID1 / RAID5]]<br />
###[[Hartnäckigen USB-Stick mit ext2/3 formatieren und einbinden]]<br />
###[[Verschlüsselte_Container|Verschlüsselte Container auf der DS]]<br />
## <span id="mailstation">Mailstation Mods</span><br />
### Dovecot Server (imap/pop3)<br />
#### [[Externe_Accounts_abrufen|Externe Accounts mit getmail abrufen]]<br />
#### [[Virtuelle_E-Mail_Nutzer_mit_dovecot|Virtuelle User]]<br />
#### [[E-mails_filtern_mit_dovecot-sieve|Dovecot-sieve zum Filtern von E-Mails]]<br />
#### [[Abwesenheitsmeldungen_mit_dovecot-sieve|AutoReply]]<br />
### Postfix Server (smtp)<br />
#### [[SMTP_Dialog_Restriktionen|Client Restriktionen]]<br />
#### [[Virtuelle_E-Mail_Nutzer_mit_postfix|Virtuelle User]]<br />
#### [[Zusaetzliche_Ports_fuer_Postfix|Zusätzliche Ports]]<br />
#### [[Mail-Relay_mit_Postfix|SMTP Relay einrichten]]<br />
#### [[Postgrey_greylisting_fuer_postfix|Greylisting mit postgrey]]<br />
#### [[Postfwd_firewall_fuer_postfix|Postfix Firewall postfwd]]<br />
#### [[Abwesenheitsmeldungen_mit_postfix|Autoreply]]<br />
### Spamassassin<br />
#### [[Externe_Accounts_abrufen#SpamAssassin_installieren_und_einrichten|Spamassassin installieren]]<br />
#### [[Regeln_von_Spamassassin|Die Regeln des Spamassassin]]<br />
#### [[Postfix_und_Spamassassin|Spamfilterung mit Postfix und Spamassassin]]<br />
### Various<br />
#### [[Fehlersuche in der Mailstation]]<br />
#### [[Nuetzliche_Kommandos_fuer_Mailstation|Nützliche Kommandos der Mailstation]]<br />
#### [[Mailinglisten_mit_mailman|Mailing-Listen mit mailman]]<br />
#### [[Getmail_script|getmail nutzen mit Hibernate der Festplatten]]<br />
#### [[Virtuelle_E-Mail_User_erstellen|Script zur Erstellung von virtuellen Nutzern (E-Mail)]]<br />
#### [[Roundcube als Webmail-Client für externen IMAP-Account verwenden]]<br />
## Sonstige Modifikationen<br />
### [[USV Shutdown an Mac über Netzerk weiterleiten mit Growl]]<br />
### [[Installation der Online Teamlösung eGroupWare Community Edition]]<br />
### [[Verteiltes Rechnen mit der DiskStation anhand von distributed.net]]<br />
### [[Hits der Photostation zuruecksetzen]]<br />
### [[Boost Joomla Performance]]<br />
### [[Druckerverwaltung und Netzwerkdrucker einbinden]]<br />
###[[Wake on LAN (WOL) nur mit PHP, auch über das Internet]]<br />
###[[DdnsAutoLogin|ddnsAutoLogin]]<br />
###[[PXE|PXE - Preboot eXecution Environment]]<br />
###[[OpenVPN zu einer Easybox 904 xDSL: Konfiganpassung via Konsole]]<br />
###[[Wörterbücher für Volltextsuche mit PostgreSQL erstellen]]<br />
###[[Guacamole mit Docker|Guacamole mit Docker]]<br />
###[[Synapse mit Docker|Synapse mit Docker]]<br />
###[[TvHeadend mit Docker und Sundtek SkyTV Ultimate|TvHeadend mit Docker und Sundtek SkyTV Ultimate]]<br />
<br />
#[[IPKG]]<br />
##[[Apache IPKG|Alternativer Apache-Server]]<br />
##[[OpenVPN_auf_der_Diskstation|OpenVPN auf einer DS betreiben]]<br />
##[[Streamripper]]<br />
##[[Samba_via_ipkg_installieren|Alternativer Samba-Server]]<br />
##[[Icecast_via_ipkg_installieren|Icecast Server]]<br />
##[[vsFTP installieren|Alternativer FTP Dienst]]<br />
##[[SFTP_SCP|SFTP und SCP]]<br />
##[[SVN-Server installieren|SVN-Server]]<br />
##[[Gitolite|Git + Gitolite installieren]]<br />
##[[TFTP-Daemon einrichten und verwenden]]<br />
##[[Java|Java installieren]]<br />
##[[Xinetd_via_ipkg_installieren|xinetd Daemon via ipkg installieren]]<br />
###[[Xinetd_Beispiel_Eigener_Dienst|Eigener Dienst per xinetd]]<br />
##[[Syslog-ng via ipkg installieren]]<br />
##[[YouGrabber]]<br />
##[[Geschwindigkeitsmessung mit iperf]]<br />
##[[Installation torrentflux-b4rt]]<br />
##[[Bind9 DNS-Server]]<br />
##[[Streaming server (ggrab) für DBox2-Aufnahmen einrichten]]<br />
##[[USB Schaltbare Steckdosenleiste]]<br />
##[[Tinyproxy]]<br />
##[[DHCP-Server]]<br />
##[[MoinMoin-Wiki]]<br />
##[[Inetutils|Inetutils, ftp, tftp, rcp, rsh, ping, ping6]]<br />
##[[Nail|Mit Nail ein E-Mail verschicken]]<br />
##[[Nmap|Portscanner Nmap]]<br />
##[[Mpd|Music Player Daemon mpd]]<br />
#[[:Category:3rd-Party-Apps|3rd-party Applikationen]]<br />
##Konfiguration von 3rd-party Applikationen<br />
###Integration einer Hilfe in DSM<br />
####[[Integration einer Hilfe in DSM 5.1-|DSM 5.1 - 6.1]]<br />
#Kompilieren eigener Programme<br />
##[[Luadch]]<br />
##[[MediaInfo]]<br />
##[[bluetooth Treiber]]<br />
##[[sma-bluetooth]]<br />
<br />
#[[Veraltete Artikel der Kategorie „Modding Themen“]]<br />
##3rd-party Applikationen<br />
###Konfiguration von 3rd-party Applikationen<br />
####[[Aufbau eines Synology Packages (SPK)]]<br />
####[[Aufbau der Datei 'INFO']]<br />
####[[Aufbau der Datei 'application.cfg']]<br />
####[[Aufbau der Datei 'config']]<br />
####Integration einer Hilfe in DSM<br />
#####[[Integration einer Hilfe in DSM 3.x|DSM 3.x]]<br />
#####[[Integration einer Hilfe in DSM 4.0-5.0|DSM 4.0 - 5.0]]<br />
##[[Integration von 3rd-party Applikationen]]<br />
###[[phpMyAdmin als 3rd-Party Applikation|phpMyAdmin]]<br />
###[[phpPgAdmin als 3rd-Party Applikation|phpPgAdmin]]<br />
###[[phpSysInfo als 3rd-Party Applikation|phpSysInfo]]<br />
###[[aMule IP-Filter Download als 3rd-Party Applikation|aMule IP-Filter]]<br />
###[[eXtplorer als 3rd-party Applikation|eXtplorer (Alternative zur File Station)]]<br />
###[[3rd Party Application Manager]]<br />
###[[HttpWakeUp Wake-On-LAN Pakete per Webinterface verschicken]]<br />
###[[Rootkit Hunter als 3rd-Party Applikation|Rootkit Hunter]]<br />
###[[AdminTool]]<br />
###[[TeamSpeak 2 Server]]<br />
###[[TeamSpeak 3 Server]]<br />
###[[TeamSpeak 3 Server in Debian Chroot]]<br />
###[[FSyncMS|FSyncMS – ein Firefox Sync Server]]<br />
###[[Lesezeichen/Passwörter Synchronisation mit SyncPlaces für Firefox (über WebDAV auf der DS)]]<br />
###[[iStat Server]]<br />
### SqueezeCenter<br />
####[[SqueezeCenter-Existierende-MySQL-Instanz-verwenden|Bestehende Instanz verwenden]]<br />
###[[Minecraft-Server auf der Synology]]<br />
###[[SynoBox|SynoBox - ein Dropbox Client]]<br />
###[[AirSonos|AirSonos - per Airplay auf Sonos streamen]]<br />
###[[CoD2|Call of Duty 2 Server auf Synology]]<br />
##Hardware Modifikationen<br />
###[[DiskStation 209+ flüsterleise machen]]<br />
###[[DiskStation 106 automatisch einschalten]]<br />
###[[DiskStation 107 automatisch einschalten]]<br />
###[[DiskStation 211 automatisch einschalten]]<br />
###[[DiskStation 408 automatisch einschalten]]<br />
###[[DiskStation 106 WOL Wake-On-LAN Umbau]]<br />
|}</div>Itommeshttps://www.synology-wiki.de/index.php?title=Modifikationen&diff=7384Modifikationen2023-03-25T10:24:02Z<p>Itommes: </p>
<hr />
<div>[[Category:Portal]]<br />
{|width="100%" height="100%" border=0 cellpadding=5 cellspacing=7 style="border: 1px solid #c0c0c0;background-color:#e0e0e0"<br />
|style="background-color:#c0c0c0; border: 1px solid #a0a0a0; font-size:120%; font-weight: bold"|[[Modifikationen|Modding Themen]]<br />
|-<br />
|<br />
#[[Wichtige Informationen zum Modden der Synology Stations]]<br />
#[[Übersicht über verfügbare 3rd-Party-Apps aus unserer Community]]<br />
#Grundsätzliches zur Hard- und Software des Synology-Servers<br />
##[[Wie funktioniert ein Computer?]]<br />
##[[Platten, RAIDs und Dateisysteme]]<br />
##[[Überblick über Modifizierungen des Synology-Servers]]<br />
##[[Welchen Prozessortyp besitzt mein System?]]<br />
##[[Welche Performance besitzt mein System?]]<br />
##[[Arbeitsweise der Synology Stations]]<br />
##[[LEDs und Buttons]]<br />
##[[Viren auf dem Synology-Server?]]<br />
##[[Stromverbrauchswerte User]]<br />
#[[Die Kommandozeile]]<br />
##[[Grundlegende Befehle auf der Kommandozeile]]<br />
##[[Vergleich von Texteditoren]]<br />
###[[vi]]<br />
###[[vim]]<br />
###[[nano]]<br />
##[[less|Alternativer Pager less]]<br />
##[[Synology Toolset]]<br />
##[[Locale-UTF8|UTF-8–Kodierung einstellen]]<br />
##[[synogear: weitere Tools]]<br />
#[[Wo ist was im Linux-System]]<br />
##[[Dateien im /etc-Verzeichnis|/etc-Verzeichnis]]<br />
##[[Dateien im /dev-Verzeichnis|/dev-Verzeichnis]]<br />
##[[Dateien im /lib-Verzeichnis|/lib-Verzeichnis]]<br />
##[[Dateien im /tmp-Verzeichnis|/tmp-Verzeichnis]]<br />
##[[Dateien im /usr-Verzeichnis|/usr-Verzeichnis]]<br />
##[[Dateien im /var-Verzeichnis|/var-Verzeichnis]]<br />
##[[Dateien im /volume1-Verzeichnis|/volume1-Verzeichnis]]<br />
#[[Nicht unterstützte Konfigurationsänderungen]]<br />
##Systemmanagement<br />
###[[3rd_Party_Applications_absichern|3rd Party Applications vor unberechtigten Zugriffen schützen]]<br />
###[[Cron|Cron konfigurieren]]<br />
###[[Generierung eines eigenen SSL-Zertifikats]]<br />
###[[SSL-Zertifikat von ready2host einbinden]]<br />
###[[Downgrade der Synology-Firmware]]<br />
###[[Mount Bind]]<br />
###[[Gemeinsames Homeverzeichnis für mehrere User]]<br />
###[[User-Apache alle Zugriffe via Browser loggen lassen|Logdatei für den Apache-Server erstellen]]<br />
###[[Anzahl der möglichen Terminalfenster erhöhen]]<br />
###[[ssh_mit_Zertifikaten_absichern|Secure Shell (ssh) Zugriff nur mit Schlüssel]]<br />
###[[Ssh_clients_blocken|PHP Script zum Logfile Scan nach ssh Fehlern]]<br />
###[[Automatisches Herunterfahren wenn kein Ping möglich]]<br />
###[[Statusmail von der Diskstation]]<br />
###[[Aktuellen Status twittern (CPU, RAM, Speicher)]]<br />
###[[DSM Zugriff auf IP-Ebene beschränken]]<br />
###[[Debian auf der DiskStation]]<br />
###[[Thumbnailerzeugung beschleunigen ]]<br />
###[[Cacti Monitoring auf Diskstation installieren]]<br />
###[[SSMTP: Mit Bordmitteln eine E-Mail über die Konsole versenden.]]<br />
##Firmware-Upgrades<br />
###[[Upgrade von DS101g+ auf DS107]]<br />
##Backup Modifikationen<br />
###[[Alternierendes Backup]]<br />
###[[Backup der MySQL-Datenbank über einen cronjob]]<br />
###[[Backup über RSync auf einen angeschlossenen Datenträger]]<br />
###[[rsnapshot|Backups mit Rsnapshot erstellen]]<br />
###[[Offsite Backup von DS auf WebDAV-Speicher (z.B. von 1und1, GMX, Web.de, Strato, iDisk (MobileMe))]]<br />
### [[Generationsbackup_mit_rsync_und_rsnapshot_im_Netzwerk|Generationsbackup über Netzwerk]]<br />
### [[Verschlüsseltes Backup]]<br />
### [[duplicity|duplicity (SSH/SCP, RSync, FTP, WebDAV, IMAP, Amazon S3 + optionale Verschlüsselung)]]<br />
### [[WebDAV-Speicher mithilfe von davfs2 direkt in die DS einbinden]]<br />
### [[Zeitgesteuerte Sicherung mittels wget inkl. Protokoll]]<br />
###[[CrashPlan Headless Client]]<br />
##Download Modifikationen<br />
###[[pyLoad]]<br />
###[[appleJuice]]<br />
##Multimedia Modifikationen<br />
###[[TwonkyVision]]<br />
###[[Twonky auf der DS211j installieren]]<br />
###[[Swisscenter_auf_Diskstation_installieren|Swisscenter installieren]]<br />
###[[Fuppes]]<br />
###[[PS3 Mediaserver]]<br />
###[[iTunes Playlists Importieren]]<br />
###[[Einbinden einer DS über NFS bei älteren Samsung-TVs]]<br />
##Datenträger Mods<br />
###[[Upgrade eines None-RAID Volume zu RAID1 / RAID5]]<br />
###[[Hartnäckigen USB-Stick mit ext2/3 formatieren und einbinden]]<br />
###[[Verschlüsselte_Container|Verschlüsselte Container auf der DS]]<br />
## <span id="mailstation">Mailstation Mods</span><br />
### Dovecot Server (imap/pop3)<br />
#### [[Externe_Accounts_abrufen|Externe Accounts mit getmail abrufen]]<br />
#### [[Virtuelle_E-Mail_Nutzer_mit_dovecot|Virtuelle User]]<br />
#### [[E-mails_filtern_mit_dovecot-sieve|Dovecot-sieve zum Filtern von E-Mails]]<br />
#### [[Abwesenheitsmeldungen_mit_dovecot-sieve|AutoReply]]<br />
### Postfix Server (smtp)<br />
#### [[SMTP_Dialog_Restriktionen|Client Restriktionen]]<br />
#### [[Virtuelle_E-Mail_Nutzer_mit_postfix|Virtuelle User]]<br />
#### [[Zusaetzliche_Ports_fuer_Postfix|Zusätzliche Ports]]<br />
#### [[Mail-Relay_mit_Postfix|SMTP Relay einrichten]]<br />
#### [[Postgrey_greylisting_fuer_postfix|Greylisting mit postgrey]]<br />
#### [[Postfwd_firewall_fuer_postfix|Postfix Firewall postfwd]]<br />
#### [[Abwesenheitsmeldungen_mit_postfix|Autoreply]]<br />
### Spamassassin<br />
#### [[Externe_Accounts_abrufen#SpamAssassin_installieren_und_einrichten|Spamassassin installieren]]<br />
#### [[Regeln_von_Spamassassin|Die Regeln des Spamassassin]]<br />
#### [[Postfix_und_Spamassassin|Spamfilterung mit Postfix und Spamassassin]]<br />
### Various<br />
#### [[Fehlersuche in der Mailstation]]<br />
#### [[Nuetzliche_Kommandos_fuer_Mailstation|Nützliche Kommandos der Mailstation]]<br />
#### [[Mailinglisten_mit_mailman|Mailing-Listen mit mailman]]<br />
#### [[Getmail_script|getmail nutzen mit Hibernate der Festplatten]]<br />
#### [[Virtuelle_E-Mail_User_erstellen|Script zur Erstellung von virtuellen Nutzern (E-Mail)]]<br />
#### [[Roundcube als Webmail-Client für externen IMAP-Account verwenden]]<br />
## Sonstige Modifikationen<br />
### [[USV Shutdown an Mac über Netzerk weiterleiten mit Growl]]<br />
### [[Installation der Online Teamlösung eGroupWare Community Edition]]<br />
### [[Verteiltes Rechnen mit der DiskStation anhand von distributed.net]]<br />
### [[Hits der Photostation zuruecksetzen]]<br />
### [[Boost Joomla Performance]]<br />
### [[Druckerverwaltung und Netzwerkdrucker einbinden]]<br />
###[[Wake on LAN (WOL) nur mit PHP, auch über das Internet]]<br />
###[[DdnsAutoLogin|ddnsAutoLogin]]<br />
###[[PXE|PXE - Preboot eXecution Environment]]<br />
###[[OpenVPN zu einer Easybox 904 xDSL: Konfiganpassung via Konsole]]<br />
###[[Wörterbücher für Volltextsuche mit PostgreSQL erstellen]]<br />
###[[Guacamole mit Docker|Guacamole mit Docker]]<br />
###[[Synapse mit Docker|Synapse mit Docker]]<br />
###[[TvHeadend mit Docker und Sundtek SkyTV Ultimate|TvHeadend mit Docker und Sundtek SkyTV Ultimate]]<br />
<br />
#[[IPKG]]<br />
##[[Apache IPKG|Alternativer Apache-Server]]<br />
##[[OpenVPN_auf_der_Diskstation|OpenVPN auf einer DS betreiben]]<br />
##[[Streamripper]]<br />
##[[Samba_via_ipkg_installieren|Alternativer Samba-Server]]<br />
##[[Icecast_via_ipkg_installieren|Icecast Server]]<br />
##[[vsFTP installieren|Alternativer FTP Dienst]]<br />
##[[SFTP_SCP|SFTP und SCP]]<br />
##[[SVN-Server installieren|SVN-Server]]<br />
##[[Gitolite|Git + Gitolite installieren]]<br />
##[[TFTP-Daemon einrichten und verwenden]]<br />
##[[Java|Java installieren]]<br />
##[[Xinetd_via_ipkg_installieren|xinetd Daemon via ipkg installieren]]<br />
###[[Xinetd_Beispiel_Eigener_Dienst|Eigener Dienst per xinetd]]<br />
##[[Syslog-ng via ipkg installieren]]<br />
##[[YouGrabber]]<br />
##[[Geschwindigkeitsmessung mit iperf]]<br />
##[[Installation torrentflux-b4rt]]<br />
##[[Bind9 DNS-Server]]<br />
##[[Streaming server (ggrab) für DBox2-Aufnahmen einrichten]]<br />
##[[USB Schaltbare Steckdosenleiste]]<br />
##[[Tinyproxy]]<br />
##[[DHCP-Server]]<br />
##[[MoinMoin-Wiki]]<br />
##[[Inetutils|Inetutils, ftp, tftp, rcp, rsh, ping, ping6]]<br />
##[[Nail|Mit Nail ein E-Mail verschicken]]<br />
##[[Nmap|Portscanner Nmap]]<br />
##[[Mpd|Music Player Daemon mpd]]<br />
#[[:Category:3rd-Party-Apps|3rd-party Applikationen]]<br />
##[[Konfiguration von 3rd-party Applikationen]]<br />
###Integration einer Hilfe in DSM<br />
####[[Integration einer Hilfe in DSM 5.1-|DSM 5.1 - 6.1]]<br />
##[[Integration von 3rd-party Applikationen]]<br />
###[[phpMyAdmin als 3rd-Party Applikation|phpMyAdmin]]<br />
###[[phpPgAdmin als 3rd-Party Applikation|phpPgAdmin]]<br />
###[[phpSysInfo als 3rd-Party Applikation|phpSysInfo]]<br />
###[[aMule IP-Filter Download als 3rd-Party Applikation|aMule IP-Filter]]<br />
###[[eXtplorer als 3rd-party Applikation|eXtplorer (Alternative zur File Station)]]<br />
###[[3rd Party Application Manager]]<br />
###[[HttpWakeUp Wake-On-LAN Pakete per Webinterface verschicken]]<br />
###[[Rootkit Hunter als 3rd-Party Applikation|Rootkit Hunter]]<br />
###[[AdminTool]]<br />
###[[TeamSpeak 2 Server]]<br />
###[[TeamSpeak 3 Server]]<br />
###[[TeamSpeak 3 Server in Debian Chroot]]<br />
###[[FSyncMS|FSyncMS – ein Firefox Sync Server]]<br />
###[[Lesezeichen/Passwörter Synchronisation mit SyncPlaces für Firefox (über WebDAV auf der DS)]]<br />
###[[iStat Server]]<br />
### SqueezeCenter<br />
####[[SqueezeCenter-Existierende-MySQL-Instanz-verwenden|Bestehende Instanz verwenden]]<br />
###[[Minecraft-Server auf der Synology]]<br />
###[[SynoBox|SynoBox - ein Dropbox Client]]<br />
###[[AirSonos|AirSonos - per Airplay auf Sonos streamen]]<br />
###[[CoD2|Call of Duty 2 Server auf Synology]]<br />
#Kompilieren eigener Programme<br />
##[[Luadch]]<br />
##[[MediaInfo]]<br />
##[[bluetooth Treiber]]<br />
##[[sma-bluetooth]]<br />
<br />
#[[Veraltete Artikel der Kategorie „Modding Themen“]]<br />
##3rd-party Applikationen<br />
###Konfiguration von 3rd-party Applikationen<br />
####[[Aufbau eines Synology Packages (SPK)]]<br />
####[[Aufbau der Datei 'INFO']]<br />
####[[Aufbau der Datei 'application.cfg']]<br />
####[[Aufbau der Datei 'config']]<br />
####Integration einer Hilfe in DSM<br />
#####[[Integration einer Hilfe in DSM 3.x|DSM 3.x]]<br />
#####[[Integration einer Hilfe in DSM 4.0-5.0|DSM 4.0 - 5.0]]<br />
##Hardware Modifikationen<br />
###[[DiskStation 209+ flüsterleise machen]]<br />
###[[DiskStation 106 automatisch einschalten]]<br />
###[[DiskStation 107 automatisch einschalten]]<br />
###[[DiskStation 211 automatisch einschalten]]<br />
###[[DiskStation 408 automatisch einschalten]]<br />
###[[DiskStation 106 WOL Wake-On-LAN Umbau]]<br />
|}</div>Itommeshttps://www.synology-wiki.de/index.php?title=Modifikationen&diff=7383Modifikationen2023-03-25T10:22:21Z<p>Itommes: </p>
<hr />
<div>[[Category:Portal]]<br />
{|width="100%" height="100%" border=0 cellpadding=5 cellspacing=7 style="border: 1px solid #c0c0c0;background-color:#e0e0e0"<br />
|style="background-color:#c0c0c0; border: 1px solid #a0a0a0; font-size:120%; font-weight: bold"|[[Modifikationen|Modding Themen]]<br />
|-<br />
|<br />
#[[Wichtige Informationen zum Modden der Synology Stations]]<br />
#[[Übersicht über verfügbare 3rd-Party-Apps aus unserer Community]]<br />
#Grundsätzliches zur Hard- und Software des Synology-Servers<br />
##[[Wie funktioniert ein Computer?]]<br />
##[[Platten, RAIDs und Dateisysteme]]<br />
##[[Überblick über Modifizierungen des Synology-Servers]]<br />
##[[Welchen Prozessortyp besitzt mein System?]]<br />
##[[Welche Performance besitzt mein System?]]<br />
##[[Arbeitsweise der Synology Stations]]<br />
##[[LEDs und Buttons]]<br />
##[[Viren auf dem Synology-Server?]]<br />
##[[Stromverbrauchswerte User]]<br />
#[[Die Kommandozeile]]<br />
##[[Grundlegende Befehle auf der Kommandozeile]]<br />
##[[Vergleich von Texteditoren]]<br />
###[[vi]]<br />
###[[vim]]<br />
###[[nano]]<br />
##[[less|Alternativer Pager less]]<br />
##[[Synology Toolset]]<br />
##[[Locale-UTF8|UTF-8–Kodierung einstellen]]<br />
##[[synogear: weitere Tools]]<br />
#[[Wo ist was im Linux-System]]<br />
##[[Dateien im /etc-Verzeichnis|/etc-Verzeichnis]]<br />
##[[Dateien im /dev-Verzeichnis|/dev-Verzeichnis]]<br />
##[[Dateien im /lib-Verzeichnis|/lib-Verzeichnis]]<br />
##[[Dateien im /tmp-Verzeichnis|/tmp-Verzeichnis]]<br />
##[[Dateien im /usr-Verzeichnis|/usr-Verzeichnis]]<br />
##[[Dateien im /var-Verzeichnis|/var-Verzeichnis]]<br />
##[[Dateien im /volume1-Verzeichnis|/volume1-Verzeichnis]]<br />
#[[Nicht unterstützte Konfigurationsänderungen]]<br />
##Systemmanagement<br />
###[[3rd_Party_Applications_absichern|3rd Party Applications vor unberechtigten Zugriffen schützen]]<br />
###[[Cron|Cron konfigurieren]]<br />
###[[Generierung eines eigenen SSL-Zertifikats]]<br />
###[[SSL-Zertifikat von ready2host einbinden]]<br />
###[[Downgrade der Synology-Firmware]]<br />
###[[Mount Bind]]<br />
###[[Gemeinsames Homeverzeichnis für mehrere User]]<br />
###[[User-Apache alle Zugriffe via Browser loggen lassen|Logdatei für den Apache-Server erstellen]]<br />
###[[Anzahl der möglichen Terminalfenster erhöhen]]<br />
###[[ssh_mit_Zertifikaten_absichern|Secure Shell (ssh) Zugriff nur mit Schlüssel]]<br />
###[[Ssh_clients_blocken|PHP Script zum Logfile Scan nach ssh Fehlern]]<br />
###[[Automatisches Herunterfahren wenn kein Ping möglich]]<br />
###[[Statusmail von der Diskstation]]<br />
###[[Aktuellen Status twittern (CPU, RAM, Speicher)]]<br />
###[[DSM Zugriff auf IP-Ebene beschränken]]<br />
###[[Debian auf der DiskStation]]<br />
###[[Thumbnailerzeugung beschleunigen ]]<br />
###[[Cacti Monitoring auf Diskstation installieren]]<br />
###[[SSMTP: Mit Bordmitteln eine E-Mail über die Konsole versenden.]]<br />
##Firmware-Upgrades<br />
###[[Upgrade von DS101g+ auf DS107]]<br />
##Backup Modifikationen<br />
###[[Alternierendes Backup]]<br />
###[[Backup der MySQL-Datenbank über einen cronjob]]<br />
###[[Backup über RSync auf einen angeschlossenen Datenträger]]<br />
###[[rsnapshot|Backups mit Rsnapshot erstellen]]<br />
###[[Offsite Backup von DS auf WebDAV-Speicher (z.B. von 1und1, GMX, Web.de, Strato, iDisk (MobileMe))]]<br />
### [[Generationsbackup_mit_rsync_und_rsnapshot_im_Netzwerk|Generationsbackup über Netzwerk]]<br />
### [[Verschlüsseltes Backup]]<br />
### [[duplicity|duplicity (SSH/SCP, RSync, FTP, WebDAV, IMAP, Amazon S3 + optionale Verschlüsselung)]]<br />
### [[WebDAV-Speicher mithilfe von davfs2 direkt in die DS einbinden]]<br />
### [[Zeitgesteuerte Sicherung mittels wget inkl. Protokoll]]<br />
###[[CrashPlan Headless Client]]<br />
##Download Modifikationen<br />
###[[pyLoad]]<br />
###[[appleJuice]]<br />
##Multimedia Modifikationen<br />
###[[TwonkyVision]]<br />
###[[Twonky auf der DS211j installieren]]<br />
###[[Swisscenter_auf_Diskstation_installieren|Swisscenter installieren]]<br />
###[[Fuppes]]<br />
###[[PS3 Mediaserver]]<br />
###[[iTunes Playlists Importieren]]<br />
###[[Einbinden einer DS über NFS bei älteren Samsung-TVs]]<br />
##Datenträger Mods<br />
###[[Upgrade eines None-RAID Volume zu RAID1 / RAID5]]<br />
###[[Hartnäckigen USB-Stick mit ext2/3 formatieren und einbinden]]<br />
###[[Verschlüsselte_Container|Verschlüsselte Container auf der DS]]<br />
## <span id="mailstation">Mailstation Mods</span><br />
### Dovecot Server (imap/pop3)<br />
#### [[Externe_Accounts_abrufen|Externe Accounts mit getmail abrufen]]<br />
#### [[Virtuelle_E-Mail_Nutzer_mit_dovecot|Virtuelle User]]<br />
#### [[E-mails_filtern_mit_dovecot-sieve|Dovecot-sieve zum Filtern von E-Mails]]<br />
#### [[Abwesenheitsmeldungen_mit_dovecot-sieve|AutoReply]]<br />
### Postfix Server (smtp)<br />
#### [[SMTP_Dialog_Restriktionen|Client Restriktionen]]<br />
#### [[Virtuelle_E-Mail_Nutzer_mit_postfix|Virtuelle User]]<br />
#### [[Zusaetzliche_Ports_fuer_Postfix|Zusätzliche Ports]]<br />
#### [[Mail-Relay_mit_Postfix|SMTP Relay einrichten]]<br />
#### [[Postgrey_greylisting_fuer_postfix|Greylisting mit postgrey]]<br />
#### [[Postfwd_firewall_fuer_postfix|Postfix Firewall postfwd]]<br />
#### [[Abwesenheitsmeldungen_mit_postfix|Autoreply]]<br />
### Spamassassin<br />
#### [[Externe_Accounts_abrufen#SpamAssassin_installieren_und_einrichten|Spamassassin installieren]]<br />
#### [[Regeln_von_Spamassassin|Die Regeln des Spamassassin]]<br />
#### [[Postfix_und_Spamassassin|Spamfilterung mit Postfix und Spamassassin]]<br />
### Various<br />
#### [[Fehlersuche in der Mailstation]]<br />
#### [[Nuetzliche_Kommandos_fuer_Mailstation|Nützliche Kommandos der Mailstation]]<br />
#### [[Mailinglisten_mit_mailman|Mailing-Listen mit mailman]]<br />
#### [[Getmail_script|getmail nutzen mit Hibernate der Festplatten]]<br />
#### [[Virtuelle_E-Mail_User_erstellen|Script zur Erstellung von virtuellen Nutzern (E-Mail)]]<br />
#### [[Roundcube als Webmail-Client für externen IMAP-Account verwenden]]<br />
## Sonstige Modifikationen<br />
### [[USV Shutdown an Mac über Netzerk weiterleiten mit Growl]]<br />
### [[Installation der Online Teamlösung eGroupWare Community Edition]]<br />
### [[Verteiltes Rechnen mit der DiskStation anhand von distributed.net]]<br />
### [[Hits der Photostation zuruecksetzen]]<br />
### [[Boost Joomla Performance]]<br />
### [[Druckerverwaltung und Netzwerkdrucker einbinden]]<br />
###[[Wake on LAN (WOL) nur mit PHP, auch über das Internet]]<br />
###[[DdnsAutoLogin|ddnsAutoLogin]]<br />
###[[PXE|PXE - Preboot eXecution Environment]]<br />
###[[OpenVPN zu einer Easybox 904 xDSL: Konfiganpassung via Konsole]]<br />
###[[Wörterbücher für Volltextsuche mit PostgreSQL erstellen]]<br />
###[[Guacamole mit Docker|Guacamole mit Docker]]<br />
###[[Synapse mit Docker|Synapse mit Docker]]<br />
###[[TvHeadend mit Docker und Sundtek SkyTV Ultimate|TvHeadend mit Docker und Sundtek SkyTV Ultimate]]<br />
<br />
#[[IPKG]]<br />
##[[Apache IPKG|Alternativer Apache-Server]]<br />
##[[OpenVPN_auf_der_Diskstation|OpenVPN auf einer DS betreiben]]<br />
##[[Streamripper]]<br />
##[[Samba_via_ipkg_installieren|Alternativer Samba-Server]]<br />
##[[Icecast_via_ipkg_installieren|Icecast Server]]<br />
##[[vsFTP installieren|Alternativer FTP Dienst]]<br />
##[[SFTP_SCP|SFTP und SCP]]<br />
##[[SVN-Server installieren|SVN-Server]]<br />
##[[Gitolite|Git + Gitolite installieren]]<br />
##[[TFTP-Daemon einrichten und verwenden]]<br />
##[[Java|Java installieren]]<br />
##[[Xinetd_via_ipkg_installieren|xinetd Daemon via ipkg installieren]]<br />
###[[Xinetd_Beispiel_Eigener_Dienst|Eigener Dienst per xinetd]]<br />
##[[Syslog-ng via ipkg installieren]]<br />
##[[YouGrabber]]<br />
##[[Geschwindigkeitsmessung mit iperf]]<br />
##[[Installation torrentflux-b4rt]]<br />
##[[Bind9 DNS-Server]]<br />
##[[Streaming server (ggrab) für DBox2-Aufnahmen einrichten]]<br />
##[[USB Schaltbare Steckdosenleiste]]<br />
##[[Tinyproxy]]<br />
##[[DHCP-Server]]<br />
##[[MoinMoin-Wiki]]<br />
##[[Inetutils|Inetutils, ftp, tftp, rcp, rsh, ping, ping6]]<br />
##[[Nail|Mit Nail ein E-Mail verschicken]]<br />
##[[Nmap|Portscanner Nmap]]<br />
##[[Mpd|Music Player Daemon mpd]]<br />
#[[:Category:3rd-Party-Apps|3rd-party Applikationen]]<br />
##[[Konfiguration von 3rd-party Applikationen]]<br />
###Integration einer Hilfe in DSM<br />
####[[Integration einer Hilfe in DSM 5.1-|DSM 5.1 - 6.1]]<br />
##[[Integration von 3rd-party Applikationen]]<br />
###[[phpMyAdmin als 3rd-Party Applikation|phpMyAdmin]]<br />
###[[phpPgAdmin als 3rd-Party Applikation|phpPgAdmin]]<br />
###[[phpSysInfo als 3rd-Party Applikation|phpSysInfo]]<br />
###[[aMule IP-Filter Download als 3rd-Party Applikation|aMule IP-Filter]]<br />
###[[eXtplorer als 3rd-party Applikation|eXtplorer (Alternative zur File Station)]]<br />
###[[3rd Party Application Manager]]<br />
###[[HttpWakeUp Wake-On-LAN Pakete per Webinterface verschicken]]<br />
###[[Rootkit Hunter als 3rd-Party Applikation|Rootkit Hunter]]<br />
###[[AdminTool]]<br />
###[[TeamSpeak 2 Server]]<br />
###[[TeamSpeak 3 Server]]<br />
###[[TeamSpeak 3 Server in Debian Chroot]]<br />
###[[FSyncMS|FSyncMS – ein Firefox Sync Server]]<br />
###[[Lesezeichen/Passwörter Synchronisation mit SyncPlaces für Firefox (über WebDAV auf der DS)]]<br />
###[[iStat Server]]<br />
### SqueezeCenter<br />
####[[SqueezeCenter-Existierende-MySQL-Instanz-verwenden|Bestehende Instanz verwenden]]<br />
###[[Minecraft-Server auf der Synology]]<br />
###[[SynoBox|SynoBox - ein Dropbox Client]]<br />
###[[AirSonos|AirSonos - per Airplay auf Sonos streamen]]<br />
###[[CoD2|Call of Duty 2 Server auf Synology]]<br />
#Kompilieren eigener Programme<br />
##[[Luadch]]<br />
##[[MediaInfo]]<br />
##[[bluetooth Treiber]]<br />
##[[sma-bluetooth]]<br />
<br />
#[[Veraltete Artikel der Kategorie „Modding Themen“]]<br />
##[[:Category:3rd-Party-Apps|3rd-party Applikationen]]<br />
###[[Konfiguration von 3rd-party Applikationen]]<br />
####[[Aufbau eines Synology Packages (SPK)]]<br />
####[[Aufbau der Datei 'INFO']]<br />
####[[Aufbau der Datei 'application.cfg']]<br />
####[[Aufbau der Datei 'config']]<br />
####Integration einer Hilfe in DSM<br />
#####[[Integration einer Hilfe in DSM 3.x|DSM 3.x]]<br />
#####[[Integration einer Hilfe in DSM 4.0-5.0|DSM 4.0 - 5.0]]<br />
##Hardware Modifikationen<br />
###[[DiskStation 209+ flüsterleise machen]]<br />
###[[DiskStation 106 automatisch einschalten]]<br />
###[[DiskStation 107 automatisch einschalten]]<br />
###[[DiskStation 211 automatisch einschalten]]<br />
###[[DiskStation 408 automatisch einschalten]]<br />
###[[DiskStation 106 WOL Wake-On-LAN Umbau]]<br />
|}</div>Itommeshttps://www.synology-wiki.de/index.php?title=Modifikationen&diff=7382Modifikationen2023-03-25T10:02:44Z<p>Itommes: </p>
<hr />
<div>[[Category:Portal]]<br />
{|width="100%" height="100%" border=0 cellpadding=5 cellspacing=7 style="border: 1px solid #c0c0c0;background-color:#e0e0e0"<br />
|style="background-color:#c0c0c0; border: 1px solid #a0a0a0; font-size:120%; font-weight: bold"|[[Modifikationen|Modding Themen]]<br />
|-<br />
|<br />
#[[Wichtige Informationen zum Modden der Synology Stations]]<br />
#[[Übersicht über verfügbare 3rd-Party-Apps aus unserer Community]]<br />
#Grundsätzliches zur Hard- und Software des Synology-Servers<br />
##[[Wie funktioniert ein Computer?]]<br />
##[[Platten, RAIDs und Dateisysteme]]<br />
##[[Überblick über Modifizierungen des Synology-Servers]]<br />
##[[Welchen Prozessortyp besitzt mein System?]]<br />
##[[Welche Performance besitzt mein System?]]<br />
##[[Arbeitsweise der Synology Stations]]<br />
##[[LEDs und Buttons]]<br />
##[[Viren auf dem Synology-Server?]]<br />
##[[Stromverbrauchswerte User]]<br />
#[[Die Kommandozeile]]<br />
##[[Grundlegende Befehle auf der Kommandozeile]]<br />
##[[Vergleich von Texteditoren]]<br />
###[[vi]]<br />
###[[vim]]<br />
###[[nano]]<br />
##[[less|Alternativer Pager less]]<br />
##[[Synology Toolset]]<br />
##[[Locale-UTF8|UTF-8–Kodierung einstellen]]<br />
##[[synogear: weitere Tools]]<br />
#[[Wo ist was im Linux-System]]<br />
##[[Dateien im /etc-Verzeichnis|/etc-Verzeichnis]]<br />
##[[Dateien im /dev-Verzeichnis|/dev-Verzeichnis]]<br />
##[[Dateien im /lib-Verzeichnis|/lib-Verzeichnis]]<br />
##[[Dateien im /tmp-Verzeichnis|/tmp-Verzeichnis]]<br />
##[[Dateien im /usr-Verzeichnis|/usr-Verzeichnis]]<br />
##[[Dateien im /var-Verzeichnis|/var-Verzeichnis]]<br />
##[[Dateien im /volume1-Verzeichnis|/volume1-Verzeichnis]]<br />
#[[Nicht unterstützte Konfigurationsänderungen]]<br />
##Systemmanagement<br />
###[[3rd_Party_Applications_absichern|3rd Party Applications vor unberechtigten Zugriffen schützen]]<br />
###[[Cron|Cron konfigurieren]]<br />
###[[Generierung eines eigenen SSL-Zertifikats]]<br />
###[[SSL-Zertifikat von ready2host einbinden]]<br />
###[[Downgrade der Synology-Firmware]]<br />
###[[Mount Bind]]<br />
###[[Gemeinsames Homeverzeichnis für mehrere User]]<br />
###[[User-Apache alle Zugriffe via Browser loggen lassen|Logdatei für den Apache-Server erstellen]]<br />
###[[Anzahl der möglichen Terminalfenster erhöhen]]<br />
###[[ssh_mit_Zertifikaten_absichern|Secure Shell (ssh) Zugriff nur mit Schlüssel]]<br />
###[[Ssh_clients_blocken|PHP Script zum Logfile Scan nach ssh Fehlern]]<br />
###[[Automatisches Herunterfahren wenn kein Ping möglich]]<br />
###[[Statusmail von der Diskstation]]<br />
###[[Aktuellen Status twittern (CPU, RAM, Speicher)]]<br />
###[[DSM Zugriff auf IP-Ebene beschränken]]<br />
###[[Debian auf der DiskStation]]<br />
###[[Thumbnailerzeugung beschleunigen ]]<br />
###[[Cacti Monitoring auf Diskstation installieren]]<br />
###[[SSMTP: Mit Bordmitteln eine E-Mail über die Konsole versenden.]]<br />
##Firmware-Upgrades<br />
###[[Upgrade von DS101g+ auf DS107]]<br />
##Backup Modifikationen<br />
###[[Alternierendes Backup]]<br />
###[[Backup der MySQL-Datenbank über einen cronjob]]<br />
###[[Backup über RSync auf einen angeschlossenen Datenträger]]<br />
###[[rsnapshot|Backups mit Rsnapshot erstellen]]<br />
###[[Offsite Backup von DS auf WebDAV-Speicher (z.B. von 1und1, GMX, Web.de, Strato, iDisk (MobileMe))]]<br />
### [[Generationsbackup_mit_rsync_und_rsnapshot_im_Netzwerk|Generationsbackup über Netzwerk]]<br />
### [[Verschlüsseltes Backup]]<br />
### [[duplicity|duplicity (SSH/SCP, RSync, FTP, WebDAV, IMAP, Amazon S3 + optionale Verschlüsselung)]]<br />
### [[WebDAV-Speicher mithilfe von davfs2 direkt in die DS einbinden]]<br />
### [[Zeitgesteuerte Sicherung mittels wget inkl. Protokoll]]<br />
###[[CrashPlan Headless Client]]<br />
##Download Modifikationen<br />
###[[pyLoad]]<br />
###[[appleJuice]]<br />
##Multimedia Modifikationen<br />
###[[TwonkyVision]]<br />
###[[Twonky auf der DS211j installieren]]<br />
###[[Swisscenter_auf_Diskstation_installieren|Swisscenter installieren]]<br />
###[[Fuppes]]<br />
###[[PS3 Mediaserver]]<br />
###[[iTunes Playlists Importieren]]<br />
###[[Einbinden einer DS über NFS bei älteren Samsung-TVs]]<br />
##Datenträger Mods<br />
###[[Upgrade eines None-RAID Volume zu RAID1 / RAID5]]<br />
###[[Hartnäckigen USB-Stick mit ext2/3 formatieren und einbinden]]<br />
###[[Verschlüsselte_Container|Verschlüsselte Container auf der DS]]<br />
## <span id="mailstation">Mailstation Mods</span><br />
### Dovecot Server (imap/pop3)<br />
#### [[Externe_Accounts_abrufen|Externe Accounts mit getmail abrufen]]<br />
#### [[Virtuelle_E-Mail_Nutzer_mit_dovecot|Virtuelle User]]<br />
#### [[E-mails_filtern_mit_dovecot-sieve|Dovecot-sieve zum Filtern von E-Mails]]<br />
#### [[Abwesenheitsmeldungen_mit_dovecot-sieve|AutoReply]]<br />
### Postfix Server (smtp)<br />
#### [[SMTP_Dialog_Restriktionen|Client Restriktionen]]<br />
#### [[Virtuelle_E-Mail_Nutzer_mit_postfix|Virtuelle User]]<br />
#### [[Zusaetzliche_Ports_fuer_Postfix|Zusätzliche Ports]]<br />
#### [[Mail-Relay_mit_Postfix|SMTP Relay einrichten]]<br />
#### [[Postgrey_greylisting_fuer_postfix|Greylisting mit postgrey]]<br />
#### [[Postfwd_firewall_fuer_postfix|Postfix Firewall postfwd]]<br />
#### [[Abwesenheitsmeldungen_mit_postfix|Autoreply]]<br />
### Spamassassin<br />
#### [[Externe_Accounts_abrufen#SpamAssassin_installieren_und_einrichten|Spamassassin installieren]]<br />
#### [[Regeln_von_Spamassassin|Die Regeln des Spamassassin]]<br />
#### [[Postfix_und_Spamassassin|Spamfilterung mit Postfix und Spamassassin]]<br />
### Various<br />
#### [[Fehlersuche in der Mailstation]]<br />
#### [[Nuetzliche_Kommandos_fuer_Mailstation|Nützliche Kommandos der Mailstation]]<br />
#### [[Mailinglisten_mit_mailman|Mailing-Listen mit mailman]]<br />
#### [[Getmail_script|getmail nutzen mit Hibernate der Festplatten]]<br />
#### [[Virtuelle_E-Mail_User_erstellen|Script zur Erstellung von virtuellen Nutzern (E-Mail)]]<br />
#### [[Roundcube als Webmail-Client für externen IMAP-Account verwenden]]<br />
## Sonstige Modifikationen<br />
### [[USV Shutdown an Mac über Netzerk weiterleiten mit Growl]]<br />
### [[Installation der Online Teamlösung eGroupWare Community Edition]]<br />
### [[Verteiltes Rechnen mit der DiskStation anhand von distributed.net]]<br />
### [[Hits der Photostation zuruecksetzen]]<br />
### [[Boost Joomla Performance]]<br />
### [[Druckerverwaltung und Netzwerkdrucker einbinden]]<br />
###[[Wake on LAN (WOL) nur mit PHP, auch über das Internet]]<br />
###[[DdnsAutoLogin|ddnsAutoLogin]]<br />
###[[PXE|PXE - Preboot eXecution Environment]]<br />
###[[OpenVPN zu einer Easybox 904 xDSL: Konfiganpassung via Konsole]]<br />
###[[Wörterbücher für Volltextsuche mit PostgreSQL erstellen]]<br />
###[[Guacamole mit Docker|Guacamole mit Docker]]<br />
###[[Synapse mit Docker|Synapse mit Docker]]<br />
###[[TvHeadend mit Docker und Sundtek SkyTV Ultimate|TvHeadend mit Docker und Sundtek SkyTV Ultimate]]<br />
<br />
#[[IPKG]]<br />
##[[Apache IPKG|Alternativer Apache-Server]]<br />
##[[OpenVPN_auf_der_Diskstation|OpenVPN auf einer DS betreiben]]<br />
##[[Streamripper]]<br />
##[[Samba_via_ipkg_installieren|Alternativer Samba-Server]]<br />
##[[Icecast_via_ipkg_installieren|Icecast Server]]<br />
##[[vsFTP installieren|Alternativer FTP Dienst]]<br />
##[[SFTP_SCP|SFTP und SCP]]<br />
##[[SVN-Server installieren|SVN-Server]]<br />
##[[Gitolite|Git + Gitolite installieren]]<br />
##[[TFTP-Daemon einrichten und verwenden]]<br />
##[[Java|Java installieren]]<br />
##[[Xinetd_via_ipkg_installieren|xinetd Daemon via ipkg installieren]]<br />
###[[Xinetd_Beispiel_Eigener_Dienst|Eigener Dienst per xinetd]]<br />
##[[Syslog-ng via ipkg installieren]]<br />
##[[YouGrabber]]<br />
##[[Geschwindigkeitsmessung mit iperf]]<br />
##[[Installation torrentflux-b4rt]]<br />
##[[Bind9 DNS-Server]]<br />
##[[Streaming server (ggrab) für DBox2-Aufnahmen einrichten]]<br />
##[[USB Schaltbare Steckdosenleiste]]<br />
##[[Tinyproxy]]<br />
##[[DHCP-Server]]<br />
##[[MoinMoin-Wiki]]<br />
##[[Inetutils|Inetutils, ftp, tftp, rcp, rsh, ping, ping6]]<br />
##[[Nail|Mit Nail ein E-Mail verschicken]]<br />
##[[Nmap|Portscanner Nmap]]<br />
##[[Mpd|Music Player Daemon mpd]]<br />
#[[:Category:3rd-Party-Apps|3rd-party Applikationen]]<br />
##[[Konfiguration von 3rd-party Applikationen]]<br />
###[[Aufbau eines Synology Packages (SPK)]]<br />
###[[Aufbau der Datei 'INFO']]<br />
###[[Aufbau der Datei 'application.cfg']]<br />
###[[Aufbau der Datei 'config']]<br />
###Integration einer Hilfe in DSM<br />
####[[Integration einer Hilfe in DSM 3.x|DSM 3.x]]<br />
####[[Integration einer Hilfe in DSM 4.0-5.0|DSM 4.0 - 5.0]]<br />
####[[Integration einer Hilfe in DSM 5.1-|DSM 5.1 - 6.1]]<br />
##[[Integration von 3rd-party Applikationen]]<br />
###[[phpMyAdmin als 3rd-Party Applikation|phpMyAdmin]]<br />
###[[phpPgAdmin als 3rd-Party Applikation|phpPgAdmin]]<br />
###[[phpSysInfo als 3rd-Party Applikation|phpSysInfo]]<br />
###[[aMule IP-Filter Download als 3rd-Party Applikation|aMule IP-Filter]]<br />
###[[eXtplorer als 3rd-party Applikation|eXtplorer (Alternative zur File Station)]]<br />
###[[3rd Party Application Manager]]<br />
###[[HttpWakeUp Wake-On-LAN Pakete per Webinterface verschicken]]<br />
###[[Rootkit Hunter als 3rd-Party Applikation|Rootkit Hunter]]<br />
###[[AdminTool]]<br />
###[[TeamSpeak 2 Server]]<br />
###[[TeamSpeak 3 Server]]<br />
###[[TeamSpeak 3 Server in Debian Chroot]]<br />
###[[FSyncMS|FSyncMS – ein Firefox Sync Server]]<br />
###[[Lesezeichen/Passwörter Synchronisation mit SyncPlaces für Firefox (über WebDAV auf der DS)]]<br />
###[[iStat Server]]<br />
### SqueezeCenter<br />
####[[SqueezeCenter-Existierende-MySQL-Instanz-verwenden|Bestehende Instanz verwenden]]<br />
###[[Minecraft-Server auf der Synology]]<br />
###[[SynoBox|SynoBox - ein Dropbox Client]]<br />
###[[AirSonos|AirSonos - per Airplay auf Sonos streamen]]<br />
###[[CoD2|Call of Duty 2 Server auf Synology]]<br />
#Kompilieren eigener Programme<br />
##[[Luadch]]<br />
##[[MediaInfo]]<br />
##[[bluetooth Treiber]]<br />
##[[sma-bluetooth]]<br />
#[[Veraltete Artikel der Kategorie „Modding Themen“]]<br />
##Hardware Modifikationen<br />
###[[DiskStation 209+ flüsterleise machen]]<br />
###[[DiskStation 106 automatisch einschalten]]<br />
###[[DiskStation 107 automatisch einschalten]]<br />
###[[DiskStation 211 automatisch einschalten]]<br />
###[[DiskStation 408 automatisch einschalten]]<br />
###[[DiskStation 106 WOL Wake-On-LAN Umbau]]<br />
|}</div>Itommeshttps://www.synology-wiki.de/index.php?title=Modifikationen&diff=7381Modifikationen2023-03-25T10:02:17Z<p>Itommes: </p>
<hr />
<div>[[Category:Portal]]<br />
{|width="100%" height="100%" border=0 cellpadding=5 cellspacing=7 style="border: 1px solid #c0c0c0;background-color:#e0e0e0"<br />
|style="background-color:#c0c0c0; border: 1px solid #a0a0a0; font-size:120%; font-weight: bold"|[[Modifikationen|Modding Themen]]<br />
|-<br />
|<br />
#[[Wichtige Informationen zum Modden der Synology Stations]]<br />
#[[Übersicht über verfügbare 3rd-Party-Apps aus unserer Community]]<br />
#Grundsätzliches zur Hard- und Software des Synology-Servers<br />
##[[Wie funktioniert ein Computer?]]<br />
##[[Platten, RAIDs und Dateisysteme]]<br />
##[[Überblick über Modifizierungen des Synology-Servers]]<br />
##[[Welchen Prozessortyp besitzt mein System?]]<br />
##[[Welche Performance besitzt mein System?]]<br />
##[[Arbeitsweise der Synology Stations]]<br />
##[[LEDs und Buttons]]<br />
##[[Viren auf dem Synology-Server?]]<br />
##[[Stromverbrauchswerte User]]<br />
#[[Die Kommandozeile]]<br />
##[[Grundlegende Befehle auf der Kommandozeile]]<br />
##[[Vergleich von Texteditoren]]<br />
###[[vi]]<br />
###[[vim]]<br />
###[[nano]]<br />
##[[less|Alternativer Pager less]]<br />
##[[Synology Toolset]]<br />
##[[Locale-UTF8|UTF-8–Kodierung einstellen]]<br />
##[[synogear: weitere Tools]]<br />
#[[Wo ist was im Linux-System]]<br />
##[[Dateien im /etc-Verzeichnis|/etc-Verzeichnis]]<br />
##[[Dateien im /dev-Verzeichnis|/dev-Verzeichnis]]<br />
##[[Dateien im /lib-Verzeichnis|/lib-Verzeichnis]]<br />
##[[Dateien im /tmp-Verzeichnis|/tmp-Verzeichnis]]<br />
##[[Dateien im /usr-Verzeichnis|/usr-Verzeichnis]]<br />
##[[Dateien im /var-Verzeichnis|/var-Verzeichnis]]<br />
##[[Dateien im /volume1-Verzeichnis|/volume1-Verzeichnis]]<br />
#[[Nicht unterstützte Konfigurationsänderungen]]<br />
##Systemmanagement<br />
###[[3rd_Party_Applications_absichern|3rd Party Applications vor unberechtigten Zugriffen schützen]]<br />
###[[Cron|Cron konfigurieren]]<br />
###[[Generierung eines eigenen SSL-Zertifikats]]<br />
###[[SSL-Zertifikat von ready2host einbinden]]<br />
###[[Downgrade der Synology-Firmware]]<br />
###[[Mount Bind]]<br />
###[[Gemeinsames Homeverzeichnis für mehrere User]]<br />
###[[User-Apache alle Zugriffe via Browser loggen lassen|Logdatei für den Apache-Server erstellen]]<br />
###[[Anzahl der möglichen Terminalfenster erhöhen]]<br />
###[[ssh_mit_Zertifikaten_absichern|Secure Shell (ssh) Zugriff nur mit Schlüssel]]<br />
###[[Ssh_clients_blocken|PHP Script zum Logfile Scan nach ssh Fehlern]]<br />
###[[Automatisches Herunterfahren wenn kein Ping möglich]]<br />
###[[Statusmail von der Diskstation]]<br />
###[[Aktuellen Status twittern (CPU, RAM, Speicher)]]<br />
###[[DSM Zugriff auf IP-Ebene beschränken]]<br />
###[[Debian auf der DiskStation]]<br />
###[[Thumbnailerzeugung beschleunigen ]]<br />
###[[Cacti Monitoring auf Diskstation installieren]]<br />
###[[SSMTP: Mit Bordmitteln eine E-Mail über die Konsole versenden.]]<br />
##Firmware-Upgrades<br />
###[[Upgrade von DS101g+ auf DS107]]<br />
##Backup Modifikationen<br />
###[[Alternierendes Backup]]<br />
###[[Backup der MySQL-Datenbank über einen cronjob]]<br />
###[[Backup über RSync auf einen angeschlossenen Datenträger]]<br />
###[[rsnapshot|Backups mit Rsnapshot erstellen]]<br />
###[[Offsite Backup von DS auf WebDAV-Speicher (z.B. von 1und1, GMX, Web.de, Strato, iDisk (MobileMe))]]<br />
### [[Generationsbackup_mit_rsync_und_rsnapshot_im_Netzwerk|Generationsbackup über Netzwerk]]<br />
### [[Verschlüsseltes Backup]]<br />
### [[duplicity|duplicity (SSH/SCP, RSync, FTP, WebDAV, IMAP, Amazon S3 + optionale Verschlüsselung)]]<br />
### [[WebDAV-Speicher mithilfe von davfs2 direkt in die DS einbinden]]<br />
### [[Zeitgesteuerte Sicherung mittels wget inkl. Protokoll]]<br />
###[[CrashPlan Headless Client]]<br />
##Download Modifikationen<br />
###[[pyLoad]]<br />
###[[appleJuice]]<br />
##Multimedia Modifikationen<br />
###[[TwonkyVision]]<br />
###[[Twonky auf der DS211j installieren]]<br />
###[[Swisscenter_auf_Diskstation_installieren|Swisscenter installieren]]<br />
###[[Fuppes]]<br />
###[[PS3 Mediaserver]]<br />
###[[iTunes Playlists Importieren]]<br />
###[[Einbinden einer DS über NFS bei älteren Samsung-TVs]]<br />
##Datenträger Mods<br />
###[[Upgrade eines None-RAID Volume zu RAID1 / RAID5]]<br />
###[[Hartnäckigen USB-Stick mit ext2/3 formatieren und einbinden]]<br />
###[[Verschlüsselte_Container|Verschlüsselte Container auf der DS]]<br />
## <span id="mailstation">Mailstation Mods</span><br />
### Dovecot Server (imap/pop3)<br />
#### [[Externe_Accounts_abrufen|Externe Accounts mit getmail abrufen]]<br />
#### [[Virtuelle_E-Mail_Nutzer_mit_dovecot|Virtuelle User]]<br />
#### [[E-mails_filtern_mit_dovecot-sieve|Dovecot-sieve zum Filtern von E-Mails]]<br />
#### [[Abwesenheitsmeldungen_mit_dovecot-sieve|AutoReply]]<br />
### Postfix Server (smtp)<br />
#### [[SMTP_Dialog_Restriktionen|Client Restriktionen]]<br />
#### [[Virtuelle_E-Mail_Nutzer_mit_postfix|Virtuelle User]]<br />
#### [[Zusaetzliche_Ports_fuer_Postfix|Zusätzliche Ports]]<br />
#### [[Mail-Relay_mit_Postfix|SMTP Relay einrichten]]<br />
#### [[Postgrey_greylisting_fuer_postfix|Greylisting mit postgrey]]<br />
#### [[Postfwd_firewall_fuer_postfix|Postfix Firewall postfwd]]<br />
#### [[Abwesenheitsmeldungen_mit_postfix|Autoreply]]<br />
### Spamassassin<br />
#### [[Externe_Accounts_abrufen#SpamAssassin_installieren_und_einrichten|Spamassassin installieren]]<br />
#### [[Regeln_von_Spamassassin|Die Regeln des Spamassassin]]<br />
#### [[Postfix_und_Spamassassin|Spamfilterung mit Postfix und Spamassassin]]<br />
### Various<br />
#### [[Fehlersuche in der Mailstation]]<br />
#### [[Nuetzliche_Kommandos_fuer_Mailstation|Nützliche Kommandos der Mailstation]]<br />
#### [[Mailinglisten_mit_mailman|Mailing-Listen mit mailman]]<br />
#### [[Getmail_script|getmail nutzen mit Hibernate der Festplatten]]<br />
#### [[Virtuelle_E-Mail_User_erstellen|Script zur Erstellung von virtuellen Nutzern (E-Mail)]]<br />
#### [[Roundcube als Webmail-Client für externen IMAP-Account verwenden]]<br />
## Sonstige Modifikationen<br />
### [[USV Shutdown an Mac über Netzerk weiterleiten mit Growl]]<br />
### [[Installation der Online Teamlösung eGroupWare Community Edition]]<br />
### [[Verteiltes Rechnen mit der DiskStation anhand von distributed.net]]<br />
### [[Hits der Photostation zuruecksetzen]]<br />
### [[Boost Joomla Performance]]<br />
### [[Druckerverwaltung und Netzwerkdrucker einbinden]]<br />
###[[Wake on LAN (WOL) nur mit PHP, auch über das Internet]]<br />
###[[DdnsAutoLogin|ddnsAutoLogin]]<br />
###[[PXE|PXE - Preboot eXecution Environment]]<br />
###[[OpenVPN zu einer Easybox 904 xDSL: Konfiganpassung via Konsole]]<br />
###[[Wörterbücher für Volltextsuche mit PostgreSQL erstellen]]<br />
###[[Guacamole mit Docker|Guacamole mit Docker]]<br />
###[[Synapse mit Docker|Synapse mit Docker]]<br />
###[[TvHeadend mit Docker und Sundtek SkyTV Ultimate|TvHeadend mit Docker und Sundtek SkyTV Ultimate]]<br />
<br />
#[[IPKG]]<br />
##[[Apache IPKG|Alternativer Apache-Server]]<br />
##[[OpenVPN_auf_der_Diskstation|OpenVPN auf einer DS betreiben]]<br />
##[[Streamripper]]<br />
##[[Samba_via_ipkg_installieren|Alternativer Samba-Server]]<br />
##[[Icecast_via_ipkg_installieren|Icecast Server]]<br />
##[[vsFTP installieren|Alternativer FTP Dienst]]<br />
##[[SFTP_SCP|SFTP und SCP]]<br />
##[[SVN-Server installieren|SVN-Server]]<br />
##[[Gitolite|Git + Gitolite installieren]]<br />
##[[TFTP-Daemon einrichten und verwenden]]<br />
##[[Java|Java installieren]]<br />
##[[Xinetd_via_ipkg_installieren|xinetd Daemon via ipkg installieren]]<br />
###[[Xinetd_Beispiel_Eigener_Dienst|Eigener Dienst per xinetd]]<br />
##[[Syslog-ng via ipkg installieren]]<br />
##[[YouGrabber]]<br />
##[[Geschwindigkeitsmessung mit iperf]]<br />
##[[Installation torrentflux-b4rt]]<br />
##[[Bind9 DNS-Server]]<br />
##[[Streaming server (ggrab) für DBox2-Aufnahmen einrichten]]<br />
##[[USB Schaltbare Steckdosenleiste]]<br />
##[[Tinyproxy]]<br />
##[[DHCP-Server]]<br />
##[[MoinMoin-Wiki]]<br />
##[[Inetutils|Inetutils, ftp, tftp, rcp, rsh, ping, ping6]]<br />
##[[Nail|Mit Nail ein E-Mail verschicken]]<br />
##[[Nmap|Portscanner Nmap]]<br />
##[[Mpd|Music Player Daemon mpd]]<br />
#[[:Category:3rd-Party-Apps|3rd-party Applikationen]]<br />
##[[Konfiguration von 3rd-party Applikationen]]<br />
###[[Aufbau eines Synology Packages (SPK)]]<br />
###[[Aufbau der Datei 'INFO']]<br />
###[[Aufbau der Datei 'application.cfg']]<br />
###[[Aufbau der Datei 'config']]<br />
###Integration einer Hilfe in DSM<br />
####[[Integration einer Hilfe in DSM 3.x|DSM 3.x]]<br />
####[[Integration einer Hilfe in DSM 4.0-5.0|DSM 4.0 - 5.0]]<br />
####[[Integration einer Hilfe in DSM 5.1-|DSM 5.1 - 6.1]]<br />
##[[Integration von 3rd-party Applikationen]]<br />
###[[phpMyAdmin als 3rd-Party Applikation|phpMyAdmin]]<br />
###[[phpPgAdmin als 3rd-Party Applikation|phpPgAdmin]]<br />
###[[phpSysInfo als 3rd-Party Applikation|phpSysInfo]]<br />
###[[aMule IP-Filter Download als 3rd-Party Applikation|aMule IP-Filter]]<br />
###[[eXtplorer als 3rd-party Applikation|eXtplorer (Alternative zur File Station)]]<br />
###[[3rd Party Application Manager]]<br />
###[[HttpWakeUp Wake-On-LAN Pakete per Webinterface verschicken]]<br />
###[[Rootkit Hunter als 3rd-Party Applikation|Rootkit Hunter]]<br />
###[[AdminTool]]<br />
###[[TeamSpeak 2 Server]]<br />
###[[TeamSpeak 3 Server]]<br />
###[[TeamSpeak 3 Server in Debian Chroot]]<br />
###[[FSyncMS|FSyncMS – ein Firefox Sync Server]]<br />
###[[Lesezeichen/Passwörter Synchronisation mit SyncPlaces für Firefox (über WebDAV auf der DS)]]<br />
###[[iStat Server]]<br />
### SqueezeCenter<br />
####[[SqueezeCenter-Existierende-MySQL-Instanz-verwenden|Bestehende Instanz verwenden]]<br />
###[[Minecraft-Server auf der Synology]]<br />
###[[SynoBox|SynoBox - ein Dropbox Client]]<br />
###[[AirSonos|AirSonos - per Airplay auf Sonos streamen]]<br />
###[[CoD2|Call of Duty 2 Server auf Synology]]<br />
#Kompilieren eigener Programme<br />
##[[Luadch]]<br />
##[[MediaInfo]]<br />
##[[bluetooth Treiber]]<br />
##[[sma-bluetooth]]<br />
#[[Veraltete Artikel der Kategorie „Modding Themen“]]<br />
#Hardware Modifikationen<br />
##[[DiskStation 209+ flüsterleise machen]]<br />
##[[DiskStation 106 automatisch einschalten]]<br />
##[[DiskStation 107 automatisch einschalten]]<br />
##[[DiskStation 211 automatisch einschalten]]<br />
##[[DiskStation 408 automatisch einschalten]]<br />
##[[DiskStation 106 WOL Wake-On-LAN Umbau]]<br />
|}</div>Itommeshttps://www.synology-wiki.de/index.php?title=Modifikationen&diff=7380Modifikationen2023-03-25T10:01:29Z<p>Itommes: </p>
<hr />
<div>[[Category:Portal]]<br />
{|width="100%" height="100%" border=0 cellpadding=5 cellspacing=7 style="border: 1px solid #c0c0c0;background-color:#e0e0e0"<br />
|style="background-color:#c0c0c0; border: 1px solid #a0a0a0; font-size:120%; font-weight: bold"|[[Modifikationen|Modding Themen]]<br />
|-<br />
|<br />
#[[Wichtige Informationen zum Modden der Synology Stations]]<br />
#[[Übersicht über verfügbare 3rd-Party-Apps aus unserer Community]]<br />
#Grundsätzliches zur Hard- und Software des Synology-Servers<br />
##[[Wie funktioniert ein Computer?]]<br />
##[[Platten, RAIDs und Dateisysteme]]<br />
##[[Überblick über Modifizierungen des Synology-Servers]]<br />
##[[Welchen Prozessortyp besitzt mein System?]]<br />
##[[Welche Performance besitzt mein System?]]<br />
##[[Arbeitsweise der Synology Stations]]<br />
##[[LEDs und Buttons]]<br />
##[[Viren auf dem Synology-Server?]]<br />
##[[Stromverbrauchswerte User]]<br />
#[[Die Kommandozeile]]<br />
##[[Grundlegende Befehle auf der Kommandozeile]]<br />
##[[Vergleich von Texteditoren]]<br />
###[[vi]]<br />
###[[vim]]<br />
###[[nano]]<br />
##[[less|Alternativer Pager less]]<br />
##[[Synology Toolset]]<br />
##[[Locale-UTF8|UTF-8–Kodierung einstellen]]<br />
##[[synogear: weitere Tools]]<br />
#[[Wo ist was im Linux-System]]<br />
##[[Dateien im /etc-Verzeichnis|/etc-Verzeichnis]]<br />
##[[Dateien im /dev-Verzeichnis|/dev-Verzeichnis]]<br />
##[[Dateien im /lib-Verzeichnis|/lib-Verzeichnis]]<br />
##[[Dateien im /tmp-Verzeichnis|/tmp-Verzeichnis]]<br />
##[[Dateien im /usr-Verzeichnis|/usr-Verzeichnis]]<br />
##[[Dateien im /var-Verzeichnis|/var-Verzeichnis]]<br />
##[[Dateien im /volume1-Verzeichnis|/volume1-Verzeichnis]]<br />
#[[Nicht unterstützte Konfigurationsänderungen]]<br />
##Systemmanagement<br />
###[[3rd_Party_Applications_absichern|3rd Party Applications vor unberechtigten Zugriffen schützen]]<br />
###[[Cron|Cron konfigurieren]]<br />
###[[Generierung eines eigenen SSL-Zertifikats]]<br />
###[[SSL-Zertifikat von ready2host einbinden]]<br />
###[[Downgrade der Synology-Firmware]]<br />
###[[Mount Bind]]<br />
###[[Gemeinsames Homeverzeichnis für mehrere User]]<br />
###[[User-Apache alle Zugriffe via Browser loggen lassen|Logdatei für den Apache-Server erstellen]]<br />
###[[Anzahl der möglichen Terminalfenster erhöhen]]<br />
###[[ssh_mit_Zertifikaten_absichern|Secure Shell (ssh) Zugriff nur mit Schlüssel]]<br />
###[[Ssh_clients_blocken|PHP Script zum Logfile Scan nach ssh Fehlern]]<br />
###[[Automatisches Herunterfahren wenn kein Ping möglich]]<br />
###[[Statusmail von der Diskstation]]<br />
###[[Aktuellen Status twittern (CPU, RAM, Speicher)]]<br />
###[[DSM Zugriff auf IP-Ebene beschränken]]<br />
###[[Debian auf der DiskStation]]<br />
###[[Thumbnailerzeugung beschleunigen ]]<br />
###[[Cacti Monitoring auf Diskstation installieren]]<br />
###[[SSMTP: Mit Bordmitteln eine E-Mail über die Konsole versenden.]]<br />
##Firmware-Upgrades<br />
###[[Upgrade von DS101g+ auf DS107]]<br />
##Backup Modifikationen<br />
###[[Alternierendes Backup]]<br />
###[[Backup der MySQL-Datenbank über einen cronjob]]<br />
###[[Backup über RSync auf einen angeschlossenen Datenträger]]<br />
###[[rsnapshot|Backups mit Rsnapshot erstellen]]<br />
###[[Offsite Backup von DS auf WebDAV-Speicher (z.B. von 1und1, GMX, Web.de, Strato, iDisk (MobileMe))]]<br />
### [[Generationsbackup_mit_rsync_und_rsnapshot_im_Netzwerk|Generationsbackup über Netzwerk]]<br />
### [[Verschlüsseltes Backup]]<br />
### [[duplicity|duplicity (SSH/SCP, RSync, FTP, WebDAV, IMAP, Amazon S3 + optionale Verschlüsselung)]]<br />
### [[WebDAV-Speicher mithilfe von davfs2 direkt in die DS einbinden]]<br />
### [[Zeitgesteuerte Sicherung mittels wget inkl. Protokoll]]<br />
###[[CrashPlan Headless Client]]<br />
##Download Modifikationen<br />
###[[pyLoad]]<br />
###[[appleJuice]]<br />
##Multimedia Modifikationen<br />
###[[TwonkyVision]]<br />
###[[Twonky auf der DS211j installieren]]<br />
###[[Swisscenter_auf_Diskstation_installieren|Swisscenter installieren]]<br />
###[[Fuppes]]<br />
###[[PS3 Mediaserver]]<br />
###[[iTunes Playlists Importieren]]<br />
###[[Einbinden einer DS über NFS bei älteren Samsung-TVs]]<br />
##Datenträger Mods<br />
###[[Upgrade eines None-RAID Volume zu RAID1 / RAID5]]<br />
###[[Hartnäckigen USB-Stick mit ext2/3 formatieren und einbinden]]<br />
###[[Verschlüsselte_Container|Verschlüsselte Container auf der DS]]<br />
## <span id="mailstation">Mailstation Mods</span><br />
### Dovecot Server (imap/pop3)<br />
#### [[Externe_Accounts_abrufen|Externe Accounts mit getmail abrufen]]<br />
#### [[Virtuelle_E-Mail_Nutzer_mit_dovecot|Virtuelle User]]<br />
#### [[E-mails_filtern_mit_dovecot-sieve|Dovecot-sieve zum Filtern von E-Mails]]<br />
#### [[Abwesenheitsmeldungen_mit_dovecot-sieve|AutoReply]]<br />
### Postfix Server (smtp)<br />
#### [[SMTP_Dialog_Restriktionen|Client Restriktionen]]<br />
#### [[Virtuelle_E-Mail_Nutzer_mit_postfix|Virtuelle User]]<br />
#### [[Zusaetzliche_Ports_fuer_Postfix|Zusätzliche Ports]]<br />
#### [[Mail-Relay_mit_Postfix|SMTP Relay einrichten]]<br />
#### [[Postgrey_greylisting_fuer_postfix|Greylisting mit postgrey]]<br />
#### [[Postfwd_firewall_fuer_postfix|Postfix Firewall postfwd]]<br />
#### [[Abwesenheitsmeldungen_mit_postfix|Autoreply]]<br />
### Spamassassin<br />
#### [[Externe_Accounts_abrufen#SpamAssassin_installieren_und_einrichten|Spamassassin installieren]]<br />
#### [[Regeln_von_Spamassassin|Die Regeln des Spamassassin]]<br />
#### [[Postfix_und_Spamassassin|Spamfilterung mit Postfix und Spamassassin]]<br />
### Various<br />
#### [[Fehlersuche in der Mailstation]]<br />
#### [[Nuetzliche_Kommandos_fuer_Mailstation|Nützliche Kommandos der Mailstation]]<br />
#### [[Mailinglisten_mit_mailman|Mailing-Listen mit mailman]]<br />
#### [[Getmail_script|getmail nutzen mit Hibernate der Festplatten]]<br />
#### [[Virtuelle_E-Mail_User_erstellen|Script zur Erstellung von virtuellen Nutzern (E-Mail)]]<br />
#### [[Roundcube als Webmail-Client für externen IMAP-Account verwenden]]<br />
## Sonstige Modifikationen<br />
### [[USV Shutdown an Mac über Netzerk weiterleiten mit Growl]]<br />
### [[Installation der Online Teamlösung eGroupWare Community Edition]]<br />
### [[Verteiltes Rechnen mit der DiskStation anhand von distributed.net]]<br />
### [[Hits der Photostation zuruecksetzen]]<br />
### [[Boost Joomla Performance]]<br />
### [[Druckerverwaltung und Netzwerkdrucker einbinden]]<br />
###[[Wake on LAN (WOL) nur mit PHP, auch über das Internet]]<br />
###[[DdnsAutoLogin|ddnsAutoLogin]]<br />
###[[PXE|PXE - Preboot eXecution Environment]]<br />
###[[OpenVPN zu einer Easybox 904 xDSL: Konfiganpassung via Konsole]]<br />
###[[Wörterbücher für Volltextsuche mit PostgreSQL erstellen]]<br />
###[[Guacamole mit Docker|Guacamole mit Docker]]<br />
###[[Synapse mit Docker|Synapse mit Docker]]<br />
###[[TvHeadend mit Docker und Sundtek SkyTV Ultimate|TvHeadend mit Docker und Sundtek SkyTV Ultimate]]<br />
<br />
#[[IPKG]]<br />
##[[Apache IPKG|Alternativer Apache-Server]]<br />
##[[OpenVPN_auf_der_Diskstation|OpenVPN auf einer DS betreiben]]<br />
##[[Streamripper]]<br />
##[[Samba_via_ipkg_installieren|Alternativer Samba-Server]]<br />
##[[Icecast_via_ipkg_installieren|Icecast Server]]<br />
##[[vsFTP installieren|Alternativer FTP Dienst]]<br />
##[[SFTP_SCP|SFTP und SCP]]<br />
##[[SVN-Server installieren|SVN-Server]]<br />
##[[Gitolite|Git + Gitolite installieren]]<br />
##[[TFTP-Daemon einrichten und verwenden]]<br />
##[[Java|Java installieren]]<br />
##[[Xinetd_via_ipkg_installieren|xinetd Daemon via ipkg installieren]]<br />
###[[Xinetd_Beispiel_Eigener_Dienst|Eigener Dienst per xinetd]]<br />
##[[Syslog-ng via ipkg installieren]]<br />
##[[YouGrabber]]<br />
##[[Geschwindigkeitsmessung mit iperf]]<br />
##[[Installation torrentflux-b4rt]]<br />
##[[Bind9 DNS-Server]]<br />
##[[Streaming server (ggrab) für DBox2-Aufnahmen einrichten]]<br />
##[[USB Schaltbare Steckdosenleiste]]<br />
##[[Tinyproxy]]<br />
##[[DHCP-Server]]<br />
##[[MoinMoin-Wiki]]<br />
##[[Inetutils|Inetutils, ftp, tftp, rcp, rsh, ping, ping6]]<br />
##[[Nail|Mit Nail ein E-Mail verschicken]]<br />
##[[Nmap|Portscanner Nmap]]<br />
##[[Mpd|Music Player Daemon mpd]]<br />
#[[:Category:3rd-Party-Apps|3rd-party Applikationen]]<br />
##[[Konfiguration von 3rd-party Applikationen]]<br />
###[[Aufbau eines Synology Packages (SPK)]]<br />
###[[Aufbau der Datei 'INFO']]<br />
###[[Aufbau der Datei 'application.cfg']]<br />
###[[Aufbau der Datei 'config']]<br />
###Integration einer Hilfe in DSM<br />
####[[Integration einer Hilfe in DSM 3.x|DSM 3.x]]<br />
####[[Integration einer Hilfe in DSM 4.0-5.0|DSM 4.0 - 5.0]]<br />
####[[Integration einer Hilfe in DSM 5.1-|DSM 5.1 - 6.1]]<br />
##[[Integration von 3rd-party Applikationen]]<br />
###[[phpMyAdmin als 3rd-Party Applikation|phpMyAdmin]]<br />
###[[phpPgAdmin als 3rd-Party Applikation|phpPgAdmin]]<br />
###[[phpSysInfo als 3rd-Party Applikation|phpSysInfo]]<br />
###[[aMule IP-Filter Download als 3rd-Party Applikation|aMule IP-Filter]]<br />
###[[eXtplorer als 3rd-party Applikation|eXtplorer (Alternative zur File Station)]]<br />
###[[3rd Party Application Manager]]<br />
###[[HttpWakeUp Wake-On-LAN Pakete per Webinterface verschicken]]<br />
###[[Rootkit Hunter als 3rd-Party Applikation|Rootkit Hunter]]<br />
###[[AdminTool]]<br />
###[[TeamSpeak 2 Server]]<br />
###[[TeamSpeak 3 Server]]<br />
###[[TeamSpeak 3 Server in Debian Chroot]]<br />
###[[FSyncMS|FSyncMS – ein Firefox Sync Server]]<br />
###[[Lesezeichen/Passwörter Synchronisation mit SyncPlaces für Firefox (über WebDAV auf der DS)]]<br />
###[[iStat Server]]<br />
### SqueezeCenter<br />
####[[SqueezeCenter-Existierende-MySQL-Instanz-verwenden|Bestehende Instanz verwenden]]<br />
###[[Minecraft-Server auf der Synology]]<br />
###[[SynoBox|SynoBox - ein Dropbox Client]]<br />
###[[AirSonos|AirSonos - per Airplay auf Sonos streamen]]<br />
###[[CoD2|Call of Duty 2 Server auf Synology]]<br />
#Kompilieren eigener Programme<br />
##[[Luadch]]<br />
##[[MediaInfo]]<br />
##[[bluetooth Treiber]]<br />
##[[sma-bluetooth]]<br />
#Hardware Modifikationen<br />
##[[DiskStation 209+ flüsterleise machen]]<br />
##[[DiskStation 106 automatisch einschalten]]<br />
##[[DiskStation 107 automatisch einschalten]]<br />
##[[DiskStation 211 automatisch einschalten]]<br />
##[[DiskStation 408 automatisch einschalten]]<br />
##[[DiskStation 106 WOL Wake-On-LAN Umbau]]<br />
#[[Veraltete Artikel der Kategorie „Modding Themen“]]<br />
|}</div>Itommeshttps://www.synology-wiki.de/index.php?title=Grundlegende_Befehle_auf_der_Kommandozeile&diff=7266Grundlegende Befehle auf der Kommandozeile2017-10-11T19:13:07Z<p>Itommes: /* Vorbemerkung */</p>
<hr />
<div>[[Category:Linux]]<br />
__TOC__<br />
<br />
==Vorbemerkung==<br />
Wenn man sich z. B. über Telnet in der [[Die Kommandozeile|Kommandozeile]] der DiskStation befindet, kann man mit folgenden Befehlen grundlegende Funktionen ausführen.<br />
<br />
Normalerweise kann man die Bearbeitung der Befehle mit Strg+C abbrechen.<br />
<br />
===Sicherheitshinweis zu TELNET und FTP===<br />
''Telnet ist OK, solange man sich im eigenen Intranet befindet, wenn man sich jedoch aus einem anderen Netzwerk einloggen will sollte man den sicheren SSH Dienst (Port 22) nutzen, bzw. FTPES. Unverschlüsselte Protokolle wie FTP und Telnet sowie deren Ports, Port 20,21 (ftp) und Port 23 (telnet) sollten NIE von außen sichtbar sein. Ausser man setzt FTPES ein, welches die Firmware im Gegensatz zu SFTP (FTP via SSH) von Hause aus bietet''<br />
<br />
Ein schlauer Zug ist es in der SSH config den Port zu verlegen, z.B. auf einen sehr hohen Port, wie 22022 (soweit scannt dann kein Portscanner mehr). Das Problem ist nur dass Synology euch gnadenlos die Einstellung nach jedem Update wieder auf 22 setzen wird. Warum Synology das tut ist mir bis heute ein Rätsel.<br />
<br />
'''Wichtiger als der Port von SSH ist es ein sicheres Passwort zu haben oder gleich nur [[Ssh_mit_Zertifikaten_absichern|Zertifikats-Login]] zuzulassen!'''<br />
<br />
===Midnight Commander===<br />
Kommandozeile Bearbeitung macht man am besten mit dem Midnight Commander, einer Norton Commander klone.<BR><br />
Installation per '[[IPKG|ipkg]] install mc'.<BR><br />
Er enthält 2 Wichtige Komponenten: <br />
# Das Hauptprogramm, als eine Art Verzeichnis Explorer. Man startet Midnight Commander mit dem Befehl:<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>mc -c</pre><br />
|-<br />
|}<br />
<br />
# Der Midnight Editor, als Alternative zum vi (vollster Respekt, und tiefste Verbeugung vor vi :q!)<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>mcedit /pfad/zu/datei</pre><br />
|-<br />
|}<br />
<br />
==Dateiverwaltung==<br />
=== Verzeichnisse ===<br />
====In ein Verzeichnis wechseln====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>cd /directoryName</pre><br />
|-<br />
|}<br />
<br />
====Wo befinde ich mich?====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>pwd</pre><br />
|-<br />
|}<br />
<br />
====Verzeichnis erstellen====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>mkdir /directoryName</pre><br />
|-<br />
|}<br />
<br />
====Verzeichnis anzeigen====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>dir</pre> <br />
| bzw.<br />
|<pre>ls</pre><br />
|-<br />
|}<br />
<br />
====Größe eines Verzeichnisses mit Unterverzeichnissen anzeigen====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>du -ah /path/to/dir</pre><br />
|-<br />
|}<br />
<br />
====Anzahl der Dateien eines Verzeichnisses mit Unterverzeichnissen anzeigen====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>find /path/to/dir -type f | wc -l</pre><br />
|-<br />
|}<br />
find listet alle Files auf (- type f), der Output wird in den wc geschickt, der mit -l die Zeilen zählt. Ausgegeben wird nur die Anzahl der Files.<br />
<br />
=== Dateien ===<br />
====Eine Datei suchen====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>find / -name fileName</pre><br />
|-<br />
|}<br />
<br />
====Löschen einer Datei====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>rm fileName</pre><br />
|-<br />
|}<br />
<br />
====Löschen eines Verzeichnisses mit Inhalt====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|1) || <pre>rm -r directoryName</pre><br />
|-<br />
|2) || <pre>rm -Rf directoryName</pre> (laut Thread 58472)<br />
|}<br />
* Achtung: Nur mit größter Vorsicht verwenden!<br />
* Frage: Was stimmt nun wirklich?<br />
<br />
====Umbenennen oder Verschieben einer Datei====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>mv /sourceDirectory/sourceFile /destination</pre><br />
|-<br />
|}<br />
<br />
====Datei kopieren====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>cp /sourceDirectory/sourceFile /destination</pre><br />
|-<br />
|}<br />
<br />
====Mehrere Dateien kopieren====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>cp /sourceDirectory/*.* /destination</pre><br />
|-<br />
|}<br />
stand 2011 lautet der Befehl:<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>cp /sourceDirectory/* /destination</pre><br />
|-<br />
|}<br />
<br />
====Ein Verzeichnis mit Unterverzeichnissen kopieren====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>cp -r -p /sourceDirectory /destinationpath</pre><br />
|-<br />
|}<br />
<br />
=== tar-Archive (.tar) ===<br />
====Ein nicht-komprimiertes tar-Archiv (.tar) erstellen====<br />
Erstellt ein nicht-komprimiertes tar-Archiv aller Dateien und Unterverzeichnisse im aktuellen Verzeichnis:<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>tar -cvf archivefilename.tar *</pre><br />
|-<br />
|}<br />
<br />
====Ein komprimiertes tar-Archiv (.tgz) erstellen====<br />
Erstellt ein komprimiertes tar-Archiv aller Dateien und Unterverzeichnisse im aktuellen Verzeichnis:<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>tar -cvzf archivefilename.tgz *</pre><br />
|-<br />
|}<br />
<br />
====.tar Archive entpacken====<br />
Für nicht-komprimierte .tar Archive:<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>tar xvf file.tar</pre><br />
|-<br />
|}<br />
Für gzip komprimierte .tar.gz (oder .tgz) Archive:<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>tar xvzf file.tar.gz</pre><br />
|-<br />
|}<br />
<br />
==System-Verwaltung==<br />
<br />
=== Start und Stopp ===<br />
<br />
====Neustart der Synology Station====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>reboot</pre><br />
|-<br />
|}<br />
<br />
====Herunterfahren der Synology Station====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>poweroff</pre><br />
|-<br />
|}<br />
<br />
=== Prozesse ===<br />
<br />
====Aktuell laufende Prozesse anzeigen====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>top</pre><br />
|-<br />
|}<br />
<br />
====Alle Prozesse anzeigen====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>ps -w</pre><br />
|-<br />
|}<br />
<br />
====Einen Prozess beenden====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>kill processID</pre><br />
|-<br />
|}<br />
<br />
====Ein Programm beenden====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>killall programName</pre><br />
|-<br />
|}<br />
<br />
=== Logs ===<br />
<br />
==== System-Logbuch anschauen====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>more /var/log/messages</pre><br />
|-<br />
|}<br />
Und wenn man das dynamisch haben will, quasi um eine log in ''realtime'' zu verfolgen<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>tail -f /var/log/messages</pre><br />
|-<br />
|}<br />
<br />
==== System-Start-Logbuch anschauen ====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>dmesg | more</pre><br />
|-<br />
|}<br />
<br />
=== Programme ===<br />
<br />
====Ein IPKG-Programm suchen====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>ipkg list fileName</pre><br />
|-<br />
|}<br />
der Befehl "list" such nach einem genauen Pattern. Deswegen empfiehlt sich :<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>ipkg list *fileName*</pre><br />
|-<br />
|}<br />
<br />
====Ein IPKG-Programm installieren====<br />
Voraussetzung dafür ist eine Installation von [[IPKG|IPKG]] selbst<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>ipkg install fileName</pre><br />
|-<br />
|}<br />
grundsätzlich davor immer '''ipkg update'''<br />
<br />
====Ein IPKG-Programm deinstallieren====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>ipkg remove filename</pre><br />
|-<br />
|}<br />
<br />
==Dienste neu starten==<br />
<br />
=== DSM 5.x, DMS 6.x und neuer ===<br />
Dienste/Deamon kann man mit '''synoservicectl''' starten, stoppen, neu starten, neu laden und den status abfragen<br />
<pre><br />
--start Start service => Startet den Dienst <br />
--stop Stop service => Stoppt den Dienst <br />
--restart Restart service => Starten den Dienst neu<br />
--reload Send HUP signal to service => Sendet ein "Hang Up", d.h. Das Betriebssystem sendet ein Signal zum Prozess damit er kontrolliert beenden kann um danach wieder zu starten<br />
--status Query status of service. => Status des Dienstes<br />
</pre><br />
<br />
=== DSM 6.x ===<br />
Das Admin-Interface (DSM) wird ab 6.0 durch den nginx-Dienst betrieben. Um das Webinterface neu zu starten kann man dies wie folgt durchführen:<br />
<pre><br />
synoservicectl --restart nginx<br />
</pre><br />
<br />
=== DSM 5.x ===<br />
<br />
apache<br />
<pre>synoservicectl --restart httpd-user</pre><br />
SMB, Windows Dateidienst<br />
<pre>synoservicectl --restart smbd</pre><br />
SSH Dienst<br />
<pre>synoservicectl --restart sshd</pre><br />
Cron<br />
<pre>synoservicectl --restart crond</pre><br />
NTP, Zeitserver<br />
<pre>synoservicectl --restart ntpd</pre><br />
FTP<br />
<pre>synoservicectl --restart ftpd</pre><br />
Index-Dienst<br />
<pre>synoservicectl --restart synoindexd</pre><br />
<br />
<br />
=== ab DSM 4.x und älter ===<br />
<br />
====apache====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>/usr/syno/etc/rc.d/S97apache-user.sh restart</pre><br />
|-<br />
|}<br />
zur Kompatibilität mit anderen LINUX-en kann man sich einen kleinen Script basteln der dann auf '''apachectl [start|restart|stop]''' hört, und der dann auch in der $PATH ist.<BR><br />
(dazu einfach auf der Konsole als root folgende Befehle nacheinander eingeben.)<BR><br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre><br />
touch /usr/local/bin/apachectl<br />
echo "#!/bin/sh">/usr/local/bin/apachectl<br />
echo '/usr/syno/etc/rc.d/S97apache-user.sh $1'>>/usr/local/bin/apachectl<br />
chmod 755 /usr/local/bin/apachectl<br />
</pre><br />
|-<br />
|}<br />
danach kann man den Webserver wie gewohnt mit '''apachectl [start|restart|stop]''' steuern<br />
<br />
====appletalk====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>/usr/syno/etc/rc.d/S81atalk.sh restart</pre><br />
|-<br />
|}<br />
<br />
====[[cron]]====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>/usr/syno/etc/rc.d/S04crond.sh stop<br />
/usr/syno/etc/rc.d/S04crond.sh start</pre><br />
|}<br />
oder<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>ps |grep crond|grep -v grep|awk '{print $1}'|xargs kill -HUP</pre><br />
|}<br />
<br />
====ftp====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>/usr/syno/etc/rc.d/S99ftpd.sh restart</pre><br />
|-<br />
|}<br />
<br />
====index====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>/usr/syno/etc/rc.d/S66synoindexd.sh restart</pre><br />
|-<br />
|}<br />
<br />
====iTunes====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>/usr/syno/etc/rc.d/S99iTunes.sh restart</pre><br />
|-<br />
|}<br />
<br />
<br />
====ldap====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>/usr/syno/etc/rc.d/S10slapd.sh restart</pre><br />
|-<br />
|}<br />
zur Kompatibilität mit anderen LINUX-en kann man sich einen kleinen Script basteln der dann auf '''ldapctl [start|restart|stop]''' hört, und der dann auch in der $PATH ist.<BR><br />
(dazu einfach auf der Konsole als root folgende Befehle nacheinander eingeben.)<BR><br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre><br />
touch /usr/sbin/ldapctl<br />
echo "#!/bin/sh">/usr/sbin/ldapctl<br />
echo "/usr/syno/etc/rc.d/S10slapd.sh \$1">>/usr/sbin/ldapctl<br />
chmod 755 /usr/sbin/ldapctl<br />
</pre><br />
|-<br />
|}<br />
danach kann man den LDAP Server wie gewohnt mit '''ldapctl [start|restart|stop]''' steuern<br />
<br />
====mysql====<br />
DSM < 5.0:<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>/usr/syno/etc/rc.d/S21mysql.sh restart</pre><br />
|-<br />
|}<br />
DSM ≥ 5.0:<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>/usr/share/mysql/mysql.server restart</pre><br />
|-<br />
|}<br />
<br />
====nfs====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>/usr/syno/etc/rc.d/S83nfsd.sh restart</pre><br />
|-<br />
|}<br />
<br />
====postgresql====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>/usr/syno/etc/rc.d/S20pgsql.sh restart</pre><br />
|-<br />
|}<br />
<br />
====samba====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>/usr/syno/etc/rc.d/S80Samba.sh restart</pre><br />
|-<br />
|}<br />
<br />
====SNMP ====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre/usr/syno/etc.defaults/rc.d/S08snmpd.sh restart</pre><br />
|-<br />
|}<br />
<br />
====SSH====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>/usr/syno/etc.defaults/rc.d/S95sshd.sh restart</pre><br />
|-<br />
|}<br />
<br />
====VPN Client====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>poff -a<br />
pppd file /etc/ppp/peers/connect_*<br />
</pre><br />
|-<br />
|}<br />
Benötigt > DSM 4.0 und das Webinterface zeigt leider nicht an, dass man eine VPN Verbindung benutzt.<br />
<br />
==System Informationen==<br />
<br />
===Systemspeicher===<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>cat /proc/meminfo</pre><br />
|-<br />
|}<br />
<br />
===CPU Infos===<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>cat /proc/cpuinfo</pre><br />
|-<br />
|}<br />
<br />
===Verwendete Interrupts===<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>cat /proc/interrupts</pre><br />
|-<br />
|}<br />
<br />
===Verwendete Dateisysteme===<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>cat /proc/filesystems</pre><br />
|-<br />
|}<br />
<br />
===Linux Version===<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>cat /proc/version</pre><br />
|-<br />
|}<br />
<br />
===Geräte===<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>cat /proc/mdstat</pre><br />
|-<br />
|}<br />
<br />
===Umgebungsvariabeln===<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>env</pre><br />
|-<br />
|}<br />
<br />
===Physische und logische Partitionen===<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|Für Systeme mit mehreren Laufwerken und erweiterte Infos<br />
<pre>cat /proc/diskstats</pre><br />
oder für alle Systeme<br />
<pre>cat /proc/partitions</pre><br />
|-<br />
|}<br />
<br />
==Sonstiges==<br />
===Terminal/Konsole Bildschirm löschen===<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>clear</pre><br />
|-<br />
|}<br />
<br />
===Einen Dump in eine Datenbank importieren===<br />
<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>/usr/syno/mysql/bin/mysql --user=root --password=mein-pw meine-db < /volume1/dir/mein-dump.sql</pre><br />
|-<br />
|}<br />
<br />
mein-pw, meine-db und mein-dump sind dabei entprechend zu ersetzen.<br />
Wenn der Dump utf-8-kodiert ist, kann ein zusätzliches --default-character-set=utf8 notwendig sein.<br />
<br />
==Unnötige Dienste stoppen==<br />
===Konvertierung der Bilder stoppen (convert)===<br />
<br />
Bremst stark das Kopieren der großen Datenmengen und verbraucht Arbeitsspeicher auch wenn Photostation abgeschaltet ist.<br />
<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>/usr/syno/etc/rc.d/S77synomkthumbd.sh stop</pre><br />
|-<br />
|}</div>Itommeshttps://www.synology-wiki.de/index.php?title=Stromverbrauchswerte_User&diff=7262Stromverbrauchswerte User2017-10-01T08:59:55Z<p>Itommes: </p>
<hr />
<div>[[Category:Prozessor-Architektur]]<br />
<br />
Nachfolgend eine Übersicht über Messungen des Stromverbrauchs von Disk Stations, die von Usern des [http://www.synology-forum.de/forum.html Synology-Forums] im Rahmen [http://www.synology-forum.de/showthread.html?48632-DS-Stromverbrauch dieses Threads] durchgeführt wurden. Diese Angaben sind infolgedessen angesichts unterschiedlicher Messgeräte und Tests nicht so präzise und in dem Umfang vergleichbar wie die Werte, die Synology selbst in den technischen Daten ihrer Produkte veröffentlicht. Hier geht es darum, zusätzliche Werte zu erfassen und verschiedene Plattensetups besser vergleichen zu können. Es werden nur Werte aufgenommen, die mit bekanntermaßen präzisen Messgeräten ermittelt wurden.<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! DS !! Platten<br>Zahl !! Platten<br>Konf. !! Platten-Typ !! AUS<br>ohne WOL !! AUS<br>mit WOL<br />
! START<br>max. !! IDLE !! LAST<br>(ATTO) !! HD-/System-<br>Ruhezustand !! Messgerät !! DSM<br />
|-<br />
! 1513+<br />
|| 5 || SHR || WD Red 3TB || 0,3W || || 90,0W || 42,0W || 49,5W || 23,3W || Profitec KD302 || 4.3<br />
|-<br />
! 1813+<br />
|| 4 || RAID-5 || WD Red 4TB || 0,7W || 1,8W || 82,2W || 42,0W || 48,8W || 25,9W || Profitec KD202 || 4.3<br />
|-<br />
! 916+<br />
|| 3 || SHR || HGST MegaScale 4TB || 0,2W || 0,9W || || 28,0W || || 11,0W || Profitec KD302 || 6.0.1<br />
|-<br />
! 415+<br />
|| 4 || SHR || WD Green 4TB x2<br>WD Green 2TB x2 || 1,2W || 2,0W || 44,8W || 34,8W || 40,2W || 13,4W || Brennenstuhl PM231E || 5.1<br />
|-<br />
! 414<br />
|| 4 || RAID-5 || WD Red 4TB || 0,7W || 1,5W || 42,2W || 30,6W || 37,3W || 15,5W || Profitec KD202 || 4.3<br />
|-<br />
! 414<br />
|| 4 || SHR || WD Green 2TB x3<br>WD Green 1TB || 0,7W || 1,4W || 40,4W || 30,2W || 35,6W || 14,9W || Brennenstuhl PM231E || 4.3<br />
|-<br />
! 414j<br />
|| 4 || SHR || WD Green 2TB x2<br>WD Green 1TB x2 || || 2,0W || 45,0W || 27,0W || 33,0W || 11,0W || TCM 234773 || 5.0<br />
|-<br />
! 414slim<br />
|| 4 || RAID-5 || Samsung M9T 2TB 2.5" || || 0,5W || 18,9W || 12,7W || 15,6W || 9,2W || Belkin Conserve Insight || 5.0<br />
|-<br />
! 413j<br />
|| 2 || BASIS || WD Green 4TB<br>WD Green 2TB || 0,7W || 1,5W || || 17,0W || 30,0W || 7,9W || Belkin Conserve Insight || 4.3<br />
|-<br />
! 218+ 2GB RAM<br />
|| 1 || BASIS || WD Red 4TB || 0,28W || 0,35W || 17,52W || 10,22W || 16,02W || 5,5W || AVM DECT 200 || 6.1.3<br />
|-<br />
! 218+ 10GB RAM<br />
|| 1 || BASIS || WD Red 4TB || 0,35W || 0,50W || 17,73W || 11,01W || 16,88W || 6,29W || AVM DECT 200 || 6.1.3<br />
|-<br />
! 216+ 1GB RAM<br />
|| 1 || BASIS || WD Red 4TB || 0,14W || 0,78W || 13,4W || 11,9W || || 6,3W || AVM DECT 200 || 5.2<br />
|-<br />
! 216+ 8GB RAM<br />
|| 1 || BASIS || WD Red 4TB || 0,14W || 0,78W || 21,5W || 12,6W || || 7,0W || AVM DECT 200 || 5.2<br />
|-<br />
! 216+ 8GB RAM<br />
|| 2 || SHR || WD Red 3TB || 0,14W || 0,71W || 22,7W || 16,2W || 17,4W || 6,7W || AVM DECT 200 || 6.0<br />
|-<br />
! 216play<br />
|| 2 || BASIS || Intel SSD + Seagate Archive 8TB || 0,1W || 1,15W || 20,5W || 11,2W || 14,9W || 5,1W || AVM DECT 210 || 6.1.2<br />
|-<br />
! 216j<br />
|| 2 || BASIS || Seagate ST6000VN0021 6TB || 0,21W || 1,28W || 31,9W || 23,4W || 27,7W || 4,36W || AVM DECT 200 || 6.1.2<br />
|-<br />
! 215+<br />
|| 2 || SHR || WD Red 3TB || 0,3W || 2,1W || 28,6W || 18,1W || 21,4W || 9,8W || ELV Energy Master Profi || 5.2<br />
|-<br />
! 215+<br />
|| 1 || SHR || Samsung Eco 2TB || 0,4W || 1,5W || 21,7W || 14,2W || 18,0W || 9,9W || Profitec KD302 || 5.2<br />
|-<br />
! 215j<br />
|| 2 || SHR || WD Red 3TB || 0,35W || 1,78W || 18,0W || 12,5W || 15,2W || 5,9W || AVM DECT 200 || 5.2<br />
|-<br />
! 215j<br />
|| 2 || SHR || Samsung HN-M201RAD 2TB 2.5" || 0,2W || 1,7W || 11,2W || 6,9W || 10,0W || 4,9W || AVM DECT 200 || 5.1<br />
|-<br />
! 214+<br />
|| 2 || SHR || WD Red 2TB || 0,2W || || 28,3W || 20,3W || 23,4W || 11,4W || Voltcraft 3500 || 4.3<br />
|-<br />
! 214+<br />
|| 2 || RAID-1 || WD Red 3TB || 0,2W || || 31,0W || 21,0W || 25,6W || 12,0W || Voltcraft 3500 || 4.3<br />
|-<br />
! 214+<br />
|| 1 || BASIS || WD Red 4TB || 0,2W || 1,1W || 24,8W || 14,8W || 17,8W || 10,1W || Profitec KD302 || 4.3<br />
|-<br />
! 713+<br />
|| 2 || SHR || WD Red 2TB || 0,3W || 0,9W || 34,5W || 25,4W || 26,4W || 16,3W || AVM DECT 200 || 5.2<br />
|-<br />
! 213+<br />
|| 2 || BASIS || Seagate ST4000DM000 4TB || 0,3W || || 32,8W || 20,8W || || 8,6W/3,1W || Brennenstuhl PM231E || 5.1<br />
|-<br />
! 213j<br />
|| 1 || BASIS || WD Red 3TB || 0,2W || 1,9W || || 10,0W || 13,6W || 5,3W || ELV EM600 || 5.0<br />
|-<br />
! DX213<br />
|| 2 || BASIS || WD Green WD20EARS 2TB || 0,3W || || 20,5W || 13,5W || || na/2,5W || Brennenstuhl PM231E || 5.1<br />
|-<br />
! 212+<br />
|| 2 || BASIS || WD Green 2TB || 0,6W || 1,6W || 28,7W || 19,9W || 23,2W || 9,5W || Brennenstuhl PM231E || 4.3<br />
|-<br />
! 212+<br />
|| 2 || RAID-1 || WD Green 3TB || 0,2W || 2,4W || 29,4W || 18,5W || 22,6W || || Profitec KD202 || 4.3<br />
|-<br />
! 212+<br />
|| 2 || RAID-1 || WD Green 2,5TB || 0,6W || || 33,0W || 22,0W || 24,0W || 9,8W || Voltcraft 3500 || 4.3<br />
|-<br />
! 210j<br />
|| 2 || RAID-1 || WD Green 1TB || 0,5W || || 28,4W || 18,5W || 21,8W || 7,9W || Brennenstuhl PM231E || 5.2<br />
|-<br />
! 209+II<br />
|| 2 || RAID-1 || Seagate Barracuda LP 1,5TB || || || 36,1W || 27,5W || 32,1W || 17,1W || AVM DECT 200 ||<br />
|-<br />
! 116<br />
|| 1 || BASIS || HGST Megascale DC4000B 4TB || 0,1W || 1,2W || 22,6W || 11,1W || 13,9W || 5,4W || Brennenstuhl PM231E || 6.1<br />
|-<br />
! 115<br />
|| 1 || BASIS || Samsung EVO 840 250GB || || || 8,3W || 6,4W || 7,9W || || AVM DECT 200 || 6.1<br />
|-<br />
! 115<br />
|| 1 || BASIS || Verbatim 2SSD128 128GB || 0,35W || 1,71W || 6,9W || 5,9W || 8,2W || || AVM DECT 200 || 5.1<br />
|-<br />
! 115<br />
|| 1 || BASIS || WD Red 4TB || 0,35W || 1,71W || 16,6W || 10,5W || || 5,7W || AVM DECT 200 || 5.1<br />
|-<br />
! 115<br />
|| 1 || BASIS || WD Red 4TB || || 1,7W || || 10,4W || 12,5W || 6,4W || Energy Master Basic || 5.1<br />
|-<br />
! 115<br />
|| 1 || BASIS || WD Red 3TB || 0,28W || 1,85W || 20,1W || 9,7W || 11,4W || 5,3W || AVM DECT 200 || 5.2<br />
|-<br />
! 115j<br />
|| 1 || BASIS || WD Red 3TB || 0,3W || || 18,4W || || 9,4W || 4,8W || || 6.0<br />
|-<br />
! 114<br />
|| 1 || BASIS || WD Red 4TB || || 2,0W || || 11,1W || 13,1W || 7,1W || Energy Master Basic || 5.1<br />
|-<br />
! 114<br />
|| 1 || BASIS || WD Red 4TB || 0,3W || 1,9W || 24,8W || 10,8W || 14,7W || 6,2W || Brennenstuhl PM231E || 4.3<br />
|-<br />
! 114<br />
|| 1 || BASIS || WD Red 3TB || || || 17,1W || 12,6W || 14,9W || 8,9W || AVM DECT 200 || 4.3<br />
|-<br />
! 111<br />
|| 1 || BASIS || Seagate ST3000DM001 3TB || 0,6W || || 26,0W || 13,3W || 15,6W (tbc) || 7,0W || Brennenstuhl PM231E || 5.1<br />
|}<br />
<br />
'''Spaltenbeschreibung'''<br><br />
<br />
{| class="wikitable"<br />
|-<br />
| DS<br />
|| Disk Station Modellbezeichnung<br />
|-<br />
| Platten-Zahl<br />
|| Anzahl der eingebauten Festplatte(n)<br />
|-<br />
| Platten-Konfiguration<br />
|| BASIS, SHR, RAID<br />
|-<br />
| Platten-Typ<br />
|| Hersteller und Typbezeichnung der verbauten Festplatte(n)<br />
|-<br />
| AUS ohne WOL<br />
|| Typischer Stromverbrauch in ausgeschaltetem Zustand - WOL ist deaktiviert<br />
|-<br />
| AUS mit WOL<br />
|| Typischer Stromverbrauch in ausgeschaltetem Zustand - WOL ist aktiviert<br />
|-<br />
| START max.<br />
|| Maximaler Stromverbrauch beim Einschalten<br />
|-<br />
| IDLE<br />
|| Typischer Verbrauch im Betrieb ohne Last<br />
|-<br />
| LAST (ATTO)<br />
|| Max. Verbrauch unter Last (beim Zugriff z.B. durch die Applikation ATTO ([http://sburke.eu/blog/2011/04/quick-disk-benchmark-for-windows/ Version 2.34]) von einem Rechner aus<br />
|-<br />
| HD-/System-Ruhezustand<br />
|| Typischer Verbrauch im HD- bzw. System-Ruhezustand<br />
|-<br />
| Messgerät<br />
|| Verwendetes Messgerät<br />
|-<br />
| DSM<br />
|| Verwendete DSM-Version<br />
|}<br />
<br />
[[Kategorie:Hardware]]</div>Itommeshttps://www.synology-wiki.de/index.php?title=Stromverbrauchswerte_User&diff=7261Stromverbrauchswerte User2017-10-01T08:57:09Z<p>Itommes: </p>
<hr />
<div>[[Category:Prozessor-Architektur]]<br />
<br />
Nachfolgend eine Übersicht über Messungen des Stromverbrauchs von Disk Stations, die von Usern des [http://www.synology-forum.de/forum.html Synology-Forums] im Rahmen [http://www.synology-forum.de/showthread.html?48632-DS-Stromverbrauch dieses Threads] durchgeführt wurden. Diese Angaben sind infolgedessen angesichts unterschiedlicher Messgeräte und Tests nicht so präzise und in dem Umfang vergleichbar wie die Werte, die Synology selbst in den technischen Daten ihrer Produkte veröffentlicht. Hier geht es darum, zusätzliche Werte zu erfassen und verschiedene Plattensetups besser vergleichen zu können. Es werden nur Werte aufgenommen, die mit bekanntermaßen präzisen Messgeräten ermittelt wurden.<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! DS !! Platten<br>Zahl !! Platten<br>Konf. !! Platten-Typ !! AUS<br>ohne WOL !! AUS<br>mit WOL<br />
! START<br>max. !! IDLE !! LAST<br>(ATTO) !! HD-/System-<br>Ruhezustand !! Messgerät !! DSM<br />
|-<br />
! 1513+<br />
|| 5 || SHR || WD Red 3TB || 0,3W || || 90,0W || 42,0W || 49,5W || 23,3W || Profitec KD302 || 4.3<br />
|-<br />
! 1813+<br />
|| 4 || RAID-5 || WD Red 4TB || 0,7W || 1,8W || 82,2W || 42,0W || 48,8W || 25,9W || Profitec KD202 || 4.3<br />
|-<br />
! 916+<br />
|| 3 || SHR || HGST MegaScale 4TB || 0,2W || 0,9W || || 28,0W || || 11,0W || Profitec KD302 || 6.0.1<br />
|-<br />
! 415+<br />
|| 4 || SHR || WD Green 4TB x2<br>WD Green 2TB x2 || 1,2W || 2,0W || 44,8W || 34,8W || 40,2W || 13,4W || Brennenstuhl PM231E || 5.1<br />
|-<br />
! 414<br />
|| 4 || RAID-5 || WD Red 4TB || 0,7W || 1,5W || 42,2W || 30,6W || 37,3W || 15,5W || Profitec KD202 || 4.3<br />
|-<br />
! 414<br />
|| 4 || SHR || WD Green 2TB x3<br>WD Green 1TB || 0,7W || 1,4W || 40,4W || 30,2W || 35,6W || 14,9W || Brennenstuhl PM231E || 4.3<br />
|-<br />
! 414j<br />
|| 4 || SHR || WD Green 2TB x2<br>WD Green 1TB x2 || || 2,0W || 45,0W || 27,0W || 33,0W || 11,0W || TCM 234773 || 5.0<br />
|-<br />
! 414slim<br />
|| 4 || RAID-5 || Samsung M9T 2TB 2.5" || || 0,5W || 18,9W || 12,7W || 15,6W || 9,2W || Belkin Conserve Insight || 5.0<br />
|-<br />
! 413j<br />
|| 2 || BASIS || WD Green 4TB<br>WD Green 2TB || 0,7W || 1,5W || || 17,0W || 30,0W || 7,9W || Belkin Conserve Insight || 4.3<br />
|-<br />
! 218+ 2GB RAM<br />
|| 1 || BASIS || WD Red 4TB || 0,28W || 0,35W || 17,52W || 10,22W || 16,02W || 5,5W || AVM DECT 200 || 6.1.3<br />
|-<br />
! 218+ 10GB RAM<br />
|| 1 || BASIS || WD Red 4TB || 0,35W || 0,50W || 17,73W || 11,01W || 16,88W || 6,29W || AVM DECT 200 || 6.1.3<br />
|-<br />
! 216+ 1GB RAM<br />
|| 1 || BASIS || WD Red 4TB || 0,14W || 0,78W || 13,4W || 11,9W || || 6,3W || AVM DECT 200 || 5.2<br />
|-<br />
! 216+ 8GB RAM<br />
|| 1 || BASIS || WD Red 4TB || 0,14W || 0,78W || 21,5W || 12,6W || || 7,0W || AVM DECT 200 || 5.2<br />
|-<br />
! 216+ 8GB RAM<br />
|| 2 || SHR || WD Red 3TB || 0,14W || 0,71W || 22,7W || 16,2W || 17,4W || 6,7W || AVM DECT 200 || 6.0<br />
|-<br />
! 216play<br />
|| 2 || BASIS || Intel SSD + Seagate Archive 8TB || 0,1W || 1,15W || 20,5W || 11,2W || 14,9W || 5,1W || AVM DECT 210 || 6.1.2<br />
|-<br />
! 216j<br />
|| 2 || BASIS || Seagate ST6000VN0021 6TB || 0,21W || 1,28W || 31,9W || 23,4W || 27,7W || 4,36W || AVM DECT 200 || 6.1.2<br />
|-<br />
! 215+<br />
|| 2 || SHR || WD Red 3TB || 0,3W || 2,1W || 28,6W || 18,1W || 21,4W || 9,8W || ELV Energy Master Profi || 5.2<br />
|-<br />
! 215j<br />
|| 2 || SHR || WD Red 3TB || 0,35W || 1,78W || 18,0W || 12,5W || 15,2W || 5,9W || AVM DECT 200 || 5.2<br />
|-<br />
! 215j<br />
|| 2 || SHR || Samsung HN-M201RAD 2TB 2.5" || 0,2W || 1,7W || 11,2W || 6,9W || 10,0W || 4,9W || AVM DECT 200 || 5.1<br />
|-<br />
! 214+<br />
|| 2 || SHR || WD Red 2TB || 0,2W || || 28,3W || 20,3W || 23,4W || 11,4W || Voltcraft 3500 || 4.3<br />
|-<br />
! 214+<br />
|| 2 || RAID-1 || WD Red 3TB || 0,2W || || 31,0W || 21,0W || 25,6W || 12,0W || Voltcraft 3500 || 4.3<br />
|-<br />
! 713+<br />
|| 2 || SHR || WD Red 2TB || 0,3W || 0,9W || 34,5W || 25,4W || 26,4W || 16,3W || AVM DECT 200 || 5.2<br />
|-<br />
! 213+<br />
|| 2 || BASIS || Seagate ST4000DM000 4TB || 0,3W || || 32,8W || 20,8W || || 8,6W/3,1W || Brennenstuhl PM231E || 5.1<br />
|-<br />
! DX213<br />
|| 2 || BASIS || WD Green WD20EARS 2TB || 0,3W || || 20,5W || 13,5W || || na/2,5W || Brennenstuhl PM231E || 5.1<br />
|-<br />
! 212+<br />
|| 2 || BASIS || WD Green 2TB || 0,6W || 1,6W || 28,7W || 19,9W || 23,2W || 9,5W || Brennenstuhl PM231E || 4.3<br />
|-<br />
! 212+<br />
|| 2 || RAID-1 || WD Green 3TB || 0,2W || 2,4W || 29,4W || 18,5W || 22,6W || || Profitec KD202 || 4.3<br />
|-<br />
! 212+<br />
|| 2 || RAID-1 || WD Green 2,5TB || 0,6W || || 33,0W || 22,0W || 24,0W || 9,8W || Voltcraft 3500 || 4.3<br />
|-<br />
! 210j<br />
|| 2 || RAID-1 || WD Green 1TB || 0,5W || || 28,4W || 18,5W || 21,8W || 7,9W || Brennenstuhl PM231E || 5.2<br />
|-<br />
! 209+II<br />
|| 2 || RAID-1 || Seagate Barracuda LP 1,5TB || || || 36,1W || 27,5W || 32,1W || 17,1W || AVM DECT 200 ||<br />
|-<br />
! 215+<br />
|| 1 || SHR || Samsung Eco 2TB || 0,4W || 1,5W || 21,7W || 14,2W || 18,0W || 9,9W || Profitec KD302 || 5.2<br />
|-<br />
! 214+<br />
|| 1 || BASIS || WD Red 4TB || 0,2W || 1,1W || 24,8W || 14,8W || 17,8W || 10,1W || Profitec KD302 || 4.3<br />
|-<br />
! 213j<br />
|| 1 || BASIS || WD Red 3TB || 0,2W || 1,9W || || 10,0W || 13,6W || 5,3W || ELV EM600 || 5.0<br />
|-<br />
! 116<br />
|| 1 || BASIS || HGST Megascale DC4000B 4TB || 0,1W || 1,2W || 22,6W || 11,1W || 13,9W || 5,4W || Brennenstuhl PM231E || 6.1<br />
|-<br />
! 115<br />
|| 1 || BASIS || Samsung EVO 840 250GB || || || 8,3W || 6,4W || 7,9W || || AVM DECT 200 || 6.1<br />
|-<br />
! 115<br />
|| 1 || BASIS || Verbatim 2SSD128 128GB || 0,35W || 1,71W || 6,9W || 5,9W || 8,2W || || AVM DECT 200 || 5.1<br />
|-<br />
! 115<br />
|| 1 || BASIS || WD Red 4TB || 0,35W || 1,71W || 16,6W || 10,5W || || 5,7W || AVM DECT 200 || 5.1<br />
|-<br />
! 115<br />
|| 1 || BASIS || WD Red 4TB || || 1,7W || || 10,4W || 12,5W || 6,4W || Energy Master Basic || 5.1<br />
|-<br />
! 115<br />
|| 1 || BASIS || WD Red 3TB || 0,28W || 1,85W || 20,1W || 9,7W || 11,4W || 5,3W || AVM DECT 200 || 5.2<br />
|-<br />
! 115j<br />
|| 1 || BASIS || WD Red 3TB || 0,3W || || 18,4W || || 9,4W || 4,8W || || 6.0<br />
|-<br />
! 114<br />
|| 1 || BASIS || WD Red 4TB || || 2,0W || || 11,1W || 13,1W || 7,1W || Energy Master Basic || 5.1<br />
|-<br />
! 114<br />
|| 1 || BASIS || WD Red 4TB || 0,3W || 1,9W || 24,8W || 10,8W || 14,7W || 6,2W || Brennenstuhl PM231E || 4.3<br />
|-<br />
! 114<br />
|| 1 || BASIS || WD Red 3TB || || || 17,1W || 12,6W || 14,9W || 8,9W || AVM DECT 200 || 4.3<br />
|-<br />
! 111<br />
|| 1 || BASIS || Seagate ST3000DM001 3TB || 0,6W || || 26,0W || 13,3W || 15,6W (tbc) || 7,0W || Brennenstuhl PM231E || 5.1<br />
|}<br />
<br />
'''Spaltenbeschreibung'''<br><br />
<br />
{| class="wikitable"<br />
|-<br />
| DS<br />
|| Disk Station Modellbezeichnung<br />
|-<br />
| Platten-Zahl<br />
|| Anzahl der eingebauten Festplatte(n)<br />
|-<br />
| Platten-Konfiguration<br />
|| BASIS, SHR, RAID<br />
|-<br />
| Platten-Typ<br />
|| Hersteller und Typbezeichnung der verbauten Festplatte(n)<br />
|-<br />
| AUS ohne WOL<br />
|| Typischer Stromverbrauch in ausgeschaltetem Zustand - WOL ist deaktiviert<br />
|-<br />
| AUS mit WOL<br />
|| Typischer Stromverbrauch in ausgeschaltetem Zustand - WOL ist aktiviert<br />
|-<br />
| START max.<br />
|| Maximaler Stromverbrauch beim Einschalten<br />
|-<br />
| IDLE<br />
|| Typischer Verbrauch im Betrieb ohne Last<br />
|-<br />
| LAST (ATTO)<br />
|| Max. Verbrauch unter Last (beim Zugriff z.B. durch die Applikation ATTO ([http://sburke.eu/blog/2011/04/quick-disk-benchmark-for-windows/ Version 2.34]) von einem Rechner aus<br />
|-<br />
| HD-/System-Ruhezustand<br />
|| Typischer Verbrauch im HD- bzw. System-Ruhezustand<br />
|-<br />
| Messgerät<br />
|| Verwendetes Messgerät<br />
|-<br />
| DSM<br />
|| Verwendete DSM-Version<br />
|}<br />
<br />
[[Kategorie:Hardware]]</div>Itommeshttps://www.synology-wiki.de/index.php?title=Stromverbrauchswerte_User&diff=7243Stromverbrauchswerte User2017-07-09T10:18:47Z<p>Itommes: </p>
<hr />
<div>[[Category:Prozessor-Architektur]]<br />
<br />
Nachfolgend eine Übersicht über Messungen des Stromverbrauchs von Disk Stations, die von Usern des [http://www.synology-forum.de/forum.html Synology-Forums] im Rahmen [http://www.synology-forum.de/showthread.html?48632-DS-Stromverbrauch dieses Threads] durchgeführt wurden. Diese Angaben sind infolgedessen angesichts unterschiedlicher Messgeräte und Tests nicht so präzise und in dem Umfang vergleichbar wie die Werte, die Synology selbst in den technischen Daten ihrer Produkte veröffentlicht. Hier geht es darum, zusätzliche Werte zu erfassen und verschiedene Plattensetups besser vergleichen zu können. Es werden nur Werte aufgenommen, die mit bekanntermaßen präzisen Messgeräten ermittelt wurden.<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
! DS !! Platten<br>Zahl !! Platten<br>Konf. !! Platten-Typ !! AUS<br>ohne WOL !! AUS<br>mit WOL<br />
! START<br>max. !! IDLE !! LAST<br>(ATTO) !! HD-/System-<br>Ruhezustand !! Messgerät !! DSM<br />
|-<br />
! 1513+<br />
|| 5 || SHR || WD Red 3TB || 0,3W || || 90,0W || 42,0W || 49,5W || 23,3W || Profitec KD302 || 4.3<br />
|-<br />
! 1813+<br />
|| 4 || RAID-5 || WD Red 4TB || 0,7W || 1,8W || 82,2W || 42,0W || 48,8W || 25,9W || Profitec KD202 || 4.3<br />
|-<br />
! 916+<br />
|| 3 || SHR || HGST MegaScale 4TB || 0,2W || 0,9W || || 28,0W || || 11,0W || Profitec KD302 || 6.0.1<br />
|-<br />
! 415+<br />
|| 4 || SHR || WD Green 4TB x2<br>WD Green 2TB x2 || 1,2W || 2,0W || 44,8W || 34,8W || 40,2W || 13,4W || Brennenstuhl PM231E || 5.1<br />
|-<br />
! 414<br />
|| 4 || RAID-5 || WD Red 4TB || 0,7W || 1,5W || 42,2W || 30,6W || 37,3W || 15,5W || Profitec KD202 || 4.3<br />
|-<br />
! 414<br />
|| 4 || SHR || WD Green 2TB x3<br>WD Green 1TB || 0,7W || 1,4W || 40,4W || 30,2W || 35,6W || 14,9W || Brennenstuhl PM231E || 4.3<br />
|-<br />
! 414j<br />
|| 4 || SHR || WD Green 2TB x2<br>WD Green 1TB x2 || || 2,0W || 45,0W || 27,0W || 33,0W || 11,0W || TCM 234773 || 5.0<br />
|-<br />
! 414slim<br />
|| 4 || RAID-5 || Samsung M9T 2TB 2.5" || || 0,5W || 18,9W || 12,7W || 15,6W || 9,2W || Belkin Conserve Insight || 5.0<br />
|-<br />
! 413j<br />
|| 2 || BASIS || WD Green 4TB<br>WD Green 2TB || 0,7W || 1,5W || || 17,0W || 30,0W || 7,9W || Belkin Conserve Insight || 4.3<br />
|-<br />
! 216+ 8GB RAM<br />
|| 2 || SHR || WD Red 3TB || 0,14W || 0,71W || 22,7W || 16,2W || 17,4W || 6,7W || AVM DECT 200 || 6.0<br />
|-<br />
! 216j<br />
|| 2 || BASIS || Seagate ST6000VN0021 6TB || 0,21W || 1,28W || 31,9W || 23,38W || 27,68W || 4,36W || AVM DECT 200 || 6.1.2<br />
|-<br />
! 215+<br />
|| 2 || SHR || WD Red 3TB || 0,3W || 2,1W || 28,6W || 18,1W || 21,4W || 9,8W || ELV Energy Master Profi || 5.2<br />
|-<br />
! 215j<br />
|| 2 || SHR || WD Red 3TB || 0,35W || 1,78W || 18,0W || 12,5W || 15,2W || 5,9W || AVM DECT 200 || 5.2<br />
|-<br />
! 215j<br />
|| 2 || SHR || Samsung HN-M201RAD 2TB 2.5" || 0,2W || 1,7W || 11,2W || 6,9W || 10,0W || 4,9W || AVM DECT 200 || 5.1<br />
|-<br />
! 214+<br />
|| 2 || SHR || WD Red 2TB || 0,2W || || 28,3W || 20,3W || 23,4W || 11,4W || Voltcraft 3500 || 4.3<br />
|-<br />
! 214+<br />
|| 2 || RAID-1 || WD Red 3TB || 0,2W || || 31,0W || 21,0W || 25,6W || 12,0W || Voltcraft 3500 || 4.3<br />
|-<br />
! 713+<br />
|| 2 || SHR || WD Red 2TB || 0,3W || 0,9W || 34,5W || 25,4W || 26,4W || 16,3W || AVM DECT 200 || 5.2<br />
|-<br />
! 213+<br />
|| 2 || BASIS || Seagate ST4000DM000 4TB || 0,3W || || 32,8W || 20,8W || || 8,6W/3,1W || Brennenstuhl PM231E || 5.1<br />
|-<br />
! DX213<br />
|| 2 || BASIS || WD Green WD20EARS 2TB || 0,3W || || 20,5W || 13,5W || || na/2,5W || Brennenstuhl PM231E || 5.1<br />
|-<br />
! 212+<br />
|| 2 || BASIS || WD Green 2TB || 0,6W || 1,6W || 28,7W || 19,9W || 23,2W || 9,5W || Brennenstuhl PM231E || 4.3<br />
|-<br />
! 212+<br />
|| 2 || RAID-1 || WD Green 3TB || 0,2W || 2,4W || 29,4W || 18,5W || 22,6W || || Profitec KD202 || 4.3<br />
|-<br />
! 212+<br />
|| 2 || RAID-1 || WD Green 2,5TB || 0,6W || || 33,0W || 22,0W || 24,0W || 9,8W || Voltcraft 3500 || 4.3<br />
|-<br />
! 210j<br />
|| 2 || RAID-1 || WD Green 1TB || 0,5W || || 28,4W || 18,5W || 21,8W || 7,9W || Brennenstuhl PM231E || 5.2<br />
|-<br />
! 209+II<br />
|| 2 || RAID-1 || Seagate Barracuda LP 1,5TB || || || 36,1W || 27,5W || 32,1W || 17,1W || AVM DECT 200 ||<br />
|-<br />
! 216+ 1GB RAM<br />
|| 1 || BASIS || WD Red 4TB || 0,14W || 0,78W || 13,4W || 11,9W || || 6,3W || AVM DECT 200 || 5.2<br />
|-<br />
! 216+ 8GB RAM<br />
|| 1 || BASIS || WD Red 4TB || 0,14W || 0,78W || 21,5W || 12,6W || || 7,0W || AVM DECT 200 || 5.2<br />
|-<br />
! 215+<br />
|| 1 || SHR || Samsung Eco 2TB || 0,4W || 1,5W || 21,7W || 14,2W || 18,0W || 9,9W || Profitec KD302 || 5.2<br />
|-<br />
! 214+<br />
|| 1 || BASIS || WD Red 4TB || 0,2W || 1,1W || 24,8W || 14,8W || 17,8W || 10,1W || Profitec KD302 || 4.3<br />
|-<br />
! 213j<br />
|| 1 || BASIS || WD Red 3TB || 0,2W || 1,9W || || 10,0W || 13,6W || 5,3W || ELV EM600 || 5.0<br />
|-<br />
! 116<br />
|| 1 || BASIS || HGST Megascale DC4000B 4TB || 0,1W || 1,2W || 22,6W || 11,1W || 13,9W || 5,4W || Brennenstuhl PM231E || 6.1<br />
|-<br />
! 115<br />
|| 1 || BASIS || Samsung EVO 840 250GB || || || 8,3W || 6,4W || 7,9W || || AVM DECT 200 || 6.1<br />
|-<br />
! 115<br />
|| 1 || BASIS || Verbatim 2SSD128 128GB || 0,35W || 1,71W || 6,9W || 5,9W || 8,2W || || AVM DECT 200 || 5.1<br />
|-<br />
! 115<br />
|| 1 || BASIS || WD Red 4TB || 0,35W || 1,71W || 16,6W || 10,5W || || 5,7W || AVM DECT 200 || 5.1<br />
|-<br />
! 115<br />
|| 1 || BASIS || WD Red 4TB || || 1,7W || || 10,4W || 12,5W || 6,4W || Energy Master Basic || 5.1<br />
|-<br />
! 115<br />
|| 1 || BASIS || WD Red 3TB || 0,28W || 1,85W || 20,1W || 9,7W || 11,4W || 5,3W || AVM DECT 200 || 5.2<br />
|-<br />
! 115j<br />
|| 1 || BASIS || WD Red 3TB || 0,3W || || 18,4W || || 9,4W || 4,8W || || 6.0<br />
|-<br />
! 114<br />
|| 1 || BASIS || WD Red 4TB || || 2,0W || || 11,1W || 13,1W || 7,1W || Energy Master Basic || 5.1<br />
|-<br />
! 114<br />
|| 1 || BASIS || WD Red 4TB || 0,3W || 1,9W || 24,8W || 10,8W || 14,7W || 6,2W || Brennenstuhl PM231E || 4.3<br />
|-<br />
! 114<br />
|| 1 || BASIS || WD Red 3TB || || || 17,1W || 12,6W || 14,9W || 8,9W || AVM DECT 200 || 4.3<br />
|-<br />
! 111<br />
|| 1 || BASIS || Seagate ST3000DM001 3TB || 0,6W || || 26,0W || 13,3W || 15,6W (tbc) || 7,0W || Brennenstuhl PM231E || 5.1<br />
|}<br />
<br />
'''Spaltenbeschreibung'''<br><br />
<br />
{| class="wikitable"<br />
|-<br />
| DS<br />
|| Disk Station Modellbezeichnung<br />
|-<br />
| Platten-Zahl<br />
|| Anzahl der eingebauten Festplatte(n)<br />
|-<br />
| Platten-Konfiguration<br />
|| BASIS, SHR, RAID<br />
|-<br />
| Platten-Typ<br />
|| Hersteller und Typbezeichnung der verbauten Festplatte(n)<br />
|-<br />
| AUS ohne WOL<br />
|| Typischer Stromverbrauch in ausgeschaltetem Zustand - WOL ist deaktiviert<br />
|-<br />
| AUS mit WOL<br />
|| Typischer Stromverbrauch in ausgeschaltetem Zustand - WOL ist aktiviert<br />
|-<br />
| START max.<br />
|| Maximaler Stromverbrauch beim Einschalten<br />
|-<br />
| IDLE<br />
|| Typischer Verbrauch im Betrieb ohne Last<br />
|-<br />
| LAST (ATTO)<br />
|| Max. Verbrauch unter Last (beim Zugriff z.B. durch die Applikation ATTO ([http://sburke.eu/blog/2011/04/quick-disk-benchmark-for-windows/ Version 2.34]) von einem Rechner aus<br />
|-<br />
| HD-/System-Ruhezustand<br />
|| Typischer Verbrauch im HD- bzw. System-Ruhezustand<br />
|-<br />
| Messgerät<br />
|| Verwendetes Messgerät<br />
|-<br />
| DSM<br />
|| Verwendete DSM-Version<br />
|}<br />
<br />
[[Kategorie:Hardware]]</div>Itommeshttps://www.synology-wiki.de/index.php?title=Paketzentrum_Quellen&diff=7149Paketzentrum Quellen2016-11-04T15:35:48Z<p>Itommes: /* Community Package Hub */</p>
<hr />
<div>[[Category:Software]][[Category:3rd-Party-Apps|!]]<br />
<br />
Liste von SPK-Quellen zum Einbinden in das DSM Paket-Zentrum (möglich ab DSM 3.2)<br />
<br />
Eine ältere Liste mit Einzelpaketen kann hier eingesehen werden: [[Übersicht über verfügbare 3rd-Party-Apps aus unserer Community]]<br />
<br />
'''Bitte beachten: Einige Pakete verschiedener Quellen, insbesondere Java und Python, können inkompatibel zueinander sein. Bitte vor Installation informieren.'''<br />
<br />
== Synology Package Sources Uptime Report ==<br />
<br />
* Link: http://dottoremoe.com/synomon/<br />
<br />
Hier werden unter Umständen auch Sources überwacht, die hier im Wiki-Eintrag nicht aufgeführt sind!<br />
<br />
== Zur Sicherheit ==<br />
Die hier aufgeführten Pakete stammen (mit Ausnahme der unter "Offizielle Packages" geführten) nicht von Synology. Sie können daher Sicherheitslücken oder gar Schadsoftware enthalten. Einige Paketquellen führen Sicherheitschecks durch, andere stellen nur selbst geschriebene Software bereit. Welchen Quellen vertraut wird muss jeder Benutzer selbst entscheiden. Bei Unsicherheit kann es helfen, das spk zu entpacken und die Quelltexte selbst zu überfliegen. Hierbei ist aber die Lizenz zu beachten! Nicht alle Pakete dürfen auseinander genommen werden.<br />
<br />
== Offizielle Packages ==<br />
*Werden automatisch via Paket-Zentrum angeboten (Auswahl/Anzahl abhängig von der verwendeten Diskstation & der Kompatibilität zum jeweiligen Package):<br />
** Antivirus Essentials (ab DSM 4.0)<br />
** Asterisk<br />
** Audio Station (ab DSM 4.0)<br />
** Cloud Station (ab DSM 4.0)<br />
** DHCP Server (ab DSM 4.0)<br />
** DNS Server (ab DSM 4.1)<br />
** Directory Server<br />
** DokuWiki<br />
** Download Station (ab DSM 4.0)<br />
** Drupal<br />
** [[Git Server]] (ab DSM 4.3)<br />
** Glacier Backup<br />
** GLPI<br />
** HAManager<br />
** HASP<br />
** HiDrive Backup<br />
** iTunes Server (ab DSM 4.0)<br />
** Java Manager<br />
** Joomla<br />
** Magento<br />
** Mail Server (ab DSM 4.1)<br />
** McAfee Antivirus (ab DSM 4.2)<br />
** MediaWiki<br />
** Medien Server (ab DSM 4.0)<br />
** Mono<br />
** Moodle<br />
** Mail Station<br />
** OpenERP 6.1<br />
** OpenERP 7.0 (ab DSM 4.3)<br />
** OrangeHRM<br />
** osCommerce<br />
** osTicket<br />
** Perl (ab DSM 4.2)<br />
** Photo Station (ab DSM 4.0)<br />
** Piwik<br />
** Podcast Generator<br />
** phpBB<br />
** phpMyAdmin<br />
** PHP PEAR (ab DSM 4.3)<br />
** Plex Media Server<br />
** PrestaShop<br />
** Python<br />
** Radius Server (ab DSM 4.1)<br />
** Sugar CRM<br />
** Surveillance Station (ab DSM 4.0)<br />
** Squeezebox Server<br />
** Symform Cloud Storage Network<br />
** Syslog Server<br />
** Time Backup<br />
** Tomcat<br />
** Video Station (ab DSM 4.1)<br />
** VPN Server<br />
** vTiger CRM<br />
** Webalizer<br />
** WordPress<br />
** xCloud Server<br />
<br />
== CBO ==<br />
* Webseite: http://cbo.netau.net<br />
* Paketquelle: http://cbo.netau.net/synopackages/<br />
** SynoBox (Dropbox Client) - benötigt Synobox Base & Data!!!<br />
** SynoBox Base<br />
** SynoBox Data<br />
<br />
== Community Package Hub ==<br />
* Webseite: https://www.cphub.net/<br />
* Paketquelle: https://www.cphub.net/<br />
** Advanced Power Manager<br />
** autorun<br />
** BubbleUPnP Server<br />
** Cronjob editor<br />
** DDNS Updater<br />
** DDNS Updater 2<br />
** Easy Bootstrap Installer <br />
** Growler<br />
** [[init3rdParty]]<br />
** init3rdPartyHelp<br />
** iPKGui<br />
** Mailstation Plus<br />
** MLDonkey<br />
** Multi-IPX800 Server<br />
** MusicIP Server<br />
** [[net2ftp]]<br />
** Notification Essentials<br />
** Notification Forwarder<br />
** Notification Messenger<br />
** PHP Net_Growl Library<br />
** phpMyBackupPro<br />
** phpPgAdmin<br />
** Plugin Videostation FR<br />
** Rootkit Hunter<br />
** Serviio Console<br />
** SQL Buddy<br />
** String Editor<br />
** Subsonic<br />
** Subsonic-backup-creator<br />
** Synology Monitoring Tool<br />
** traccar <br />
** tvstreamrecord<br />
** Ultimate Backup<br />
** Ultimate Search<br />
** Webmin<br />
<br />
== Cytec ==<br />
* Webseite: https://cytec.us<br />
* Paketquelle: https://cytec.us/spk/<br />
** ffmpeg<br />
** Headphones Custom<br />
** Node.js<br />
** NZBGet Testing<br />
** PlexConnect<br />
** Pydio<br />
** SABnzbd<br />
** Syncthing<br />
** SynoDLNAtrakt<br />
** Webogram<br />
** YaCy<br />
<br />
==Diablos-Netzwerk==<br />
* Webseite: http://www.diablos-netzwerk.de<br />
* Paketquelle: http://spk.diablos-netzwerk.de<br />
** TeamSpeak 3 Server<br />
** Bash Shell<br />
<br />
== jdel ==<br />
* Webseite: http://www.jdel.org/<br />
* Paketquelle: http://packages.jdel.org/<br />
** apt-mirror<br />
** bicbucstriim<br />
** git-server<br />
** nano<br />
** squidguard<br />
** sspks (Simple SPK Server)<br />
<br />
== MdeVries ==<br />
Hinweis: Dieser Server liefert Pakete in niederländischer Sprache aus.<br />
* Webseite: http://www.mdevries.org/<br />
* Paketquelle: http://packages.mdevries.org/<br />
** AutoSub-BootstrapBill<br />
** Gamez<br />
** LazyLibrarian<br />
** MovieGrabber<br />
** PlexConnext<br />
** SickBeard-ThePirateBay<br />
** Spotweb<br />
** TraktForBoxee<br />
** xdm<br />
<br />
== MertyMade ==<br />
'''Paketquellen-Server ist offline ([http://www.synology-forum.de/showthread.html?30403-PackageCenter&p=264002&viewfull=1#post264002 Forumsthread]); Download ist aber über die Website weiterhin möglich!'''<br />
* Webseite: http://mertymade.com/syno/<br />
* (Paketquelle: http://packages.mertymade.com/)<br />
** Base Utils<br />
** Compression Utils<br />
** Config File Editor<br />
** Current Connection<br />
** Python Utils<br />
** SABnzbd & SAB Helper<br />
** Service Switch<br />
<br />
== NAS-Mirror ==<br />
<br />
* Webseite: http://www.naefmarco.ch/<br />
* Paketquelle: http://spk.nas-mirror.de/spkrepo/packages<br />
* Mirror: http://www.nas-mirror.de/index.php?dir=3rd%20Party/<br />
** Autoindex (PHP-Mirror-Skript)<br />
** BBClone (PHP Webcounter)<br />
** FSyncMS (FirefoxSyncServer '''"Erstinstallation nur bis FF28 möglich"''')<br />
** Midnight Commander (Dateiexplorer für Linux-Konsole)<br />
** NUT (Network UPS Tools)<br />
** SPK-Repo (SPK-Paketserver)<br />
<br />
== Netzbär ==<br />
* Paketquelle: https://spk.netzbaer.de<br />
** JDownloader 2<br />
<br />
== Page81 ==<br />
* Paketquelle: http://packages.page81.net/<br />
** FTB: Direwolf20<br />
** FTB: Direwolf20 1.5<br />
** FTB: Ultimate<br />
** Hexxit<br />
** Tekkit<br />
** Tekkit Classic<br />
** Tekkit Lite<br />
<br />
Hinweis: Hexxit/Tekkit sind Minecraft Mods !!!<br />
<br />
== PCLoadLetter ==<br />
* Webseite: http://pcloadletter.co.uk/<br />
* Paketquelle: http://packages.pcloadletter.co.uk/<br />
** Bliss<br />
** Craftbukkit<br />
** CrashPlan<br />
** CrashPlan PRO<br />
** CrashPlan PROe Client<br />
** CrashPlan PROe Server<br />
** Java SE for Embedded 6<br />
** Java SE for Embedded 7<br />
** Minecraft<br />
** Open Remote<br />
** Servioo<br />
<br />
== Quadrat4 ==<br />
* Website: http://blog.quadrat4.de/<br />
* Paketquelle: http://packages.quadrat4.de/<br />
** [[Bootstrap Installer]] (IPKG)<br />
<br />
== spk.Unzureichende.Info ==<br />
* Webseite: http://spk.unzureichende.info/<br />
* Paketquelle: http://spk.unzureichende.info/<br />
** iptv PVR<br />
** MiniDLNA<br />
** MiniSAPServer<br />
** pyLoad<br />
** udpxy<br />
<br />
== SynoCommunity ==<br />
Solltet Ihr über das DSM-Paketzentrum mal eines dieser Pakete nicht finden, dann hat der Entwickler dieses wahrscheinlich als "private beta" gekennzeichnet!<br />
"Private beta" Pakete sind Pakete die sich momentan in der Weiterentwicklungs bzw. Testphase befinden und deshalb nicht für die Öffentlichkeit zugänglich sind.<br />
* Webseite: http://synocommunity.com/<br />
* Paketquelle: http://packages.synocommunity.com<br />
** BicBucStriim<br />
** BitlBee<br />
** BitTorrent Sync<br />
** COPS<br />
** CouchPotato<br />
** CouchPotato Server<br />
** CouchPotato Server Custom<br />
** DarkStat<br />
** Debian Chroot<br />
** Disk Utils<br />
** FlexGet<br />
** Full-Text RSS<br />
** GateOne<br />
** Git<br />
** Git Server<br />
** HAProxy<br />
** Headphones<br />
** LazyLibrarian<br />
** LIRC<br />
** MantisBT<br />
** Maraschino<br />
** Memcached<br />
** Midnight Commander<br />
** Mylar<br />
** Newznab<br />
** NZB Config<br />
** NZBGet<br />
** NZBGet Testing<br />
** ownCloud<br />
** Python<br />
** Python3<br />
** Redis<br />
** Roundcube Webmail<br />
** SABnzbd<br />
** Selfoss<br />
** Sickbeard<br />
** Sickbeard Custom<br />
** SquidGuard<br />
** Subliminal<br />
** Subversion<br />
** Tiny Tiny RSS<br />
** Transmission<br />
** Tvheadend<br />
** uMurmur<br />
** ZNC<br />
<br />
==SysCo==<br />
* Webseite: http://developer.sysco.ch/hobbit/<br />
* Paketquelle: http://synology.sysco.ch<br />
** SynoMon</div>Itommeshttps://www.synology-wiki.de/index.php?title=Dateibasierte_RSync-Datensicherung_auf_externen_Datentr%C3%A4ger_oder_RSync_kompatiblen_Server&diff=7138Dateibasierte RSync-Datensicherung auf externen Datenträger oder RSync kompatiblen Server2016-07-24T14:05:46Z<p>Itommes: </p>
<hr />
<div>{| border="0" cellpadding="10" cellspacing="0" width="100%" style="text-align:center"<br />
|-<br />
|style="color:#ff0000; background-color:#ddd;"| Resultierend aus diesem Wiki ist [http://www.synology-forum.de/showthread.html?78115-Ultimate-Backup Ultimate Backup] als eigenständiges SPK entstanden !!! <br />
|}<br />
<br />
<br />
=Einleitung=<br />
<br />
'''Diese Anleitung zur dateibasierten RSync-Datensicherung bietet folgende Möglichkeiten...'''<br />
<br />
* Quelle(n) und/oder Ziel können unverschlüsselt sein<br />
* Quelle(n) und/oder Ziel können verschlüsselt sein<br />
* Quelle(n) und/oder Ziel können Leerzeichen im Ordernamen enthalten <br />
* Sicherung innerhalb eines /volume<br />
* Sicherung zwischen internen /volumes<br />
* Sicherung AUF lokal angeschlossene USB-/SATA-Datenträger sowie eingebundene Remote-Shares (nur unverschlüsselt)<br />
* Sicherung VON lokal angeschlossene USB-/SATA-Datenträger AUF internes /volume oder RSync-kompatiblen Server (auch verschlüsselt möglich)<br />
* Sicherung von einer entfernten DS oder RSync-kompatilben Server<br />
* Sicherung auf eine entfernte DS oder RSync-kompatilben Server<br />
* (weitere Konstellationen sind möglich, wurden jedoch nicht getestet) <br />
<br />
'''Hinweis:''' Die Verschlüsselung beruht hierbei auf der von Synology verwendeten Ordnerverschlüsselung (eCryptfs). Um verschlüsselte gemeinsame Ordner einbinden zu können, wird das Key-File also der Exportschlüssel benötigt. Diesen erhält man über die DSM-Systemsteuerung/Gemeinsame Ordner.<br />
<br />
=Anmerkung=<br />
Bevor ihr anfangt, nehmt bitte noch den Artikel "[[Wichtige Informationen zum Modden der Synology Stations]]" zur Kenntnis. <br />
<br />
Auch wenn dieses Script intensiv auf einwandfreie Funktion hin getestet wurde, so kann eine Fehlfunktion und demzufolge ein möglicher Datenverlust nicht ausgeschlossen werden. Aus diesem Grund solltet ihr das System erstmal mit unwichtigen Testdaten auf Herz und Nieren prüfen und sich mit der Arbeitsweise des Scripts und dessen Funktionen vertraut machen bevor ihr das ganze "produktiv" einsetzt. '''Ihr verwendet dieses Script auf eigene Gefahr.'''<br />
<br />
=Voraussetzungen=<br />
* Umgang mit dem DSM Aufgabenplaner <br />
* Umgang mit einem Editor seiner Wahl (z.B. Notepad++ oder dem DSM Text-Editor)<br />
* Grundkenntnisse im Umgang mit Shell-Scripten<br />
* Umgang mit der Konsole (bei Verwendung des SSH-Zuganges)<br />
* Zum versenden einer E-Mail muss im DSM unter Hauptmenü/Systemsteuerung/Benachrichtigung eine E-Mail Adresse hinterlegt sein.<br />
* Ein externer USB- oder SATA-Datenträger, eine weitere Synology Diskstation oder einen rsync-kompatiblen Server im Netzwerk.<br />
* Optional: autorun für externe Datenträger (Version 1.7)<br />
<br />
=Erläuterungen zur Funktion und Arbeitsweise=<br />
<br />
<pre><br />
Diskstation<br />
| |<br />
| '--> Aufgabenplaner ------------------------------<br />
| | |<br />
| '--> Such-Script -----> USB/SATA-Share ---> Ausführungs-<br />
| | Script<br />
'----------------> USB/SATA-Share --> autorun -------- (Key-Files)<br />
|<br />
.---------------------------'<br />
|<br />
V<br />
.---------- Quelle <--- definiere ---> Ziel----------.<br />
| | | |<br />
V '-- lokale/intern/extern --' V<br />
lokalisiere Quelle(n) lokalisiere Ziel<br />
| | <br />
| Protokoll/E-Mail |<br />
|--> Verschlüsselte | Verschlüsseltes <--|<br />
| Quelle(n) anhand der | Ziel anhand der |<br />
| Key-Files einhängen <--- aushängen ---> Key-Files einhängen |<br />
| | | | |<br />
| V | V |<br />
'--------------------->> !! DATENSICHERUNG !! >>---------------------'<br />
| |<br />
'-- lokale/intern/extern -'<br />
<br />
</pre><br />
<br />
<br />
'''Scriptausführung über den DSM-Aufgabenplaner'''<br />
<br />
Das manuelle oder automatisierte Aufrufen von Such- oder Ausführungs-Script wird komfortabel über den DSM - Aufgabenplaner gesteuert. Das Such-Script hat dabei die Aufgabe, das Ausführungs-Script zu lokalisieren und starten. Es wird jedoch nur bei der Verwendung einer lokalen Datensicherung auf einem angeschlossenen USB-/SATA-Datenträger eingesetzt, da sich hier die Datenträgerbezeichnungen durchaus mal ändern können. Für alle andern Aufgaben wird das Such-Script nicht benötigt weshalb man das Ausführungs-Script auch direkt über den DSM-Aufgabenplaner ansprechen kann, um es manuell oder automatisiert auszuführen. Dabei befindet sich das Ausführungs-Script innerhalb eines "gemeinsamen Ordners" auf der DS, also z.B. dort, wo die interne oder externe Datensicherung später gespeichert werden soll.<br />
<br />
<br />
'''Scriptausführung mittels "autorun"'''<br />
<br />
Eine weitere Möglichkeit der Scriptausführung bietet die Verwendung von "autorun", welches angeschlossene USB-/SATA-Datenträger automatisch erkennt und ein darauf liegendes Script Namens "autorun" ausführt, sollte es im Wurzel- bzw. Hauptverzeichnis des externen Datenträgers lokalisiert werden. Dieses Verhalten machen wir uns zunutze, indem wir entweder den Inhalt unseres Ausführungs-Scriptes per Copy & Paste mit dem des "autorun" Scripts überschreiben, oder wir legen uns eine neue Datei namens "autorun" an bzw. benennen unser Script einfach nach "autorun" um und legen es auf dem externen Datenträger ab. Somit erhält man die Möglichkeit durch einfaches anstecken des USB-Sticks eine lokale, interne oder externe Datensicherung auszuführen. Ein weiterer Vorteil von "autorun" ist der Tatsache geschuldet, das sich evtl. benötigte Key-Files (also der Exportschlüssel) für das Einhängen verschlüsselter gemeinsamer Ordner am Speicherort des Ausführungs-Scripts befinden müssen. Wird der USB-Stick demnach nur für die Zeit der Datensicherung verwendet und ansonsten an einem sicheren Ort aufbewahrt, sind auch die Key-Files für diesen Zeitraum erstmal sicher. <br />
<br />
<br />
'''Arbeitsweise des Ausführungs-Script (start-rsync.sh)'''<br />
<br />
Das Ausführungs-Script führt neben einigen anderen Dingen die eigentliche Datensicherung aus, wobei mittels RSync sämtliche konfigurierte Quellen mit dem Ziel synchronisiert werden. Befindet sich unter den Quellen oder dem Ziel ein oder mehrere verschlüsselte gemeinsame Ordner, so können diese über das sogenanntes Key-File (der Exportschlüssel) automatisch ein- und nach dem Beenden der Datensicherung wieder automatisch ausgehangen werden. Dazu ist es jedoch erforderlich, das sich das Key-File am Speicherort des Ausführungs-Scripts befindet. Das Key-File selber wird einem beim erstellen eines verschlüsselten gemeinsamen Ordners im DSM unter Systemsteuerung/Gemeinsame Ordner zum Download angeboten, man kann sich dieses aber auch nachträglich erstellen lassen. Weiterhin muss der Benutzer im Vorfeld noch einige Parameter innerhalb des Ausführungs-Scripts definieren, dessen Funktionen durch zusätzliche Kommentare näher beschrieben werden.<br />
<br />
Um dem Benutzer ein Feedback über Erfolg und Misserfolg der Datensicherung geben zu können wird ein Systemprotokoll erstellt, welches in einem Ordner Namens /@Logfiles abgelegt wird. Dieser Ordner liegt hierbei immer im Speicherort des Ausführungs-Scriptes. Weiterhin werden gelöschte Daten einer Quelle, im Ziel bei Bedarf in den Ordner /@Recycle verschoben, welcher sich auch im Speicherort der Datensicherung befindet. Ebenso wird hier bei Bedarf ein weiterer Ordner mit dem Namen @/DSMConfig angelegt, worin die Sicherungen der DSM-Systemkonfiguration des Systems aufbewahrt werden, von dem auch die Quellen stammen. Die Inhalte der Ordner /@Logfiles, /@Recycle sowie /@DSMConfig können nach der Angabe einer Individuellen Zeitvorgabe (in Tagen) vom System automatisch gelöscht werden um einen Speicherüberlauf zu verhindern und um die Übersicht zu bewahren.<br />
<br />
Bei der eigentlichen Datensicherung über RSync werden die Ordnerpfade relativ, nach dem jeweiligen Volume (1,2,3,4….) in das entsprechende Unterverzeichnis gespeichert. Systemorder wie z.B. /@eaDIR, /#recycle, /#snapshot und /.DS_Store werden von der Synchronisation ausgeschlossen. Alle ausgeführten Schritte sowie Fehlermeldungen als auch Abbrüche werden protokolliert und teilweise über sogenannte Exit-Codes als Zahlenwert ausgegeben. Diese Exit-Codes geben weitere Auskunft über mögliche Fehlerquellen. Im Anhang unten findet man ein entsprechender Link zur Auswertung. Das Protokoll wird im oben beschriebenen Ordner /@Logfiles abgelegt und kann bei Bedarf auch als E-Mail zugestellt werden. <br />
<br />
Weitere Einstellmöglichkeiten werden innerhalb des Scripts beschrieben und hier nicht weiter ausgeführt.<br />
<br />
=Hinweise zum Erstellen und ausführen der Scripte=<br />
Die hier verwendeten Script-Dateinamen dienen nur der Veranschaulichung und können, unter Beachtung einiger Rahmenbedingungen nach Belieben verändert werden.<br />
Für die Erstellung der Scripte wurde im DSM unter dem Benutzer "admin" der DSM eigene Text-Editor, der evtl. noch über das Paketzentrum installiert werden muss, verwendet. Wichtig ist das im Editor unter "Voreinstellungen" im Reiter "Bearbeiten" als Standardcodierung "Unicode (UTF-8)" ausgewählt wird.<br />
<br />
Nachdem das jeweilige Script aus dem Wiki in die Zwischenablage kopiert und im Text-Editor eingefügt wurde, kann die entsprechende Datei über "Speichern unter..." am gewünschten Ort abgespeichert werden. Scripte die später über den Aufgabenplaner ausgeführt werden, müssen noch die entsprechenden Berechtigungen erhalten um das jeweilige Script "ausführbar" zu machen. Dazu muss man in der FileStation mit einem rechtsklick auf die betreffenden Datei gehen und im Kontextmenü den Menüpunkt "Eigenschaften" auswählen. Dort angekommen wechselt man zum Reiter "Genehmigung" und weiter auf die Schaltfläche "Erweiterte Optionen" um darauffolgend den Punkt "Übernommene Genehmigungen einschließen" auszuwählen. Zum Schluss bestätigt man das Ganze mit der Schaltfläche "OK" (Die Datei sollte jetzt die Berechtigung rwxrw-rw, bzw. 766 haben)<br />
<br />
Nachdem die Privilegien richtig gesetzt wurden, kann das Script unter Hauptmenü/Systemsteuerung in den Aufgabenplaner aufgenommen werden, ohne die Aufgabe jedoch vorerst auszuführen. Dazu wählt man unter DSM 6 "Erstellen" --> "Geplante Aufgabe" --> "Benutzerdefiniertes Script". Im Reiter "Allgemein" kann man unter "Vorgang" einen individuellen Namen für die Aufgabe vergeben und als Benutzer sollte "root" ausgewählt werden. Bei einer Netzwerksicherung über eine SSH-Verbindung muss hier der Benutzer angegeben werden, auf dem der RSA-Key ausgestellt wurde, in unserem Fall (siehe Anleitung unten) ist das der Benutzer "root". (Nur unter dem Benutzer "root" funktioniert die Signaausgabe sowie die Sicherung der DSM-Konfiguration) Die Checkbox "Aktiviert" wird nur benötigt, sollte das Script automatisiert, also Zeitgesteuert gestartet werden. Dazu wäre dann im nächsten Schritt unter dem Reiter der "Zeitplan" zu definieren. Im Reiter "Aufgabeneinstellungen" muss jetzt noch unter dem Punkt "Befehl ausführen" der Pfad zum "Benutzerdefinierten Script" angegeben werden, also z.B. /volume1/ScriptStuff/search-rsync.sh. Nach dem Bestätigen mit "OK" wird die Aufgabe dem Aufgabenplaner hinzugefügt und kann später, falls gewünscht, nach dem Markieren der Aufgabe, über die Schaltfläche "Ausführen" manuell ausgeführt werden.<br />
<br />
=Script 1: Das Such-Script "search-rsync.sh"=<br />
<br />
Da es mehrere Ansätze für die Suche gibt, kann man sich hier [[Dateibasierte RSync-Datensicherung auf externen Datenträger oder RSync kompatiblen Server/Suchscriptvarianten|Weitere Suchscriptvarianten]] anschauen und sich die für sich passenden Möglichkeit auswählen.<br />
<br />
'''search-rsync.sh'''<br />
<pre><br />
#!/bin/sh<br />
<br />
# Zeichenkette für Script-Dateinamen definieren<br />
# ------------------------------------------------------------------------<br />
# Es ist nicht erforderlich, den kompletten Script-Dateinamen anzugeben. |<br />
# Es reicht die Eingabe einer Zeichenkette, die in jedem auszuführenden |<br />
# Script-Dateinamen enthalten sein muss. |<br />
# Beispiele für die Zeichenkette: "local" = local_Backup_Filme.sh |<br />
# local_Filme.sh oder auch Filme_local_sichern.sh |<br />
#-------------------------------------------------------------------------<br />
SCRIPT_STRING="start"<br />
<br />
# ------------------------------------------------------------------------<br />
# Ab hier bitte nichts mehr ändern |<br />
# ------------------------------------------------------------------------<br />
<br />
for SCRIPT in /volume*/*share/*$SCRIPT_STRING*.sh<br />
do<br />
if [ -f $SCRIPT ]; then<br />
sh $SCRIPT<br />
fi<br />
done<br />
</pre><br />
<br />
=Script 2: Das Ausführungs-Script "start-rsync.sh"=<br />
Das Script mit dem beispielhaften Script-Dateinamen "start-rsync.sh", wird entweder auf den entsprechenden externen USB- oder SATA-Datenträger in dessen Wurzelverzeichnis oder aber in einen "gemeinsamen Ordner" auf der Diskstation abgelegt, auf dem die Datensicherung abgelegt werden soll. <br />
<br />
'''start-rsync.sh'''<br />
<pre><br />
#!/bin/sh<br />
<br />
# E-Mail Adresse<br />
# -------------------------------------------------------------------------<br />
# Die E-Mail Adresse muss mit der bereits im DSM unter "Benachrichtigung" |<br />
# hinterlegten E-Mail-Adresse identisch sein. |<br />
# -------------------------------------------------------------------------<br />
EMAIL="" # E-Mail für Zustellung des Sicherungsprotokolls<br />
EMAILFAIL="0" # "0" = Sicherungsprotokoll immer senden<br />
# "1" = Sicherungsprotokoll nur bei Problemen senden<br />
# SSH - Verbindungsdaten<br />
# -------------------------------------------------------------------------<br />
# Werden keine Verbindungsdaten angegeben, wird eine lokale Datensicherung|<br />
# durchgeführt. |<br />
# -------------------------------------------------------------------------<br />
SSH_USER="" # Benutzername<br />
SSH_FROM="" # IP-, Host- oder Domain VON entfernter Quelle AUF lokales Ziel<br />
SSH_TO="" # IP-, Host- oder Domain VON lokaler Quelle AUF entferntes Ziel<br />
SSH_PORT="" # Leer = Port 22 ansonsten gewünschten Port angeben<br />
RSYNC_PORT="" # Alternativer Rsync Port kann hier eingetragen werden<br />
MAC="" # Leer = WOL wird nicht genutzt<br />
SLEEP="300" # Wartezeit in Sekunden bis Remoteserver gebootet ist<br />
# MAC Adresse eintragen = Server wird hochgefahren, wenn dieser ausgeschaltet ist<br />
SHUTDOWN="0" # "0" = Entfernter Server wird nicht heruntergefahren<br />
# "1" = Entfernter Server wird heruntergefahren wenn das Backup erfolgreich war<br />
<br />
# Umgang mit verschlüsselten Ordnern<br />
# ------------------------------------------------------------------------<br />
# Angeben, ob eingehangene verschlüsselte Ordner nach der Datensicherung |<br />
# wieder ausgehangen werden sollen. |<br />
# ------------------------------------------------------------------------<br />
UNMOUNT="0" # "0" = Eingehangene Ordner werden nicht ausgehängt<br />
# "1" = Quelle und Ziel werden ausgehängt<br />
# "2" = Quelle wird ausgehängt<br />
# "3" = Ziel wird ausgehängt<br />
<br />
# Backup - Quellen<br />
# ------------------------------------------------------------------------<br />
# Hier können beliebige, unverschlüsselte sowie verschlüsselte |<br />
# Backup-Quellen einer lokalen oder entfernten DS eingetragen werden. |<br />
# Zu beachten ist, das immer der vollständige Pfad ohne Angabe des |<br />
# entsprechenden Volume anzugeben ist. Weiterhin ist auf die |<br />
# Schreibweise im Beispiel zu achten, pro Zeile je eine Backupquelle. |<br />
# ------------------------------------------------------------------------<br />
SOURCES="/homes/admin<br />
/ordner mit leerzeichen<br />
/verschlüsselter ordner"<br />
<br />
# Backup - Ziel<br />
# ------------------------------------------------------------------------<br />
# Wenn NOTTOSCRIPT="0" |<br />
# - dann entspricht TARGET einem "Unterverzeichnis" am Speicherort des |<br />
# Scripts. Beisp.: volume[x]/share/[TARGET] oder bei einem |<br />
# angeschlossenen USB-Datenträger: volumeUSB[x]/usbshare/[TARGET] |<br />
# - Ist zusätzlich HOSTNAME="1" gesetzt, wird der Netzwerkname dem |<br />
# Speicherort hinzugefügt. Beisp.: volume[x]/Share/[TARGET]/[HOSTNAME]|<br />
# |<br />
# Wenn NOTTOSCRIPT="1" und Ziel ist eine Diskstation |<br />
# - dann entspricht TARGET einem "gemeinsamen Ordner" (Share) am |<br />
# Speicherort des Ziel's. Beisp.: volume[x]/[TARGET] |<br />
# - Ist zusätzlich HOSTNAME="1" gesetzt, wird der Netzwerkname dem |<br />
# Speicherort hinzugefügt. Beisp.: volume[x]/[TARGET]/[HOSTNAME] |<br />
# |<br />
# Wenn NOTTOSCRIPT="1" und Ziel ist ein RSync-kompatibler Server |<br />
# - dann entspricht TARGET einem Ordner (Share) am Speicherort des |<br />
# Ziel's. Beisp.: /[TARGET] |<br />
# - Ist zusätzlich HOSTNAME="1" gesetzt, wird der Netzwerkname dem |<br />
# Speicherort hinzugefügt. Beisp.: /[TARGET]/[HOSTNAME] |<br />
#-------------------------------------------------------------------------<br />
TARGET="/RSync Backup"<br />
<br />
FROMTHISDEVICE="0" # "0" = Quelle ist ein gemeinsamer Ordner<br />
# "1" = Quelle liegt auf externen USB/SATA-Speicher neben Script<br />
NOTTOSCRIPT="0" # "0" = Sicherungsziel liegt beim Script<br />
# "1" = Sicherungsziel liegt im geinsamen Ordner<br />
HOSTNAME="0" # "0" = Sicherungsziel entspricht TARGET<br />
# "1" = Sicherungsziel entspricht TARGET/HOSTNAME<br />
AUTORUN="0" # "0" = autorun wirft USB-Stick nicht aus<br />
# "1" = autorun wirft USB-Stick aus<br />
<br />
# Optische- sowie akustische Signalausgabe<br />
#-------------------------------------------------------------------------<br />
# Start : Status-LED wechselt von grün nach orange. Ein Signalton ertönt|<br />
# Ende : Status-LED wechselt von orange nach grün. Ein Signalton ertönt|<br />
# Fehler : Status-LED wechselt von orange nach grün. 3x Signalton ertönt |<br />
#-------------------------------------------------------------------------<br />
SIGNAL="0" # "0" = Optische- sowie akustische Signalausgabe aus<br />
# "1" = Optische- sowie akustische Signalausgabe an<br />
<br />
# Exportieren der DSM-Systemkonfiguration (.dss)<br />
#-------------------------------------------------------------------------<br />
# Die DSM-Systemkonfigurartion (.dss) wird in den Systemordner |<br />
# /@DSMConfig exportiert. |<br />
#-------------------------------------------------------------------------<br />
DSM_EXPORT="0" # "0" = DSM-Systemkonfiguration wird NICHT exportiert<br />
# "1" = DSM-Systemkonfiguration wird exportiert<br />
<br />
# Rotationszyklus für das Löschen von @Recycle und @Logfiles<br />
#-------------------------------------------------------------------------<br />
# Zeitangabe, wann Ordner bzw. Dateien in den System-Ordnern endgültig |<br />
# gelöscht werden sollen, die älter als x Tage sind. |<br />
# ------------------------------------------------------------------------<br />
RECYCLE_ROTATE="90" # @Recycle-Daten die älter als "x" Tage sind, löschen<br />
LOGFILES_ROTATE="60" # @Logfiles-Daten die älter als "x" Tage sind, löschen<br />
DSMCONFIG_ROTATE="30" # @DSMConfig-Daten die älter als "x" Tage sind, löschen<br />
<br />
# ------------------------------------------------------------------------<br />
# Ab hier bitte nichts mehr ändern, wenn man nicht weiß was man tut !!! |<br />
# ------------------------------------------------------------------------<br />
SCRIPTFILE="${0##*/}"<br />
SCRIPTNAME="${SCRIPTFILE%.*}"<br />
DATE=`date +%Y-%m-%d_%Hh%M`<br />
# RSync Optionen konfigurieren<br />
#-------------------------------------------------------------------------<br />
SYNCOPT="-ahR"<br />
LOGSTAT="--stats"<br />
EXCLUDE="--exclude=@eaDir/*** --exclude=@Logfiles/*** --exclude=#recycle/*** --exclude=#snapshot/*** --exclude=.DS_Store/***"<br />
RECYCLE="--delete --backup --backup-dir=@Recycle/"$DATE"_$SCRIPTNAME"<br />
<br />
# Umgebungsvariablen definieren<br />
#-------------------------------------------------------------------------<br />
BACKIFS="$IFS"<br />
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/syno/bin:/usr/syno/sbin<br />
TARGET_EMPTY="/Backup_DS"<br />
if [[ ${TARGET:0:1} != \/ ]] && [ -n "$TARGET" ]; then<br />
TARGET="/$TARGET"<br />
fi<br />
DEST="${TARGET#*/}"<br />
TARGET_CUT="${TARGET#*/}"<br />
TARGET_DECRYPT="${TARGET_CUT%%/*}"<br />
TIMESTAMP=`date +%d.%m.%Y%t%H:%M:%S`<br />
LOKALHOST="$(hostname)"<br />
HR="------------------------------------------------------------------------------------------------"<br />
<br />
# Variablen je nach Verbindung festlegen<br />
#-------------------------------------------------------------------------<br />
# Wenn Verbindung AUF entfernten Server... (TOSSH)<br />
if [ -n "$SSH_FROM" ] && [ -z "$SSH_TO" ]; then<br />
if [ -n "$SSH_PORT" ]; then<br />
FROMSSH="ssh -p $SSH_PORT $SSH_USER@$SSH_FROM"<br />
SCP="scp -P $SSH_PORT"<br />
else<br />
FROMSSH="ssh $SSH_USER@$SSH_FROM"<br />
SCP="scp"<br />
fi<br />
if [ -n "$RSYNC_PORT" ]; then<br />
FROMRSYNC="ssh -p $RSYNC_PORT -l $SSH_USER"<br />
else<br />
FROMRSYNC="ssh -l $SSH_USER"<br />
fi<br />
REMOTEIP="$SSH_FROM"<br />
# Wenn Verbindung VON entfernten Server... (FROMSSH)<br />
elif [ -z "$SSH_FROM" ] && [ -n "$SSH_TO" ]; then<br />
if [ -n "$SSH_PORT" ]; then<br />
TOSSH="ssh -p $SSH_PORT $SSH_USER@$SSH_TO"<br />
SCP="scp -P $SSH_PORT"<br />
else<br />
TOSSH="ssh $SSH_USER@$SSH_TO"<br />
SCP="scp"<br />
fi<br />
if [ -n "$RSYNC_PORT" ]; then<br />
TORSYNC="ssh -p $RSYNC_PORT -l $SSH_USER"<br />
else<br />
TORSYNC="ssh -l $SSH_USER"<br />
fi<br />
REMOTEIP="$SSH_TO"<br />
# Wenn Verbindung lokal...<br />
elif [ -z "$SSH_FROM" ] && [ -z "$SSH_TO" ]; then<br />
FIND="find"<br />
SOURCE_TEST="test"<br />
TARGET_TEST="test"<br />
if [ $HOSTNAME -eq 1 ]; then<br />
NAME="$LOKALHOST"<br />
fi<br />
fi<br />
<br />
# DSM-Benachrichtigung: Script wird ausgeführt...<br />
#-------------------------------------------------------------------------<br />
synodsmnotify @administrators "Script: $SCRIPTNAME" "Wird ausgeführt.."<br />
<br />
# Speicherort des Logfiles festlegen<br />
#-------------------------------------------------------------------------<br />
mkdir -p `dirname $0`/@Logfiles<br />
LOG="`dirname $0`/@Logfiles/"$DATE"_$SCRIPTNAME.log"<br />
if test ! -d `dirname $0`/@Logfiles; then<br />
DSMNOTIFY="Es konnte kein @Logfiles Ordner erstellt werden!"<br />
fi<br />
if [ $SIGNAL -eq 1 ]; then<br />
echo 3 >/dev/ttyS1; echo : >/dev/ttyS1<br />
sleep 2<br />
fi<br />
<br />
# Ordner/Datei für das Protokoll anlegen und Kopfdaten generieren<br />
#-------------------------------------------------------------------------<br />
# E-Mail-Kopf aufbauen...<br />
if [ -n "$EMAIL" ]; then<br />
echo "To: $EMAIL" > $LOG<br />
echo "From: $EMAIL" >> $LOG<br />
echo "Subject: Sicherungsprotokoll vom $TIMESTAMP Uhr" >> $LOG<br />
echo "" >> $LOG<br />
echo "Ausgefuehrtes RSync-Script: $SCRIPTFILE" >> $LOG<br />
echo "" >> $LOG; echo "$HR" >> $LOG<br />
# Protokoll-Kopf aufbauen...<br />
else<br />
echo "Sicherungsprotokoll vom $TIMESTAMP Uhr" >> $LOG<br />
echo "" >> $LOG<br />
echo "Ausgefuehrtes RSync-Script: $SCRIPTFILE" >> $LOG<br />
echo "" >> $LOG; echo "$HR" >> $LOG<br />
fi<br />
<br />
# Fehlererkennung<br />
#-------------------------------------------------------------------------<br />
if [ -z "$TARGET" ] && [ "$NOTTOSCRIPT" -eq 1 ]; then<br />
STOP="Bitte TARGET setzen oder NOTTOSCRIPT nicht setzen..." >> $LOG<br />
fi<br />
if [ -z "$STOP" ] && [ -n "$SSH_FROM" ] && [ -n "$SSH_TO" ]; then<br />
STOP="Bitte nur SSH_FROM oder SSH_TO setzen!" >> $LOG<br />
fi<br />
if [ -z "$STOP" ] && [ -n "$SSH_TO" ] && [ -z "$TARGET" ]; then<br />
STOP="Bei SSH_TO muss TARGET angegeben werden!"<br />
fi<br />
if [ -z "$STOP" ] && [ "$NOTTOSCRIPT" -eq 1 ] && [ -z "$TARGET" ]; then<br />
STOP="Bei NOTTOSCRIPT=1 muss TARGET angegeben werden!"<br />
fi<br />
if [ -z "$STOP" ] && [ $FROMTHISDEVICE -eq 1 ] && [ -n "$SSH_FROM" ]; then<br />
STOP="Nur FROMTHISDEVICE setzen oder SSH_FROM !"<br />
fi<br />
# Ping Test<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ]; then<br />
if [ -n "$SSH_FROM" ] || [ -n "$SSH_TO" ]; then<br />
ping $REMOTEIP -c 2<br />
ONLINE="$?"<br />
if [ $ONLINE -eq 0 ]; then<br />
echo "Remoteserver $REMOTEIP ist online." >> $LOG<br />
else<br />
if [ -z "$MAC" ]; then<br />
STOP="Remoteserver $REMOTEIP ist offline!" >> $LOG<br />
else<br />
echo "Remoteserver $REMOTEIP ist offline!" >> $LOG<br />
fi<br />
fi<br />
if [ -z "$SSH_USER" ]; then<br />
STOP="Bei der Netzwerksicherung bitte SSH_USER angeben." >> $LOG<br />
fi<br />
fi<br />
fi<br />
<br />
# WOL<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ] && [ -n "$MAC" ] && [ $ONLINE -eq 1 ]; then<br />
echo "Remoteserver $REMOTEIP wird geweckt." >> $LOG<br />
if test -f /usr/bin/ether-wake; then<br />
/usr/bin/ether-wake $MAC<br />
elif test -f /usr/syno/sbin/synonet; then<br />
/usr/syno/sbin/synonet --wake $MAC eth0<br />
fi<br />
sleep $SLEEP<br />
ping $REMOTEIP -c 2<br />
ONLINE="$?"<br />
if [ $ONLINE -eq 0 ]; then<br />
echo "Remoteserver $REMOTEIP wurde hochgefahren." >> $LOG<br />
else<br />
if [ -z "$STOP" ]; then<br />
STOP="Remoteserver $REMOTEIP konnte nicht hochgefahren werden." >> $LOG<br />
fi<br />
fi<br />
fi<br />
<br />
# Verbindungstest (SSH_FROM)<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ] && [ -n "$SSH_FROM" ] && [ -z "$SSH_TO" ]; then<br />
if [ ! "$FROMSSH" ]; then<br />
STOP="Es konnte keine SSH-Verbindung zu $SSH_FROM aufgebaut werden." >> $LOG<br />
elif [ "$FROMSSH" ]; then<br />
REMOTEHOST=$($FROMSSH "echo \`hostname\`")<br />
echo "SSH-Verbindung zu $REMOTEHOST aufgebaut." >> $LOG<br />
SYNOSHARE_SOURCE="$FROMSSH"<br />
FIND="$FROMSSH find"<br />
SOURCE_TEST="$FROMSSH test"<br />
TARGET_TEST="test"<br />
if [ $HOSTNAME -eq 1 ]; then<br />
NAME="$REMOTEHOST"<br />
fi<br />
fi<br />
fi<br />
<br />
# Verbindungstest (SSH_TO)<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ] && [ -z "$SSH_FROM" ] && [ -n "$SSH_TO" ]; then<br />
if [ ! "$TOSSH" ]; then<br />
STOP="Es konnte keine SSH-Verbindung zu $SSH_TO aufgebaut werden." >> $LOG<br />
elif [ "$TOSSH" ]; then<br />
REMOTEHOST=$($TOSSH "echo \`hostname\`")<br />
echo "SSH-Verbindung zu $REMOTEHOST aufgebaut." >> $LOG<br />
SYNOSHARE_TARGET="$TOSSH"<br />
FIND="$TOSSH find"<br />
SOURCE_TEST="test"<br />
TARGET_TEST="$TOSSH test"<br />
if [ $HOSTNAME -eq 1 ]; then<br />
NAME="$LOKALHOST"<br />
fi<br />
fi<br />
fi<br />
<br />
# Verbindungstest ob Quelle bzw. Ziel eine Diskstation ist oder nicht<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ] && [ -n "$SSH_FROM" ] || [ -n "$SSH_TO" ]; then<br />
if $SOURCE_TEST -d /usr/syno/synoman; then<br />
SOURCE_PATH="/volume*"<br />
SOURCEDS="1"<br />
echo "Quellserver ist eine DS" >> $LOG<br />
elif $SOURCE_TEST ! -d /usr/syno/synoman; then<br />
SOURCEDS="0"<br />
echo "Quellserver ist keine DS" >> $LOG<br />
fi<br />
<br />
if $TARGET_TEST -d /usr/syno/synoman; then<br />
TARGET_PATH="/volume*"<br />
TARGETDS="1"<br />
echo "Zielserver ist eine DS" >> $LOG<br />
elif $TARGET_TEST ! -d /usr/syno/synoman; then<br />
TARGETDS="0"<br />
echo "Zielserver ist keine DS" >> $LOG<br />
fi<br />
<br />
elif [ -z "$STOP" ]; then<br />
SOURCE_PATH="/volume*"<br />
TARGET_PATH="/volume*"<br />
SOURCEDS="1"<br />
TARGETDS="1"<br />
fi<br />
<br />
if [ $FROMTHISDEVICE -eq 1 ]; then<br />
SOURCE_PATH="/volume*/*share"<br />
fi<br />
<br />
# Zielordner checken<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ]; then<br />
IFS="<br />
"<br />
TARGET_ESCAPE=$(echo $TARGET | sed -e 's/ /\\ /g')<br />
TARGET_DECRYPT_ESCAPE=$(echo $TARGET_DECRYPT | sed -e 's/ /\\ /g')<br />
IFS="$BACKIFS"<br />
if [ -n "$SSH_TO" ]; then<br />
DEST_DECRYPT="$TARGET_DECRYPT_ESCAPE"<br />
else<br />
DEST_DECRYPT="$TARGET_DECRYPT"<br />
fi<br />
if [ "$NOTTOSCRIPT" -eq 1 ] || [ -n "$SSH_TO" ]; then<br />
if $TARGET_TEST ! -d $TARGET_PATH/@"$DEST_DECRYPT"@ && $TARGET_TEST -d $TARGET_PATH/"$DEST_DECRYPT"; then<br />
echo "Zielordner $TARGET_DECRYPT wurde lokalisiert..." >> $LOG<br />
elif $TARGET_TEST -d $TARGET_PATH/@"$DEST_DECRYPT"@ && $TARGET_TEST -d $TARGET_PATH/"$DEST_DECRYPT"; then<br />
echo "Verschluesselter Zielordner $TARGET_DECRYPT bereits eingehangen..." >> $LOG<br />
elif $TARGET_TEST -d $TARGET_PATH/@"$DEST_DECRYPT"@ && $TARGET_TEST ! -d $TARGET_PATH/"$DEST_DECRYPT"; then<br />
echo "Verschluesselter Zielordner $TARGET_DECRYPT nicht eingehangen..." >> $LOG<br />
# Anhand des Key-Files versuchen einen verschluesselten Zielordner einbinden<br />
if test -f `dirname $0`/"$TARGET_DECRYPT".key; then<br />
echo "$TARGET_DECRYPT.key gefunden" >> $LOG<br />
echo "Verschluesselter Zielordner $TARGET_DECRYPT wird eingehangen..." >> $LOG<br />
KEYFILEDEST=$(ecryptfs-unwrap-passphrase `dirname $0`/"$TARGET_DECRYPT".key "\$1\$5YN01o9y")<br />
$SYNOSHARE_TARGET /usr/syno/sbin/synoshare --enc_mount "$DEST_DECRYPT" "$KEYFILEDEST" >> $LOG<br />
sleep 20<br />
if $TARGET_TEST -d $TARGET_PATH/@"$DEST_DECRYPT"@ && $TARGET_TEST -d $TARGET_PATH/"$DEST_DECRYPT"; then<br />
echo "Verschluesselter Zielordner $TARGET_DECRYPT wurde eingehangen..." >> $LOG<br />
elif $TARGET_TEST -d $TARGET_PATH/@"$DEST_DECRYPT"@ && $TARGET_TEST ! -d $TARGET_PATH/"$DEST_DECRYPT"; then<br />
echo "Verschluesselter Zielordner $TARGET_DECRYPT konnte nicht eingehangen werden..." >> $LOG<br />
fi<br />
else<br />
echo "Kein Keyfile fuer $TARGET_DECRYPT gefunden! Verschluesselte Ordner muessen eingehangen werden!"<br />
fi<br />
fi<br />
if $TARGET_TEST ! -d $TARGET_PATH/"$DEST_DECRYPT"; then<br />
if [ -z "$STOP" ]; then<br />
STOP="Zielordner /$TARGET_DECRYPT nicht gefunden!"<br />
fi<br />
fi<br />
fi<br />
fi<br />
<br />
# Quellordner checken<br />
#-------------------------------------------------------------------------<br />
IFS="<br />
"<br />
for SHARE in $SOURCES; do<br />
if [[ ${SHARE:0:1} != \/ ]] ; then<br />
SHARE="/$SHARE"<br />
fi<br />
SHARE_ESCAPE=$(echo $SHARE | sed -e 's/ /\\ /g')<br />
SHARE_CUT="${SHARE#*/}"<br />
SHARE_DECRYPT="${SHARE_CUT%%/*}"<br />
SHARE_DECRYPT_ESCAPE=$(echo $SHARE_DECRYPT | sed -e 's/ /\\ /g')<br />
IFS="$BACKIFS"<br />
if [ -n "$SSH_FROM" ]; then<br />
SOURCE_DECRYPT="$SHARE_DECRYPT_ESCAPE"<br />
else<br />
SOURCE_DECRYPT="$SHARE_DECRYPT"<br />
fi<br />
if $SOURCE_TEST ! -d $SOURCE_PATH/@"$SOURCE_DECRYPT"@ && $SOURCE_TEST -d $SOURCE_PATH/"$SOURCE_DECRYPT"; then<br />
echo "Quellordner $SHARE_DECRYPT wurde lokalisiert..." >> $LOG<br />
elif $SOURCE_TEST -d $SOURCE_PATH/@"$SOURCE_DECRYPT"@ && $SOURCE_TEST -d $SOURCE_PATH/"$SOURCE_DECRYPT"; then<br />
echo "Verschluesselter Quellordner $SHARE_DECRYPT bereits eingehangen..." >> $LOG<br />
elif $SOURCE_TEST -d $SOURCE_PATH/@"$SOURCE_DECRYPT"@ && $SOURCE_TEST ! -d $SOURCE_PATH/"$SOURCE_DECRYPT"; then<br />
echo "Verschluesselter Quellordner $SHARE_DECRYPT nicht eingehangen..." >> $LOG<br />
# Anhand des Key-Files versuchen einen verschluesselten Quellordner einbinden<br />
if test -f `dirname $0`/"$SHARE_DECRYPT".key; then<br />
echo "$SHARE_DECRYPT.key gefunden" >> $LOG<br />
echo "Verschluesselter Quellordner $SHARE_DECRYPT wird eingehangen..." >> $LOG<br />
KEYFILESHARE=$(ecryptfs-unwrap-passphrase `dirname $0`/"$SHARE_DECRYPT".key "\$1\$5YN01o9y")<br />
$SYNOSHARE_SOURCE /usr/syno/sbin/synoshare --enc_mount "$SHARE_DECRYPT" "$KEYFILESHARE" >> $LOG<br />
sleep 20<br />
if $SOURCE_TEST -d $SOURCE_PATH/@"$SOURCE_DECRYPT"@ && $SOURCE_TEST -d $SOURCE_PATH/"$SOURCE_DECRYPT"; then<br />
echo "Verschluesselter Quellordner $SHARE_DECRYPT wurde eingehangen..." >> $LOG<br />
elif $SOURCE_TEST -d $SOURCE_PATH/@"$SOURCE_DECRYPT"@ && $SOURCE_TEST ! -d $SOURCE_PATH/"$SOURCE_DECRYPT"; then<br />
echo "Verschluesselter Quellordner $SHARE_DECRYPT konnte nicht eingehangen werden..." >> $LOG<br />
fi<br />
else<br />
STOP="Kein Keyfile fuer $SHARE_DECRYPT gefunden! Verschluesselte Ordner muessen eingehangen werden! Datensicherung ABGEBROCHEN..."<br />
fi<br />
fi<br />
done<br />
<br />
# Ziel definieren<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ]; then<br />
if [ -n "$SSH_TO" ] && [ -n "$TARGET" ]; then<br />
DEST_FULL=$($TOSSH "echo $TARGET_PATH/$TARGET_DECRYPT_ESCAPE")<br />
DEST_CUT="${DEST_FULL#*/}"<br />
DEST_VOL="${DEST_CUT%%/*}"<br />
if [ $TARGETDS -eq 1 ]; then<br />
DESTTARGET="/$DEST_VOL$TARGET_ESCAPE"<br />
else<br />
DESTTARGET="$TARGET_ESCAPE"<br />
fi<br />
if [ $HOSTNAME -eq 1 ]; then<br />
DESTINATION="$DESTTARGET/$NAME"<br />
else<br />
DESTINATION="$DESTTARGET"<br />
fi<br />
elif [ -z "$SSH_TO" ] && [ "$NOTTOSCRIPT" -eq 0 ] && [ -z "$TARGET" ]; then<br />
if [ $HOSTNAME -eq 1 ]; then<br />
DESTINATION="`dirname $0`$TARGET_EMPTY/$NAME"<br />
else<br />
DESTINATION="`dirname $0`$TARGET_EMPTY"<br />
fi<br />
elif [ -z "$SSH_TO" ] && [ "$NOTTOSCRIPT" -eq 1 ] && [ -n "$TARGET" ]; then<br />
DEST_FULL=$(echo $TARGET_PATH/"$TARGET_DECRYPT")<br />
DEST_CUT="${DEST_FULL#*/}"<br />
DEST_VOL="${DEST_CUT%%/*}"<br />
if [ -n "$TARGETDS" ]; then<br />
DESTTARGET="/$DEST_VOL$TARGET"<br />
else<br />
DESTTARGET="$TARGET"<br />
fi<br />
if [ $HOSTNAME -eq 1 ]; then<br />
DESTINATION="$DESTTARGET/$NAME"<br />
else<br />
DESTINATION="$DESTTARGET"<br />
fi<br />
elif [ -z "$SSH_TO" ] && [ "$NOTTOSCRIPT" -eq 0 ]; then<br />
if [ $HOSTNAME -eq 1 ]; then<br />
DESTINATION="`dirname $0`$TARGET/$NAME"<br />
else<br />
DESTINATION="`dirname $0`$TARGET"<br />
fi<br />
fi<br />
mkdir -p "$DESTINATION"<br />
if [ -n "$SSH_TO" ] && [ "$NOTTOSCRIPT" -eq 0 ]; then<br />
STOP="Bei SSH_TO muss NOTTOSCRIPT gesetzt werden!" >> $LOG<br />
elif [ -n "$SSH_TO" ] && [ "$NOTTOSCRIPT" -eq 1 ] && [ -n "$TARGET" ]; then<br />
if $TARGET_TEST -d $TARGET_PATH/$TARGET_DECRYPT_ESCAPE; then<br />
$TOSSH mkdir -p "$DESTINATION"<br />
fi<br />
fi<br />
fi<br />
<br />
# Check ob Zielordner erstellt wurde bzw. vorhanden war.<br />
if $TARGET_TEST ! -d "$DESTINATION"; then<br />
if [ -z "$STOP" ]; then<br />
STOP="Zielordner $TARGET konnte nicht erstellt werden bzw. ist nicht vorhanden !"<br />
fi<br />
fi<br />
<br />
echo "" >> $LOG<br />
echo "$HR" >> $LOG<br />
echo "" >> $LOG<br />
# Beginn der RSync-Datensicherung<br />
#--------------------------------------------------------------------------<br />
IFS="<br />
"<br />
for SHARE in $SOURCES; do<br />
if [ -z "$STOP" ]; then<br />
echo "" >> $LOG<br />
if [[ ${SHARE:0:1} != \/ ]] ; then<br />
SHARE="/$SHARE"<br />
fi<br />
SHARE_ESCAPE=$(echo $SHARE | sed -e 's/ /\\ /g')<br />
SHARE_CUT="${SHARE#*/}"<br />
SHARE_DECRYPT="${SHARE_CUT%%/*}"<br />
IFS="$BACKIFS"<br />
unset FORERROR<br />
if [ -n "$SSH_FROM" ]; then<br />
SOURCE="$SHARE_ESCAPE"<br />
else<br />
SOURCE="$SHARE"<br />
fi<br />
<br />
if $SOURCE_TEST ! -d $SOURCE_PATH"$SOURCE"; then<br />
ERROR="Quellordner $SHARE nicht erreichbar..." >> $LOG<br />
FORERROR="1"<br />
elif $SOURCE_TEST -d $SOURCE_PATH"$SOURCE"; then<br />
echo "Quellordner $SHARE erreichbar." >> $LOG<br />
fi<br />
if [ $FROMTHISDEVICE -eq 1 ] && [ -z "$SSH_FROM" ]; then<br />
SOURCE="`dirname $0`$SHARE"<br />
elif [ $FROMTHISDEVICE -eq 0 ] && [ -z "$SSH_FROM" ]; then<br />
SOURCE="$SHARE"<br />
fi<br />
<br />
if [ -z "$STOP" ] && [ -z "$FORERROR" ]; then<br />
# SSH-SSH_FROM RSync-Datensicherung VON einer entfernten DS oder komp. Server<br />
#--------------------------------------------------------------------------<br />
if [ -n "$SSH_FROM" ] && [ -z "$SSH_TO" ] && [ -n "$DESTINATION" ]; then<br />
echo "$HR" >> $LOG<br />
echo "Starte Datensicherung: $REMOTEHOST$SHARE nach $DESTINATION" >> $LOG<br />
echo "$HR" >> $LOG<br />
if [ $SOURCEDS -eq 1 ]; then<br />
rsync -e "$FROMRSYNC" $SYNCOPT $SSH_FROM:/volume*"$SOURCE" $LOGSTAT $EXCLUDE $RECYCLE "$DESTINATION" >> $LOG<br />
RSYNC_EXIT="$?"<br />
elif [ $SOURCEDS -ne 1 ]; then<br />
rsync -e "$FROMRSYNC" $SYNCOPT $SSH_FROM:"$SOURCE" $LOGSTAT $EXCLUDE $RECYCLE "$DESTINATION" >> $LOG<br />
RSYNC_EXIT="$?"<br />
fi<br />
# SSH-SSH_TO RSync-Datensicherung AUF eine entfernte DS oder komp. Server<br />
#--------------------------------------------------------------------------<br />
elif [ -n "$SSH_TO" ] && [ -z "$SSH_FROM" ] && [ -n "$DESTINATION" ]; then<br />
echo "$HR" >> $LOG<br />
echo "Starte Datensicherung: $LOKALHOST$SHARE nach $DESTINATION" >> $LOG<br />
echo "$HR" >> $LOG<br />
if [ $SOURCEDS -eq 1 ] && [ $FROMTHISDEVICE -ne 1 ]; then<br />
rsync -e "$TORSYNC" $SYNCOPT /volume*"$SOURCE" $LOGSTAT $EXCLUDE $RECYCLE $SSH_TO:"$DESTINATION" >> $LOG<br />
RSYNC_EXIT="$?"<br />
elif [ $SOURCEDS -ne 1 ] || [ $FROMTHISDEVICE -eq 1 ]; then<br />
rsync -e "$TORSYNC" $SYNCOPT "$SOURCE" $LOGSTAT $EXCLUDE $RECYCLE $SSH_TO:"$DESTINATION" >> $LOG<br />
RSYNC_EXIT="$?"<br />
fi<br />
# RSync- Lokale Datensicherung auf Volume, USB- oder SATA-Datentr�ger<br />
#-------------------------------------------------------------------------<br />
elif [ -z "$SSH_TO" ] && [ -z "$SSH_FROM" ] && [ -n "$DESTINATION" ]; then<br />
echo "$HR" >> $LOG<br />
echo "Starte Datensicherung: $REMOTEHOST$SHARE nach $DESTINATION" >> $LOG<br />
echo "$HR" >> $LOG<br />
if [ $SOURCEDS -eq 1 ] && [ $FROMTHISDEVICE -ne 1 ]; then<br />
rsync $SYNCOPT /volume*"$SOURCE" $LOGSTAT $EXCLUDE $RECYCLE "$DESTINATION" >> $LOG<br />
RSYNC_EXIT="$?"<br />
elif [ $SOURCEDS -ne 1 ] || [ $FROMTHISDEVICE -eq 1 ]; then<br />
rsync $SYNCOPT "$SOURCE" $LOGSTAT $EXCLUDE $RECYCLE "$DESTINATION" >> $LOG<br />
RSYNC_EXIT="$?"<br />
fi<br />
fi<br />
echo "" >> $LOG<br />
if [ $RSYNC_EXIT -ne 0 ]; then<br />
RSYNC_CODE="$RSYNC_EXIT"<br />
fi<br />
fi<br />
fi<br />
done<br />
<br />
# RSync Exit-Code = Fehlermeldung<br />
#-------------------------------------------------------------------------<br />
if [ -n "$RSYNC_CODE" ]; then<br />
# Exit-Code: Entfernter Server ausgeschaltet?<br />
if [ $RSYNC_CODE -eq 43 ]; then<br />
echo "RSync-Code $RSYNC_CODE: Entfernte DS oder RSync komp. Server nicht Online? Bitte RSYNC Port kontrollieren!" >> $LOG<br />
# Exit-Code: DSL-Verbindung getrennt?<br />
elif [ $RSYNC_CODE -eq 255 ]; then<br />
echo "RSync-Code $RSYNC_CODE: Bitte Internetverbindung oder RSYNC Port kontrollieren!" >> $LOG<br />
# Exit-Code ausgeben...<br />
elif [ $RSYNC_CODE -ne 0 ]; then<br />
echo "RSync Fehlermeldung (Exit Code): $RSYNC_CODE" >> $LOG<br />
fi<br />
fi<br />
<br />
# RSync Exit-Code = Erfolgreich bzw. Unvollständig<br />
#-------------------------------------------------------------------------<br />
if [ -z "$RSYNC_CODE" ] && [ -z "$STOP" ] && [ -z "$ERROR" ]; then<br />
echo "$HR" >> $LOG<br />
echo "RSync-Datensicherung erfolgreich. Sicherungsziel: $DESTINATION" >> $LOG<br />
if [ -z "$DSMNOTIFY" ]; then<br />
DSMNOTIFY="RSync-Datensicherung erfolgreich. Sicherungsziel: $DESTINATION"<br />
fi<br />
# Signalausgabe - Datensicherung erfolgreich<br />
if [ $SIGNAL -eq 1 ]; then<br />
echo 3 >/dev/ttyS1; echo 8 >/dev/ttyS1<br />
sleep 2<br />
fi<br />
# RSync Exit-Code = Fehlermeldung<br />
elif [ $RSYNC_CODE -ne 0 ] || [ -n "$STOP" ] || [ -n "$ERROR" ]; then<br />
echo "$HR" >> $LOG<br />
echo "RSync-Datensicherung unvollstaendig oder fehlgeschlagen - Sicherungsziel: $DESTINATION" >> $LOG<br />
if [ -z "$DSMNOTIFY" ]; then<br />
DSMNOTIFY="RSync-Datensicherung unvollstaendig oder fehlgeschlagen - Bitte Protokoll prüfen!"<br />
fi<br />
# Signalausgabe - Datensicherung fehlgeschlagen<br />
if [ $SIGNAL -eq 1 ]; then<br />
echo 2 >/dev/ttyS1; sleep 1; echo 2 >/dev/ttyS1; sleep 1; echo 2 >/dev/ttyS1; sleep 1; echo 8 >/dev/ttyS1<br />
fi<br />
fi<br />
echo "$HR" >> $LOG; echo "" >> $LOG<br />
if [ -n "$STOP" ]; then<br />
echo "FEHLER: $STOP" >> $LOG<br />
fi<br />
if [ -n "$ERROR" ]; then<br />
echo "FEHLER: $ERROR" >> $LOG<br />
fi<br />
<br />
# DSM-Systemkonfiguration exportieren<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ] && [ "$DSM_EXPORT" -eq 1 ] && [ -z "$RSYNC_CODE" ]; then<br />
if [ -n "$SSH_FROM" ] && [ -z "$SSH_TO" ] && [ -n "$SOURCEDS" ]; then<br />
$FROMSSH /usr/syno/bin/synoconfbkp export --filepath DSMConfig_TEMP.dss<br />
mkdir -p "$DESTINATION"/@DSMConfig<br />
$SCP -r $SSH_USER@$SSH_FROM:DSMConfig_TEMP.dss "$DESTINATION"/@DSMConfig/DSMConfig_"$DATE"_$REMOTEHOST.dss<br />
$FROMSSH rm -rf DSMConfig_TEMP.dss<br />
echo "Sicherung der DSM-Systemkonfiguration von $REMOTEHOST erfolgreich zu $LOKALHOST kopiert.." >> $LOG<br />
echo "" >> $LOG<br />
elif [ -z "$SSH_FROM" ] && [ -n "$SSH_TO" ]; then<br />
synoconfbkp export --filepath `dirname $0`/@DSMConfig/DSMConfig_"$DATE"_$LOKALHOST.dss<br />
$TOSSH mkdir -p "$DESTINATION"/@DSMConfig<br />
$SCP -r `dirname $0`/@DSMConfig/*.dss $SSH_USER@$SSH_TO:"$DESTINATION"/@DSMConfig/<br />
rm -rf `dirname $0`/@DSMConfig<br />
echo "Sicherung der DSM-Systemkonfiguration von $LOKALHOST erfolgreich zu $REMOTEHOST kopiert.." >> $LOG<br />
echo "" >> $LOG<br />
elif [ -z "$SSH_FROM" ] && [ -z "$SSH_TO" ]; then<br />
mkdir -p "$DESTINATION"/@DSMConfig<br />
synoconfbkp export --filepath "$DESTINATION"/@DSMConfig/DSMConfig_"$DATE"_$LOKALHOST.dss<br />
echo "Lokale Sicherung der DSM-Systemkonfiguration erfolgreich." >> $LOG<br />
echo "" >> $LOG<br />
fi<br />
fi<br />
<br />
# Rotationszyklus für das Löschen von @Recycle, @Logfiles und @DSMConfig<br />
#-------------------------------------------------------------------------<br />
# Dateien im Ordner @Recycle die älter als x Tage sind, löschen.<br />
if [ -z "$STOP" ] && [ -z "$RSYNC_CODE" ]; then<br />
if $TARGET_TEST -d "$DESTINATION"/@Recycle/; then<br />
if [ -z "$STOP" ] && [ -n "$RECYCLE_ROTATE" ] && [ -z "$ERROR" ]; then<br />
$FIND "$DESTINATION"/@Recycle/* -type d -mtime +$RECYCLE_ROTATE -exec rm -rf {} \;<br />
echo "HINWEIS: Daten aus dem Ordner /@Recycle, die mehr als $RECYCLE_ROTATE Tage alt waren, wurden geloescht." >> $LOG<br />
echo "" >> $LOG<br />
fi<br />
fi<br />
# Dateien im Ordner @Logfiles die älter als x Tage sind, löschen.<br />
if $TARGET_TEST -d `dirname $0`/@Logfiles/; then<br />
if [ -z "$STOP" ] && [ -n "$LOGFILES_ROTATE" ] && [ -z "$ERROR" ]; then<br />
find `dirname $0`/@Logfiles -name "*.log" -type f -mtime +$LOGFILES_ROTATE -exec rm {} \;<br />
echo "HINWEIS: Daten aus dem Ordner /@Logfiles, die mehr als $LOGFILES_ROTATE Tage alt waren, wurden geloescht." >> $LOG<br />
echo "" >> $LOG<br />
fi<br />
fi<br />
# Dateien im Ordner @DSMConfig die älter als x Tage sind, löschen.<br />
if $TARGET_TEST -d "$DESTINATION"/@DSMConfig/; then<br />
if [ -z "$STOP" ] && [ -n "$DSMCONFIG_ROTATE" ] && [ -z "$ERROR" ]; then<br />
$FIND "$DESTINATION"/@DSMConfig -name "*.dss" -type f -mtime +$DSMCONFIG_ROTATE -exec rm {} \;<br />
echo "HINWEIS: Daten aus dem Ordner /@DSMConfig, die mehr als $DSMCONFIG_ROTATE Tage alt waren, wurden geloescht." >> $LOG<br />
echo "" >> $LOG<br />
fi<br />
fi<br />
fi<br />
<br />
# Verschlüsselte Shares wieder aushängen..<br />
#-------------------------------------------------------------------------<br />
if [ $UNMOUNT -ne 0 ] && [ -n "$TARGETDS" ]; then<br />
if [ $UNMOUNT -ne 2 ]; then<br />
IFS="<br />
"<br />
TARGET_ESCAPE=$(echo $TARGET | sed -e 's/ /\\ /g')<br />
TARGET_DECRYPT_ESCAPE=$(echo $TARGET_DECRYPT | sed -e 's/ /\\ /g')<br />
IFS="$BACKIFS"<br />
if [ -n "$SSH_TO" ]; then<br />
DEST_DECRYPT="$TARGET_DECRYPT_ESCAPE"<br />
else<br />
DEST_DECRYPT="$TARGET_DECRYPT"<br />
fi<br />
if $TARGET_TEST -d /volume*/@"$DEST_DECRYPT"@ && $TARGET_TEST -d /volume*/"$DEST_DECRYPT"; then<br />
echo "Ziel: $TARGET_DECRYPT wurde ausgehangen" >> $LOG<br />
$SYNOSHARE_TARGET /usr/syno/sbin/synoshare --enc_unmount "$DEST_DECRYPT" >> $LOG<br />
sleep 10<br />
fi<br />
fi<br />
fi<br />
if [ $UNMOUNT -ne 0 ] && [ -n "$SOURCEDS" ]; then<br />
if [ $UNMOUNT -ne 3 ]; then<br />
IFS="<br />
"<br />
for SHARE in $SOURCES; do<br />
SHARE_ESCAPE=$(echo $SHARE | sed -e 's/ /\\ /g')<br />
SHARE_CUT="${SHARE#*/}"<br />
SHARE_DECRYPT="${SHARE_CUT%%/*}"<br />
SHARE_DECRYPT_ESCAPE=$(echo $SHARE_DECRYPT | sed -e 's/ /\\ /g')<br />
IFS="$BACKIFS"<br />
if [ -n "$SSH_FROM" ]; then<br />
SOURCE_DECRYPT="$SHARE_DECRYPT_ESCAPE"<br />
else<br />
SOURCE_DECRYPT="$SHARE_DECRYPT"<br />
fi<br />
if $SOURCE_TEST -d /volume*/@"$SOURCE_DECRYPT"@ && $SOURCE_TEST -d /volume*/"$SOURCE_DECRYPT"; then<br />
echo "Quelle: $SHARE_DECRYPT wurde ausgehangen" >> $LOG<br />
$SYNOSHARE_SOURCE /usr/syno/sbin/synoshare --enc_unmount "$SHARE_DECRYPT" >> $LOG<br />
sleep 10<br />
fi<br />
done<br />
fi<br />
fi<br />
unset KEYFILEPW<br />
<br />
# Entfernten Server herunterfahren<br />
#-------------------------------------------------------------------------<br />
if [ $SHUTDOWN -ne 0 ] && [ -z "$RSYNC_CODE" ] && [ -z "$STOP" ] && [ -z "$ERROR" ]; then<br />
if [ -n "$SSH_FROM" ]; then<br />
$FROMSSH poweroff<br />
echo "Remoteserver $SSH_FROM wird heruntergefahren." >> $LOG<br />
elif [ -n "$SSH_TO" ]; then<br />
$TOSSH poweroff<br />
echo "Remoteserver $SSH_TO wird heruntergefahren." >> $LOG<br />
fi<br />
fi<br />
<br />
# Benachrichtigung an die DSM-Administratorengruppe sowie E-Mail senden<br />
#-------------------------------------------------------------------------<br />
if [ -n "$DSMNOTIFY" ]; then<br />
synodsmnotify @administrators "Script: $SCRIPTNAME" "$DSMNOTIFY"<br />
fi<br />
if [ -n "$EMAIL" ]; then<br />
if [ "$EMAILFAIL" -eq 1 ] && [ -z "$RSYNC_CODE" ] || [ -n "$STOP" ] || [ -n "$ERROR" ]; then<br />
ssmtp $EMAIL < $LOG<br />
elif [ "$EMAILFAIL" -eq 0 ]; then<br />
ssmtp $EMAIL < $LOG<br />
fi<br />
fi<br />
<br />
# Script beenden...<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ] && [ -z "$RSYNC_CODE" ] && [ -z "$ERROR" ] && [ "$AUTORUN" -eq 1 ]; then<br />
exit 100<br />
else<br />
exit $?<br />
fi<br />
<br />
</pre><br />
<br />
=Erstellen eines RSA-Keys für den Aufbau einer SSH-Verbindung=<br />
Es soll eine dateibasierte Datensicherung mittels RSync von Diskstation "A" (Produktivsystem) auf Diskstation "B" (Backupsystem) angelegt werden. Dabei übernimmt das Backupsystem die Aufgabe des Servers, worüber der Verbindungsaufbau und der eigentliche Sicherungsvorgang initiiert wird. Das Produktivsystem übernimmt somit die Aufgabe des Client und muß dem ganzen Vorgang nur zustimmen. Um dies zu ermöglichen muß im Vorfeld ein RSA-Schlüssel auf dem Backupsystem erzeugt und dem Produktivsystem der öffentliche Schlüssel mitgeteilt werden, um so den automatischen Verbindungsaufbau per SSH zu ermöglichen. Nachdem die SSH-Verbindung erfolgreich aufgebaut wurde, wird der eigentliche rsync-Befehl abgesetzt und somit die Datensicherung ausgelöst. Um auch in die Gegenrichtung sichern zu können, muss die RSA-Key Einrichtung dementsprechend gedreht werden, so das am Ende sowohl Diskstation "A" als auch Diskstation "B" Quelle als auch Ziel der Datensicherung darstellen können.<br />
<br />
Im folgenden werden alle Einstellungen für den Benutzer '''root''' getroffen, da nur unter diesem Benutzer die Signalausgabe als auch das Sichern der DSM-Konfiguration funktioniert. Wer hier lieber als "admin" oder vielleicht sogar als eingeschränkter Benutzer "rsync" arbeiten möchte, muss nachfolgend an den entsprechenden Stellen den gewünschten Benutzernamen einsetzen. Das hier verwendete Homeverzeichnis des Benutzer "root" wird im folgenden nur in dessen Kurzform mit ~/ angesprochen, wobei hier immer auf /root verwiesen wird. Alle anderen Benutzerkonten befinden sich im Homeverzeichnis /home/[BENUTZERNAME] bzw. richtigerweise unter /var/services/homes/[BENUTZERNAME].<br />
<br />
(Nachfolgend symbolisiert das Zeichen "$" nur den Zeilenanfang und wird nicht mit geschrieben)<br />
<br />
<br />
'''Hinweis zum Loginvorgang bis DSM 5.2 für den Benutzer "root"'''<br />
<pre><br />
Login als Benutzer "root" mit dem Passwort des DSM-Benutzer "admin"<br />
</pre><br />
<br />
'''Hinweis zum Loginvorgang ab DSM 6 für den Benutzer "root"'''<br />
<pre><br />
Login als Benutzer "admin" mit dem Passwort des DSM-Benutzer "admin"<br />
<br />
"root"-Zugriff erhält man dann über die Eingabe von...<br />
<br />
$ sudo -i<br />
<br />
...und gibt abermals das Password des DSM-Benutzer "admin" ein.<br />
</pre> <br />
<br />
<br />
'''Beginnen wir auf dem Server der "Diskstation B" oder besser gesagt, dem Backupsystem'''<br />
<br />
Auf der Konsole der DS als Benutzer "root" einloggen. <br />
Erstellen des RSA-Schlüssels mit...<br />
<br />
<pre>$ ssh-keygen -t rsa</pre><br />
<br />
Bei der Erstellung wird man nach Speicherort und Passphrase gefragt...<br />
<br />
<pre><br />
Enter file in which to save the key (/root/.ssh/id_rsa):<br />
Enter passphrase (empty for no oassphrase):<br />
Enter same passphrase again:<br />
</pre><br />
<br />
... hier bitte nichts eintragen, sondern einfach nur mit der "Return-Taste" bestätigen. Nach der Ausführung werden im Homeverzeichnis des Benutzer "root" folgende Ordner und Dateien erstellt:<br />
<br />
<pre><br />
~/.ssh<br />
~/.ssh/id_rsa<br />
~/.ssh/id_rsa.pub<br />
</pre><br />
<br />
An dieser Stelle sollte man gleich noch die Ordner- und Dateirechte anpassen.<br />
<br />
<pre>$ chmod 0700 ~/.ssh<br />
$ chmod 0600 ~/.ssh/id_rsa*<br />
</pre><br />
<br />
Den Inhalt der Datei ~/.ssh/id_rsa.pub z.B. mit vi, nano oder dem AdminTool editieren und den Inhalt in die Zwischenablage kopieren.<br />
<br />
<pre>$ nano ~/.ssh/id_rsa.pub</pre><br />
<br />
Wichtig, wie hier im Beispiel gezeigt (RSA-Schlüssel wurde hier gekürzt) ist, das alles in einer Zeile steht...<br />
<br />
<pre>ssh-rsa AAAAB3NzaC1yc2..*gekürzt*...EAAAADAQABA3e root@Backupstation</pre><br />
<br />
'''Weiter gehts auf dem Client der "Diskstation A", also dem Produktivsystem.'''<br />
<br />
Auf der Konsole der DS als Benutzer "root" einloggen. Erstellen eines neuen Ornders<br />
<br />
<pre>$ mkdir ~/.ssh</pre><br />
<br />
Daraufhin wird unter ~/.ssh/ eine neue Datei namens "authorized_keys" erstellt...<br />
<br />
<pre>$ nano ~/.ssh/authorized_keys</pre><br />
<br />
...und der Inhalt aus der Zwischenablage, also der Inhalt aus der ~/.ssh/id_rsa.pub, die auf dem Backupsystem erstellt wurde, in die geöffnete Datei eingefügt. Nach dem Speichern und verlassen des Editors müssen auch hier noch die Ordner- und Dateirechte richtig gesetzt werden.<br />
<br />
<pre><br />
$ chmod 0700 ~/.ssh<br />
$ chmod 0600 ~/.ssh/authorized_keys<br />
</pre><br />
<br />
'''Zurück auf der Konsole der Backupstation.'''<br />
<br />
Als Benutzer "root" auf der DS einloggen und als Erstes die SSH-Verbindung prüfen mit...<br />
<br />
<pre>$ ssh root@IP-DER-DISKSTATION_A -p 22</pre><br />
<br />
Der Verbindungsaufbau möchte vom System nochmal mit "yes" bestätigt werden um anschließend auf der Konsole des Produktivsystemes zu landen. Diese Verbindung kann man durch die Eingabe eines...<br />
<br />
<pre>$ exit</pre><br />
<br />
... wieder beenden. Durch den Verbindungsaufbau wurde nun in der Datei ~/.ssh/known_hosts ein neuer Eintrag hinzugefügt, der die Zugangsdaten zur Diskstation beinhaltet. Kontrollieren kann man das mit...<br />
<br />
<pre>$ nano ~/.ssh/known_hosts</pre><br />
<br />
Nachdem alles gut verlaufen ist, wird die Konsole wieder geschlossen mit...<br />
<br />
<pre>$ exit</pre><br />
<br />
=Release Notes=<br />
<br />
'''Release Notes vom 10.05.2016'''<br />
(Knapp 150 Zeilen Script-Code wurden seit dem letzen Update hinzugefügt.)<br />
* Es wurde eine neue Variable (MAC) geschaffen um entfernte Server per WOL zu starten.<br />
* Es wurde eine neue Variable (SLEEP) geschaffen um dem entfernten Server ein Zeitfenster zum starten zu geben.<br />
* Es wurde eine neue Variable (SHUTDOWN) geschaffen um entfernte Server auszuschalten.<br />
* Anhand der drei grade genannten Variablen können demnach entfernte Server per WOL geweckt, die eigentliche Datensicherung ausgeführt werden um im Anschluss den entfernten Server bei Bedarf wieder auszuschalten. <br />
* Es wurde eine neue Variable (FROMTHISDEVICE) geschaffen um Inhalte eines USB/SATA-Datenräger auf eine Diskstation oder einem entfernten, RSync-kompatiblen Server zu sichern.<br />
* Quellen und Ziel können ab sofort auch Leerzeichen enthalten. <br />
<br />
'''Release Notes vom 01.05.2016'''<br />
* Es wurde eine neue Variable (SSH_PORT) geschaffen um einen abweichenden SSH-Port angeben zu können.<br />
* Es wurde eine neue Variable (RSYNC_PORT) geschaffen um einen abweichenden RSync-Port angeben zu können.<br />
* Es wurde eine neue Variable (EMAILFAIL) geschaffen um nur bei einer Störung per E-Mail benachrichtigt zu werden.<br />
* Alle "schaltbaren" Benutzer-Variablen wurden nach dem Schema "0" = aus / "1" = an umstrukturiert. Ursprünglich wurde der Wert bei Zustand "aus" einfach leer gelassen, also "". <br />
* Kommentare im Benutzer-Eingabebereich des Scripts wurden optimiert.<br />
* Neben der bereits funktionierenden Sicherung von und auf eine weitere Diskstation funktioniert jetzt auch das Sichern von und auf einen RSync-kompatible Server. Das Script erkennt hierbei automatisch ob es sich um eine Diskstation oder einen RSync-kompatiblen Server handelt und passt die Sicherungs-Pfade dementsprechend an. Diskstation arbeiten i.d.R. mit einem /volume[x], RSync-kompatible Server tun das in der Regel nicht.<br />
* Viele weitere Detailverbesserungen, die hier nicht alle aufgeführt werden können. Nur so viel... das Script ist um weitere 100 Zeilen Scipt-Code gewachsen.<br />
<br />
=Externe Links=<br />
*[http://www.synology-forum.de/showthread.html?72786-Projekt-rsync-Alternative-dateibasierte-Datensicherung Forum Post]<br />
*[http://wpkg.org/Rsync_exit_codes rsync Exit Codes]<br />
*[http://www.synology-wiki.de/index.php/LEDs_und_Buttons LEDs und Buttons (zur Signalsteuerung)]</div>Itommeshttps://www.synology-wiki.de/index.php?title=Dateibasierte_RSync-Datensicherung_auf_externen_Datentr%C3%A4ger_oder_RSync_kompatiblen_Server&diff=7137Dateibasierte RSync-Datensicherung auf externen Datenträger oder RSync kompatiblen Server2016-07-24T12:37:37Z<p>Itommes: </p>
<hr />
<div>{| border="0" cellpadding="10" cellspacing="0" width="100%" style="text-align:center"<br />
|-<br />
|style="color:#ff0000; background-color:#ddd;"| Resultierend aus diesem Wiki ist [http://www.synology-forum.de/showthread.html?78115-Ultimate-Backup Ultimate Backup] als eigenständiges SPK enstanden !!! <br />
|}<br />
<br />
<br />
=Einleitung=<br />
<br />
'''Diese Anleitung zur dateibasierten RSync-Datensicherung bietet folgende Möglichkeiten...'''<br />
<br />
* Quelle(n) und/oder Ziel können unverschlüsselt sein<br />
* Quelle(n) und/oder Ziel können verschlüsselt sein<br />
* Quelle(n) und/oder Ziel können Leerzeichen im Ordernamen enthalten <br />
* Sicherung innerhalb eines /volume<br />
* Sicherung zwischen internen /volumes<br />
* Sicherung AUF lokal angeschlossene USB-/SATA-Datenträger sowie eingebundene Remote-Shares (nur unverschlüsselt)<br />
* Sicherung VON lokal angeschlossene USB-/SATA-Datenträger AUF internes /volume oder RSync-kompatiblen Server (auch verschlüsselt möglich)<br />
* Sicherung von einer entfernten DS oder RSync-kompatilben Server<br />
* Sicherung auf eine entfernte DS oder RSync-kompatilben Server<br />
* (weitere Konstellationen sind möglich, wurden jedoch nicht getestet) <br />
<br />
'''Hinweis:''' Die Verschlüsselung beruht hierbei auf der von Synology verwendeten Ordnerverschlüsselung (eCryptfs). Um verschlüsselte gemeinsame Ordner einbinden zu können, wird das Key-File also der Exportschlüssel benötigt. Diesen erhält man über die DSM-Systemsteuerung/Gemeinsame Ordner.<br />
<br />
=Anmerkung=<br />
Bevor ihr anfangt, nehmt bitte noch den Artikel "[[Wichtige Informationen zum Modden der Synology Stations]]" zur Kenntnis. <br />
<br />
Auch wenn dieses Script intensiv auf einwandfreie Funktion hin getestet wurde, so kann eine Fehlfunktion und demzufolge ein möglicher Datenverlust nicht ausgeschlossen werden. Aus diesem Grund solltet ihr das System erstmal mit unwichtigen Testdaten auf Herz und Nieren prüfen und sich mit der Arbeitsweise des Scripts und dessen Funktionen vertraut machen bevor ihr das ganze "produktiv" einsetzt. '''Ihr verwendet dieses Script auf eigene Gefahr.'''<br />
<br />
=Voraussetzungen=<br />
* Umgang mit dem DSM Aufgabenplaner <br />
* Umgang mit einem Editor seiner Wahl (z.B. Notepad++ oder dem DSM Text-Editor)<br />
* Grundkenntnisse im Umgang mit Shell-Scripten<br />
* Umgang mit der Konsole (bei Verwendung des SSH-Zuganges)<br />
* Zum versenden einer E-Mail muss im DSM unter Hauptmenü/Systemsteuerung/Benachrichtigung eine E-Mail Adresse hinterlegt sein.<br />
* Ein externer USB- oder SATA-Datenträger, eine weitere Synology Diskstation oder einen rsync-kompatiblen Server im Netzwerk.<br />
* Optional: autorun für externe Datenträger (Version 1.7)<br />
<br />
=Erläuterungen zur Funktion und Arbeitsweise=<br />
<br />
<pre><br />
Diskstation<br />
| |<br />
| '--> Aufgabenplaner ------------------------------<br />
| | |<br />
| '--> Such-Script -----> USB/SATA-Share ---> Ausführungs-<br />
| | Script<br />
'----------------> USB/SATA-Share --> autorun -------- (Key-Files)<br />
|<br />
.---------------------------'<br />
|<br />
V<br />
.---------- Quelle <--- definiere ---> Ziel----------.<br />
| | | |<br />
V '-- lokale/intern/extern --' V<br />
lokalisiere Quelle(n) lokalisiere Ziel<br />
| | <br />
| Protokoll/E-Mail |<br />
|--> Verschlüsselte | Verschlüsseltes <--|<br />
| Quelle(n) anhand der | Ziel anhand der |<br />
| Key-Files einhängen <--- aushängen ---> Key-Files einhängen |<br />
| | | | |<br />
| V | V |<br />
'--------------------->> !! DATENSICHERUNG !! >>---------------------'<br />
| |<br />
'-- lokale/intern/extern -'<br />
<br />
</pre><br />
<br />
<br />
'''Scriptausführung über den DSM-Aufgabenplaner'''<br />
<br />
Das manuelle oder automatisierte Aufrufen von Such- oder Ausführungs-Script wird komfortabel über den DSM - Aufgabenplaner gesteuert. Das Such-Script hat dabei die Aufgabe, das Ausführungs-Script zu lokalisieren und starten. Es wird jedoch nur bei der Verwendung einer lokalen Datensicherung auf einem angeschlossenen USB-/SATA-Datenträger eingesetzt, da sich hier die Datenträgerbezeichnungen durchaus mal ändern können. Für alle andern Aufgaben wird das Such-Script nicht benötigt weshalb man das Ausführungs-Script auch direkt über den DSM-Aufgabenplaner ansprechen kann, um es manuell oder automatisiert auszuführen. Dabei befindet sich das Ausführungs-Script innerhalb eines "gemeinsamen Ordners" auf der DS, also z.B. dort, wo die interne oder externe Datensicherung später gespeichert werden soll.<br />
<br />
<br />
'''Scriptausführung mittels "autorun"'''<br />
<br />
Eine weitere Möglichkeit der Scriptausführung bietet die Verwendung von "autorun", welches angeschlossene USB-/SATA-Datenträger automatisch erkennt und ein darauf liegendes Script Namens "autorun" ausführt, sollte es im Wurzel- bzw. Hauptverzeichnis des externen Datenträgers lokalisiert werden. Dieses Verhalten machen wir uns zunutze, indem wir entweder den Inhalt unseres Ausführungs-Scriptes per Copy & Paste mit dem des "autorun" Scripts überschreiben, oder wir legen uns eine neue Datei namens "autorun" an bzw. benennen unser Script einfach nach "autorun" um und legen es auf dem externen Datenträger ab. Somit erhält man die Möglichkeit durch einfaches anstecken des USB-Sticks eine lokale, interne oder externe Datensicherung auszuführen. Ein weiterer Vorteil von "autorun" ist der Tatsache geschuldet, das sich evtl. benötigte Key-Files (also der Exportschlüssel) für das Einhängen verschlüsselter gemeinsamer Ordner am Speicherort des Ausführungs-Scripts befinden müssen. Wird der USB-Stick demnach nur für die Zeit der Datensicherung verwendet und ansonsten an einem sicheren Ort aufbewahrt, sind auch die Key-Files für diesen Zeitraum erstmal sicher. <br />
<br />
<br />
'''Arbeitsweise des Ausführungs-Script (start-rsync.sh)'''<br />
<br />
Das Ausführungs-Script führt neben einigen anderen Dingen die eigentliche Datensicherung aus, wobei mittels RSync sämtliche konfigurierte Quellen mit dem Ziel synchronisiert werden. Befindet sich unter den Quellen oder dem Ziel ein oder mehrere verschlüsselte gemeinsame Ordner, so können diese über das sogenanntes Key-File (der Exportschlüssel) automatisch ein- und nach dem Beenden der Datensicherung wieder automatisch ausgehangen werden. Dazu ist es jedoch erforderlich, das sich das Key-File am Speicherort des Ausführungs-Scripts befindet. Das Key-File selber wird einem beim erstellen eines verschlüsselten gemeinsamen Ordners im DSM unter Systemsteuerung/Gemeinsame Ordner zum Download angeboten, man kann sich dieses aber auch nachträglich erstellen lassen. Weiterhin muss der Benutzer im Vorfeld noch einige Parameter innerhalb des Ausführungs-Scripts definieren, dessen Funktionen durch zusätzliche Kommentare näher beschrieben werden.<br />
<br />
Um dem Benutzer ein Feedback über Erfolg und Misserfolg der Datensicherung geben zu können wird ein Systemprotokoll erstellt, welches in einem Ordner Namens /@Logfiles abgelegt wird. Dieser Ordner liegt hierbei immer im Speicherort des Ausführungs-Scriptes. Weiterhin werden gelöschte Daten einer Quelle, im Ziel bei Bedarf in den Ordner /@Recycle verschoben, welcher sich auch im Speicherort der Datensicherung befindet. Ebenso wird hier bei Bedarf ein weiterer Ordner mit dem Namen @/DSMConfig angelegt, worin die Sicherungen der DSM-Systemkonfiguration des Systems aufbewahrt werden, von dem auch die Quellen stammen. Die Inhalte der Ordner /@Logfiles, /@Recycle sowie /@DSMConfig können nach der Angabe einer Individuellen Zeitvorgabe (in Tagen) vom System automatisch gelöscht werden um einen Speicherüberlauf zu verhindern und um die Übersicht zu bewahren.<br />
<br />
Bei der eigentlichen Datensicherung über RSync werden die Ordnerpfade relativ, nach dem jeweiligen Volume (1,2,3,4….) in das entsprechende Unterverzeichnis gespeichert. Systemorder wie z.B. /@eaDIR, /#recycle, /#snapshot und /.DS_Store werden von der Synchronisation ausgeschlossen. Alle ausgeführten Schritte sowie Fehlermeldungen als auch Abbrüche werden protokolliert und teilweise über sogenannte Exit-Codes als Zahlenwert ausgegeben. Diese Exit-Codes geben weitere Auskunft über mögliche Fehlerquellen. Im Anhang unten findet man ein entsprechender Link zur Auswertung. Das Protokoll wird im oben beschriebenen Ordner /@Logfiles abgelegt und kann bei Bedarf auch als E-Mail zugestellt werden. <br />
<br />
Weitere Einstellmöglichkeiten werden innerhalb des Scripts beschrieben und hier nicht weiter ausgeführt.<br />
<br />
=Hinweise zum Erstellen und ausführen der Scripte=<br />
Die hier verwendeten Script-Dateinamen dienen nur der Veranschaulichung und können, unter Beachtung einiger Rahmenbedingungen nach Belieben verändert werden.<br />
Für die Erstellung der Scripte wurde im DSM unter dem Benutzer "admin" der DSM eigene Text-Editor, der evtl. noch über das Paketzentrum installiert werden muss, verwendet. Wichtig ist das im Editor unter "Voreinstellungen" im Reiter "Bearbeiten" als Standardcodierung "Unicode (UTF-8)" ausgewählt wird.<br />
<br />
Nachdem das jeweilige Script aus dem Wiki in die Zwischenablage kopiert und im Text-Editor eingefügt wurde, kann die entsprechende Datei über "Speichern unter..." am gewünschten Ort abgespeichert werden. Scripte die später über den Aufgabenplaner ausgeführt werden, müssen noch die entsprechenden Berechtigungen erhalten um das jeweilige Script "ausführbar" zu machen. Dazu muss man in der FileStation mit einem rechtsklick auf die betreffenden Datei gehen und im Kontextmenü den Menüpunkt "Eigenschaften" auswählen. Dort angekommen wechselt man zum Reiter "Genehmigung" und weiter auf die Schaltfläche "Erweiterte Optionen" um darauffolgend den Punkt "Übernommene Genehmigungen einschließen" auszuwählen. Zum Schluss bestätigt man das Ganze mit der Schaltfläche "OK" (Die Datei sollte jetzt die Berechtigung rwxrw-rw, bzw. 766 haben)<br />
<br />
Nachdem die Privilegien richtig gesetzt wurden, kann das Script unter Hauptmenü/Systemsteuerung in den Aufgabenplaner aufgenommen werden, ohne die Aufgabe jedoch vorerst auszuführen. Dazu wählt man unter DSM 6 "Erstellen" --> "Geplante Aufgabe" --> "Benutzerdefiniertes Script". Im Reiter "Allgemein" kann man unter "Vorgang" einen individuellen Namen für die Aufgabe vergeben und als Benutzer sollte "root" ausgewählt werden. Bei einer Netzwerksicherung über eine SSH-Verbindung muss hier der Benutzer angegeben werden, auf dem der RSA-Key ausgestellt wurde, in unserem Fall (siehe Anleitung unten) ist das der Benutzer "root". (Nur unter dem Benutzer "root" funktioniert die Signaausgabe sowie die Sicherung der DSM-Konfiguration) Die Checkbox "Aktiviert" wird nur benötigt, sollte das Script automatisiert, also Zeitgesteuert gestartet werden. Dazu wäre dann im nächsten Schritt unter dem Reiter der "Zeitplan" zu definieren. Im Reiter "Aufgabeneinstellungen" muss jetzt noch unter dem Punkt "Befehl ausführen" der Pfad zum "Benutzerdefinierten Script" angegeben werden, also z.B. /volume1/ScriptStuff/search-rsync.sh. Nach dem Bestätigen mit "OK" wird die Aufgabe dem Aufgabenplaner hinzugefügt und kann später, falls gewünscht, nach dem Markieren der Aufgabe, über die Schaltfläche "Ausführen" manuell ausgeführt werden.<br />
<br />
=Script 1: Das Such-Script "search-rsync.sh"=<br />
<br />
Da es mehrere Ansätze für die Suche gibt, kann man sich hier [[Dateibasierte RSync-Datensicherung auf externen Datenträger oder RSync kompatiblen Server/Suchscriptvarianten|Weitere Suchscriptvarianten]] anschauen und sich die für sich passenden Möglichkeit auswählen.<br />
<br />
'''search-rsync.sh'''<br />
<pre><br />
#!/bin/sh<br />
<br />
# Zeichenkette für Script-Dateinamen definieren<br />
# ------------------------------------------------------------------------<br />
# Es ist nicht erforderlich, den kompletten Script-Dateinamen anzugeben. |<br />
# Es reicht die Eingabe einer Zeichenkette, die in jedem auszuführenden |<br />
# Script-Dateinamen enthalten sein muss. |<br />
# Beispiele für die Zeichenkette: "local" = local_Backup_Filme.sh |<br />
# local_Filme.sh oder auch Filme_local_sichern.sh |<br />
#-------------------------------------------------------------------------<br />
SCRIPT_STRING="start"<br />
<br />
# ------------------------------------------------------------------------<br />
# Ab hier bitte nichts mehr ändern |<br />
# ------------------------------------------------------------------------<br />
<br />
for SCRIPT in /volume*/*share/*$SCRIPT_STRING*.sh<br />
do<br />
if [ -f $SCRIPT ]; then<br />
sh $SCRIPT<br />
fi<br />
done<br />
</pre><br />
<br />
=Script 2: Das Ausführungs-Script "start-rsync.sh"=<br />
Das Script mit dem beispielhaften Script-Dateinamen "start-rsync.sh", wird entweder auf den entsprechenden externen USB- oder SATA-Datenträger in dessen Wurzelverzeichnis oder aber in einen "gemeinsamen Ordner" auf der Diskstation abgelegt, auf dem die Datensicherung abgelegt werden soll. <br />
<br />
'''start-rsync.sh'''<br />
<pre><br />
#!/bin/sh<br />
<br />
# E-Mail Adresse<br />
# -------------------------------------------------------------------------<br />
# Die E-Mail Adresse muss mit der bereits im DSM unter "Benachrichtigung" |<br />
# hinterlegten E-Mail-Adresse identisch sein. |<br />
# -------------------------------------------------------------------------<br />
EMAIL="" # E-Mail für Zustellung des Sicherungsprotokolls<br />
EMAILFAIL="0" # "0" = Sicherungsprotokoll immer senden<br />
# "1" = Sicherungsprotokoll nur bei Problemen senden<br />
# SSH - Verbindungsdaten<br />
# -------------------------------------------------------------------------<br />
# Werden keine Verbindungsdaten angegeben, wird eine lokale Datensicherung|<br />
# durchgeführt. |<br />
# -------------------------------------------------------------------------<br />
SSH_USER="" # Benutzername<br />
SSH_FROM="" # IP-, Host- oder Domain VON entfernter Quelle AUF lokales Ziel<br />
SSH_TO="" # IP-, Host- oder Domain VON lokaler Quelle AUF entferntes Ziel<br />
SSH_PORT="" # Leer = Port 22 ansonsten gewünschten Port angeben<br />
RSYNC_PORT="" # Alternativer Rsync Port kann hier eingetragen werden<br />
MAC="" # Leer = WOL wird nicht genutzt<br />
SLEEP="300" # Wartezeit in Sekunden bis Remoteserver gebootet ist<br />
# MAC Adresse eintragen = Server wird hochgefahren, wenn dieser ausgeschaltet ist<br />
SHUTDOWN="0" # "0" = Entfernter Server wird nicht heruntergefahren<br />
# "1" = Entfernter Server wird heruntergefahren wenn das Backup erfolgreich war<br />
<br />
# Umgang mit verschlüsselten Ordnern<br />
# ------------------------------------------------------------------------<br />
# Angeben, ob eingehangene verschlüsselte Ordner nach der Datensicherung |<br />
# wieder ausgehangen werden sollen. |<br />
# ------------------------------------------------------------------------<br />
UNMOUNT="0" # "0" = Eingehangene Ordner werden nicht ausgehängt<br />
# "1" = Quelle und Ziel werden ausgehängt<br />
# "2" = Quelle wird ausgehängt<br />
# "3" = Ziel wird ausgehängt<br />
<br />
# Backup - Quellen<br />
# ------------------------------------------------------------------------<br />
# Hier können beliebige, unverschlüsselte sowie verschlüsselte |<br />
# Backup-Quellen einer lokalen oder entfernten DS eingetragen werden. |<br />
# Zu beachten ist, das immer der vollständige Pfad ohne Angabe des |<br />
# entsprechenden Volume anzugeben ist. Weiterhin ist auf die |<br />
# Schreibweise im Beispiel zu achten, pro Zeile je eine Backupquelle. |<br />
# ------------------------------------------------------------------------<br />
SOURCES="/homes/admin<br />
/ordner mit leerzeichen<br />
/verschlüsselter ordner"<br />
<br />
# Backup - Ziel<br />
# ------------------------------------------------------------------------<br />
# Wenn NOTTOSCRIPT="0" |<br />
# - dann entspricht TARGET einem "Unterverzeichnis" am Speicherort des |<br />
# Scripts. Beisp.: volume[x]/share/[TARGET] oder bei einem |<br />
# angeschlossenen USB-Datenträger: volumeUSB[x]/usbshare/[TARGET] |<br />
# - Ist zusätzlich HOSTNAME="1" gesetzt, wird der Netzwerkname dem |<br />
# Speicherort hinzugefügt. Beisp.: volume[x]/Share/[TARGET]/[HOSTNAME]|<br />
# |<br />
# Wenn NOTTOSCRIPT="1" und Ziel ist eine Diskstation |<br />
# - dann entspricht TARGET einem "gemeinsamen Ordner" (Share) am |<br />
# Speicherort des Ziel's. Beisp.: volume[x]/[TARGET] |<br />
# - Ist zusätzlich HOSTNAME="1" gesetzt, wird der Netzwerkname dem |<br />
# Speicherort hinzugefügt. Beisp.: volume[x]/[TARGET]/[HOSTNAME] |<br />
# |<br />
# Wenn NOTTOSCRIPT="1" und Ziel ist ein RSync-kompatibler Server |<br />
# - dann entspricht TARGET einem Ordner (Share) am Speicherort des |<br />
# Ziel's. Beisp.: /[TARGET] |<br />
# - Ist zusätzlich HOSTNAME="1" gesetzt, wird der Netzwerkname dem |<br />
# Speicherort hinzugefügt. Beisp.: /[TARGET]/[HOSTNAME] |<br />
#-------------------------------------------------------------------------<br />
TARGET="/RSync Backup"<br />
<br />
FROMTHISDEVICE="0" # "0" = Quelle ist ein gemeinsamer Ordner<br />
# "1" = Quelle liegt auf externen USB/SATA-Speicher neben Script<br />
NOTTOSCRIPT="0" # "0" = Sicherungsziel liegt beim Script<br />
# "1" = Sicherungsziel liegt im geinsamen Ordner<br />
HOSTNAME="0" # "0" = Sicherungsziel entspricht TARGET<br />
# "1" = Sicherungsziel entspricht TARGET/HOSTNAME<br />
AUTORUN="0" # "0" = autorun wirft USB-Stick nicht aus<br />
# "1" = autorun wirft USB-Stick aus<br />
<br />
# Optische- sowie akustische Signalausgabe<br />
#-------------------------------------------------------------------------<br />
# Start : Status-LED wechselt von grün nach orange. Ein Signalton ertönt|<br />
# Ende : Status-LED wechselt von orange nach grün. Ein Signalton ertönt|<br />
# Fehler : Status-LED wechselt von orange nach grün. 3x Signalton ertönt |<br />
#-------------------------------------------------------------------------<br />
SIGNAL="0" # "0" = Optische- sowie akustische Signalausgabe aus<br />
# "1" = Optische- sowie akustische Signalausgabe an<br />
<br />
# Exportieren der DSM-Systemkonfiguration (.dss)<br />
#-------------------------------------------------------------------------<br />
# Die DSM-Systemkonfigurartion (.dss) wird in den Systemordner |<br />
# /@DSMConfig exportiert. |<br />
#-------------------------------------------------------------------------<br />
DSM_EXPORT="0" # "0" = DSM-Systemkonfiguration wird NICHT exportiert<br />
# "1" = DSM-Systemkonfiguration wird exportiert<br />
<br />
# Rotationszyklus für das Löschen von @Recycle und @Logfiles<br />
#-------------------------------------------------------------------------<br />
# Zeitangabe, wann Ordner bzw. Dateien in den System-Ordnern endgültig |<br />
# gelöscht werden sollen, die älter als x Tage sind. |<br />
# ------------------------------------------------------------------------<br />
RECYCLE_ROTATE="90" # @Recycle-Daten die älter als "x" Tage sind, löschen<br />
LOGFILES_ROTATE="60" # @Logfiles-Daten die älter als "x" Tage sind, löschen<br />
DSMCONFIG_ROTATE="30" # @DSMConfig-Daten die älter als "x" Tage sind, löschen<br />
<br />
# ------------------------------------------------------------------------<br />
# Ab hier bitte nichts mehr ändern, wenn man nicht weiß was man tut !!! |<br />
# ------------------------------------------------------------------------<br />
SCRIPTFILE="${0##*/}"<br />
SCRIPTNAME="${SCRIPTFILE%.*}"<br />
DATE=`date +%Y-%m-%d_%Hh%M`<br />
# RSync Optionen konfigurieren<br />
#-------------------------------------------------------------------------<br />
SYNCOPT="-ahR"<br />
LOGSTAT="--stats"<br />
EXCLUDE="--exclude=@eaDir/*** --exclude=@Logfiles/*** --exclude=#recycle/*** --exclude=#snapshot/*** --exclude=.DS_Store/***"<br />
RECYCLE="--delete --backup --backup-dir=@Recycle/"$DATE"_$SCRIPTNAME"<br />
<br />
# Umgebungsvariablen definieren<br />
#-------------------------------------------------------------------------<br />
BACKIFS="$IFS"<br />
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/syno/bin:/usr/syno/sbin<br />
TARGET_EMPTY="/Backup_DS"<br />
if [[ ${TARGET:0:1} != \/ ]] && [ -n "$TARGET" ]; then<br />
TARGET="/$TARGET"<br />
fi<br />
DEST="${TARGET#*/}"<br />
TARGET_CUT="${TARGET#*/}"<br />
TARGET_DECRYPT="${TARGET_CUT%%/*}"<br />
TIMESTAMP=`date +%d.%m.%Y%t%H:%M:%S`<br />
LOKALHOST="$(hostname)"<br />
HR="------------------------------------------------------------------------------------------------"<br />
<br />
# Variablen je nach Verbindung festlegen<br />
#-------------------------------------------------------------------------<br />
# Wenn Verbindung AUF entfernten Server... (TOSSH)<br />
if [ -n "$SSH_FROM" ] && [ -z "$SSH_TO" ]; then<br />
if [ -n "$SSH_PORT" ]; then<br />
FROMSSH="ssh -p $SSH_PORT $SSH_USER@$SSH_FROM"<br />
SCP="scp -P $SSH_PORT"<br />
else<br />
FROMSSH="ssh $SSH_USER@$SSH_FROM"<br />
SCP="scp"<br />
fi<br />
if [ -n "$RSYNC_PORT" ]; then<br />
FROMRSYNC="ssh -p $RSYNC_PORT -l $SSH_USER"<br />
else<br />
FROMRSYNC="ssh -l $SSH_USER"<br />
fi<br />
REMOTEIP="$SSH_FROM"<br />
# Wenn Verbindung VON entfernten Server... (FROMSSH)<br />
elif [ -z "$SSH_FROM" ] && [ -n "$SSH_TO" ]; then<br />
if [ -n "$SSH_PORT" ]; then<br />
TOSSH="ssh -p $SSH_PORT $SSH_USER@$SSH_TO"<br />
SCP="scp -P $SSH_PORT"<br />
else<br />
TOSSH="ssh $SSH_USER@$SSH_TO"<br />
SCP="scp"<br />
fi<br />
if [ -n "$RSYNC_PORT" ]; then<br />
TORSYNC="ssh -p $RSYNC_PORT -l $SSH_USER"<br />
else<br />
TORSYNC="ssh -l $SSH_USER"<br />
fi<br />
REMOTEIP="$SSH_TO"<br />
# Wenn Verbindung lokal...<br />
elif [ -z "$SSH_FROM" ] && [ -z "$SSH_TO" ]; then<br />
FIND="find"<br />
SOURCE_TEST="test"<br />
TARGET_TEST="test"<br />
if [ $HOSTNAME -eq 1 ]; then<br />
NAME="$LOKALHOST"<br />
fi<br />
fi<br />
<br />
# DSM-Benachrichtigung: Script wird ausgeführt...<br />
#-------------------------------------------------------------------------<br />
synodsmnotify @administrators "Script: $SCRIPTNAME" "Wird ausgeführt.."<br />
<br />
# Speicherort des Logfiles festlegen<br />
#-------------------------------------------------------------------------<br />
mkdir -p `dirname $0`/@Logfiles<br />
LOG="`dirname $0`/@Logfiles/"$DATE"_$SCRIPTNAME.log"<br />
if test ! -d `dirname $0`/@Logfiles; then<br />
DSMNOTIFY="Es konnte kein @Logfiles Ordner erstellt werden!"<br />
fi<br />
if [ $SIGNAL -eq 1 ]; then<br />
echo 3 >/dev/ttyS1; echo : >/dev/ttyS1<br />
sleep 2<br />
fi<br />
<br />
# Ordner/Datei für das Protokoll anlegen und Kopfdaten generieren<br />
#-------------------------------------------------------------------------<br />
# E-Mail-Kopf aufbauen...<br />
if [ -n "$EMAIL" ]; then<br />
echo "To: $EMAIL" > $LOG<br />
echo "From: $EMAIL" >> $LOG<br />
echo "Subject: Sicherungsprotokoll vom $TIMESTAMP Uhr" >> $LOG<br />
echo "" >> $LOG<br />
echo "Ausgefuehrtes RSync-Script: $SCRIPTFILE" >> $LOG<br />
echo "" >> $LOG; echo "$HR" >> $LOG<br />
# Protokoll-Kopf aufbauen...<br />
else<br />
echo "Sicherungsprotokoll vom $TIMESTAMP Uhr" >> $LOG<br />
echo "" >> $LOG<br />
echo "Ausgefuehrtes RSync-Script: $SCRIPTFILE" >> $LOG<br />
echo "" >> $LOG; echo "$HR" >> $LOG<br />
fi<br />
<br />
# Fehlererkennung<br />
#-------------------------------------------------------------------------<br />
if [ -z "$TARGET" ] && [ "$NOTTOSCRIPT" -eq 1 ]; then<br />
STOP="Bitte TARGET setzen oder NOTTOSCRIPT nicht setzen..." >> $LOG<br />
fi<br />
if [ -z "$STOP" ] && [ -n "$SSH_FROM" ] && [ -n "$SSH_TO" ]; then<br />
STOP="Bitte nur SSH_FROM oder SSH_TO setzen!" >> $LOG<br />
fi<br />
if [ -z "$STOP" ] && [ -n "$SSH_TO" ] && [ -z "$TARGET" ]; then<br />
STOP="Bei SSH_TO muss TARGET angegeben werden!"<br />
fi<br />
if [ -z "$STOP" ] && [ "$NOTTOSCRIPT" -eq 1 ] && [ -z "$TARGET" ]; then<br />
STOP="Bei NOTTOSCRIPT=1 muss TARGET angegeben werden!"<br />
fi<br />
if [ -z "$STOP" ] && [ $FROMTHISDEVICE -eq 1 ] && [ -n "$SSH_FROM" ]; then<br />
STOP="Nur FROMTHISDEVICE setzen oder SSH_FROM !"<br />
fi<br />
# Ping Test<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ]; then<br />
if [ -n "$SSH_FROM" ] || [ -n "$SSH_TO" ]; then<br />
ping $REMOTEIP -c 2<br />
ONLINE="$?"<br />
if [ $ONLINE -eq 0 ]; then<br />
echo "Remoteserver $REMOTEIP ist online." >> $LOG<br />
else<br />
if [ -z "$MAC" ]; then<br />
STOP="Remoteserver $REMOTEIP ist offline!" >> $LOG<br />
else<br />
echo "Remoteserver $REMOTEIP ist offline!" >> $LOG<br />
fi<br />
fi<br />
if [ -z "$SSH_USER" ]; then<br />
STOP="Bei der Netzwerksicherung bitte SSH_USER angeben." >> $LOG<br />
fi<br />
fi<br />
fi<br />
<br />
# WOL<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ] && [ -n "$MAC" ] && [ $ONLINE -eq 1 ]; then<br />
echo "Remoteserver $REMOTEIP wird geweckt." >> $LOG<br />
if test -f /usr/bin/ether-wake; then<br />
/usr/bin/ether-wake $MAC<br />
elif test -f /usr/syno/sbin/synonet; then<br />
/usr/syno/sbin/synonet --wake $MAC eth0<br />
fi<br />
sleep $SLEEP<br />
ping $REMOTEIP -c 2<br />
ONLINE="$?"<br />
if [ $ONLINE -eq 0 ]; then<br />
echo "Remoteserver $REMOTEIP wurde hochgefahren." >> $LOG<br />
else<br />
if [ -z "$STOP" ]; then<br />
STOP="Remoteserver $REMOTEIP konnte nicht hochgefahren werden." >> $LOG<br />
fi<br />
fi<br />
fi<br />
<br />
# Verbindungstest (SSH_FROM)<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ] && [ -n "$SSH_FROM" ] && [ -z "$SSH_TO" ]; then<br />
if [ ! "$FROMSSH" ]; then<br />
STOP="Es konnte keine SSH-Verbindung zu $SSH_FROM aufgebaut werden." >> $LOG<br />
elif [ "$FROMSSH" ]; then<br />
REMOTEHOST=$($FROMSSH "echo \`hostname\`")<br />
echo "SSH-Verbindung zu $REMOTEHOST aufgebaut." >> $LOG<br />
SYNOSHARE_SOURCE="$FROMSSH"<br />
FIND="$FROMSSH find"<br />
SOURCE_TEST="$FROMSSH test"<br />
TARGET_TEST="test"<br />
if [ $HOSTNAME -eq 1 ]; then<br />
NAME="$REMOTEHOST"<br />
fi<br />
fi<br />
fi<br />
<br />
# Verbindungstest (SSH_TO)<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ] && [ -z "$SSH_FROM" ] && [ -n "$SSH_TO" ]; then<br />
if [ ! "$TOSSH" ]; then<br />
STOP="Es konnte keine SSH-Verbindung zu $SSH_TO aufgebaut werden." >> $LOG<br />
elif [ "$TOSSH" ]; then<br />
REMOTEHOST=$($TOSSH "echo \`hostname\`")<br />
echo "SSH-Verbindung zu $REMOTEHOST aufgebaut." >> $LOG<br />
SYNOSHARE_TARGET="$TOSSH"<br />
FIND="$TOSSH find"<br />
SOURCE_TEST="test"<br />
TARGET_TEST="$TOSSH test"<br />
if [ $HOSTNAME -eq 1 ]; then<br />
NAME="$LOKALHOST"<br />
fi<br />
fi<br />
fi<br />
<br />
# Verbindungstest ob Quelle bzw. Ziel eine Diskstation ist oder nicht<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ] && [ -n "$SSH_FROM" ] || [ -n "$SSH_TO" ]; then<br />
if $SOURCE_TEST -d /usr/syno/synoman; then<br />
SOURCE_PATH="/volume*"<br />
SOURCEDS="1"<br />
echo "Quellserver ist eine DS" >> $LOG<br />
elif $SOURCE_TEST ! -d /usr/syno/synoman; then<br />
SOURCEDS="0"<br />
echo "Quellserver ist keine DS" >> $LOG<br />
fi<br />
<br />
if $TARGET_TEST -d /usr/syno/synoman; then<br />
TARGET_PATH="/volume*"<br />
TARGETDS="1"<br />
echo "Zielserver ist eine DS" >> $LOG<br />
elif $TARGET_TEST ! -d /usr/syno/synoman; then<br />
TARGETDS="0"<br />
echo "Zielserver ist keine DS" >> $LOG<br />
fi<br />
<br />
elif [ -z "$STOP" ]; then<br />
SOURCE_PATH="/volume*"<br />
TARGET_PATH="/volume*"<br />
SOURCEDS="1"<br />
TARGETDS="1"<br />
fi<br />
<br />
if [ $FROMTHISDEVICE -eq 1 ]; then<br />
SOURCE_PATH="/volume*/*share"<br />
fi<br />
<br />
# Zielordner checken<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ]; then<br />
IFS="<br />
"<br />
TARGET_ESCAPE=$(echo $TARGET | sed -e 's/ /\\ /g')<br />
TARGET_DECRYPT_ESCAPE=$(echo $TARGET_DECRYPT | sed -e 's/ /\\ /g')<br />
IFS="$BACKIFS"<br />
if [ -n "$SSH_TO" ]; then<br />
DEST_DECRYPT="$TARGET_DECRYPT_ESCAPE"<br />
else<br />
DEST_DECRYPT="$TARGET_DECRYPT"<br />
fi<br />
if [ "$NOTTOSCRIPT" -eq 1 ] || [ -n "$SSH_TO" ]; then<br />
if $TARGET_TEST ! -d $TARGET_PATH/@"$DEST_DECRYPT"@ && $TARGET_TEST -d $TARGET_PATH/"$DEST_DECRYPT"; then<br />
echo "Zielordner $TARGET_DECRYPT wurde lokalisiert..." >> $LOG<br />
elif $TARGET_TEST -d $TARGET_PATH/@"$DEST_DECRYPT"@ && $TARGET_TEST -d $TARGET_PATH/"$DEST_DECRYPT"; then<br />
echo "Verschluesselter Zielordner $TARGET_DECRYPT bereits eingehangen..." >> $LOG<br />
elif $TARGET_TEST -d $TARGET_PATH/@"$DEST_DECRYPT"@ && $TARGET_TEST ! -d $TARGET_PATH/"$DEST_DECRYPT"; then<br />
echo "Verschluesselter Zielordner $TARGET_DECRYPT nicht eingehangen..." >> $LOG<br />
# Anhand des Key-Files versuchen einen verschluesselten Zielordner einbinden<br />
if test -f `dirname $0`/"$TARGET_DECRYPT".key; then<br />
echo "$TARGET_DECRYPT.key gefunden" >> $LOG<br />
echo "Verschluesselter Zielordner $TARGET_DECRYPT wird eingehangen..." >> $LOG<br />
KEYFILEDEST=$(ecryptfs-unwrap-passphrase `dirname $0`/"$TARGET_DECRYPT".key "\$1\$5YN01o9y")<br />
$SYNOSHARE_TARGET /usr/syno/sbin/synoshare --enc_mount "$DEST_DECRYPT" "$KEYFILEDEST" >> $LOG<br />
sleep 20<br />
if $TARGET_TEST -d $TARGET_PATH/@"$DEST_DECRYPT"@ && $TARGET_TEST -d $TARGET_PATH/"$DEST_DECRYPT"; then<br />
echo "Verschluesselter Zielordner $TARGET_DECRYPT wurde eingehangen..." >> $LOG<br />
elif $TARGET_TEST -d $TARGET_PATH/@"$DEST_DECRYPT"@ && $TARGET_TEST ! -d $TARGET_PATH/"$DEST_DECRYPT"; then<br />
echo "Verschluesselter Zielordner $TARGET_DECRYPT konnte nicht eingehangen werden..." >> $LOG<br />
fi<br />
else<br />
echo "Kein Keyfile fuer $TARGET_DECRYPT gefunden! Verschluesselte Ordner muessen eingehangen werden!"<br />
fi<br />
fi<br />
if $TARGET_TEST ! -d $TARGET_PATH/"$DEST_DECRYPT"; then<br />
if [ -z "$STOP" ]; then<br />
STOP="Zielordner /$TARGET_DECRYPT nicht gefunden!"<br />
fi<br />
fi<br />
fi<br />
fi<br />
<br />
# Quellordner checken<br />
#-------------------------------------------------------------------------<br />
IFS="<br />
"<br />
for SHARE in $SOURCES; do<br />
if [[ ${SHARE:0:1} != \/ ]] ; then<br />
SHARE="/$SHARE"<br />
fi<br />
SHARE_ESCAPE=$(echo $SHARE | sed -e 's/ /\\ /g')<br />
SHARE_CUT="${SHARE#*/}"<br />
SHARE_DECRYPT="${SHARE_CUT%%/*}"<br />
SHARE_DECRYPT_ESCAPE=$(echo $SHARE_DECRYPT | sed -e 's/ /\\ /g')<br />
IFS="$BACKIFS"<br />
if [ -n "$SSH_FROM" ]; then<br />
SOURCE_DECRYPT="$SHARE_DECRYPT_ESCAPE"<br />
else<br />
SOURCE_DECRYPT="$SHARE_DECRYPT"<br />
fi<br />
if $SOURCE_TEST ! -d $SOURCE_PATH/@"$SOURCE_DECRYPT"@ && $SOURCE_TEST -d $SOURCE_PATH/"$SOURCE_DECRYPT"; then<br />
echo "Quellordner $SHARE_DECRYPT wurde lokalisiert..." >> $LOG<br />
elif $SOURCE_TEST -d $SOURCE_PATH/@"$SOURCE_DECRYPT"@ && $SOURCE_TEST -d $SOURCE_PATH/"$SOURCE_DECRYPT"; then<br />
echo "Verschluesselter Quellordner $SHARE_DECRYPT bereits eingehangen..." >> $LOG<br />
elif $SOURCE_TEST -d $SOURCE_PATH/@"$SOURCE_DECRYPT"@ && $SOURCE_TEST ! -d $SOURCE_PATH/"$SOURCE_DECRYPT"; then<br />
echo "Verschluesselter Quellordner $SHARE_DECRYPT nicht eingehangen..." >> $LOG<br />
# Anhand des Key-Files versuchen einen verschluesselten Quellordner einbinden<br />
if test -f `dirname $0`/"$SHARE_DECRYPT".key; then<br />
echo "$SHARE_DECRYPT.key gefunden" >> $LOG<br />
echo "Verschluesselter Quellordner $SHARE_DECRYPT wird eingehangen..." >> $LOG<br />
KEYFILESHARE=$(ecryptfs-unwrap-passphrase `dirname $0`/"$SHARE_DECRYPT".key "\$1\$5YN01o9y")<br />
$SYNOSHARE_SOURCE /usr/syno/sbin/synoshare --enc_mount "$SHARE_DECRYPT" "$KEYFILESHARE" >> $LOG<br />
sleep 20<br />
if $SOURCE_TEST -d $SOURCE_PATH/@"$SOURCE_DECRYPT"@ && $SOURCE_TEST -d $SOURCE_PATH/"$SOURCE_DECRYPT"; then<br />
echo "Verschluesselter Quellordner $SHARE_DECRYPT wurde eingehangen..." >> $LOG<br />
elif $SOURCE_TEST -d $SOURCE_PATH/@"$SOURCE_DECRYPT"@ && $SOURCE_TEST ! -d $SOURCE_PATH/"$SOURCE_DECRYPT"; then<br />
echo "Verschluesselter Quellordner $SHARE_DECRYPT konnte nicht eingehangen werden..." >> $LOG<br />
fi<br />
else<br />
STOP="Kein Keyfile fuer $SHARE_DECRYPT gefunden! Verschluesselte Ordner muessen eingehangen werden! Datensicherung ABGEBROCHEN..."<br />
fi<br />
fi<br />
done<br />
<br />
# Ziel definieren<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ]; then<br />
if [ -n "$SSH_TO" ] && [ -n "$TARGET" ]; then<br />
DEST_FULL=$($TOSSH "echo $TARGET_PATH/$TARGET_DECRYPT_ESCAPE")<br />
DEST_CUT="${DEST_FULL#*/}"<br />
DEST_VOL="${DEST_CUT%%/*}"<br />
if [ $TARGETDS -eq 1 ]; then<br />
DESTTARGET="/$DEST_VOL$TARGET_ESCAPE"<br />
else<br />
DESTTARGET="$TARGET_ESCAPE"<br />
fi<br />
if [ $HOSTNAME -eq 1 ]; then<br />
DESTINATION="$DESTTARGET/$NAME"<br />
else<br />
DESTINATION="$DESTTARGET"<br />
fi<br />
elif [ -z "$SSH_TO" ] && [ "$NOTTOSCRIPT" -eq 0 ] && [ -z "$TARGET" ]; then<br />
if [ $HOSTNAME -eq 1 ]; then<br />
DESTINATION="`dirname $0`$TARGET_EMPTY/$NAME"<br />
else<br />
DESTINATION="`dirname $0`$TARGET_EMPTY"<br />
fi<br />
elif [ -z "$SSH_TO" ] && [ "$NOTTOSCRIPT" -eq 1 ] && [ -n "$TARGET" ]; then<br />
DEST_FULL=$(echo $TARGET_PATH/"$TARGET_DECRYPT")<br />
DEST_CUT="${DEST_FULL#*/}"<br />
DEST_VOL="${DEST_CUT%%/*}"<br />
if [ -n "$TARGETDS" ]; then<br />
DESTTARGET="/$DEST_VOL$TARGET"<br />
else<br />
DESTTARGET="$TARGET"<br />
fi<br />
if [ $HOSTNAME -eq 1 ]; then<br />
DESTINATION="$DESTTARGET/$NAME"<br />
else<br />
DESTINATION="$DESTTARGET"<br />
fi<br />
elif [ -z "$SSH_TO" ] && [ "$NOTTOSCRIPT" -eq 0 ]; then<br />
if [ $HOSTNAME -eq 1 ]; then<br />
DESTINATION="`dirname $0`$TARGET/$NAME"<br />
else<br />
DESTINATION="`dirname $0`$TARGET"<br />
fi<br />
fi<br />
mkdir -p "$DESTINATION"<br />
if [ -n "$SSH_TO" ] && [ "$NOTTOSCRIPT" -eq 0 ]; then<br />
STOP="Bei SSH_TO muss NOTTOSCRIPT gesetzt werden!" >> $LOG<br />
elif [ -n "$SSH_TO" ] && [ "$NOTTOSCRIPT" -eq 1 ] && [ -n "$TARGET" ]; then<br />
if $TARGET_TEST -d $TARGET_PATH/$TARGET_DECRYPT_ESCAPE; then<br />
$TOSSH mkdir -p "$DESTINATION"<br />
fi<br />
fi<br />
fi<br />
<br />
# Check ob Zielordner erstellt wurde bzw. vorhanden war.<br />
if $TARGET_TEST ! -d "$DESTINATION"; then<br />
if [ -z "$STOP" ]; then<br />
STOP="Zielordner $TARGET konnte nicht erstellt werden bzw. ist nicht vorhanden !"<br />
fi<br />
fi<br />
<br />
echo "" >> $LOG<br />
echo "$HR" >> $LOG<br />
echo "" >> $LOG<br />
# Beginn der RSync-Datensicherung<br />
#--------------------------------------------------------------------------<br />
IFS="<br />
"<br />
for SHARE in $SOURCES; do<br />
if [ -z "$STOP" ]; then<br />
echo "" >> $LOG<br />
if [[ ${SHARE:0:1} != \/ ]] ; then<br />
SHARE="/$SHARE"<br />
fi<br />
SHARE_ESCAPE=$(echo $SHARE | sed -e 's/ /\\ /g')<br />
SHARE_CUT="${SHARE#*/}"<br />
SHARE_DECRYPT="${SHARE_CUT%%/*}"<br />
IFS="$BACKIFS"<br />
unset FORERROR<br />
if [ -n "$SSH_FROM" ]; then<br />
SOURCE="$SHARE_ESCAPE"<br />
else<br />
SOURCE="$SHARE"<br />
fi<br />
<br />
if $SOURCE_TEST ! -d $SOURCE_PATH"$SOURCE"; then<br />
ERROR="Quellordner $SHARE nicht erreichbar..." >> $LOG<br />
FORERROR="1"<br />
elif $SOURCE_TEST -d $SOURCE_PATH"$SOURCE"; then<br />
echo "Quellordner $SHARE erreichbar." >> $LOG<br />
fi<br />
if [ $FROMTHISDEVICE -eq 1 ] && [ -z "$SSH_FROM" ]; then<br />
SOURCE="`dirname $0`$SHARE"<br />
elif [ $FROMTHISDEVICE -eq 0 ] && [ -z "$SSH_FROM" ]; then<br />
SOURCE="$SHARE"<br />
fi<br />
<br />
if [ -z "$STOP" ] && [ -z "$FORERROR" ]; then<br />
# SSH-SSH_FROM RSync-Datensicherung VON einer entfernten DS oder komp. Server<br />
#--------------------------------------------------------------------------<br />
if [ -n "$SSH_FROM" ] && [ -z "$SSH_TO" ] && [ -n "$DESTINATION" ]; then<br />
echo "$HR" >> $LOG<br />
echo "Starte Datensicherung: $REMOTEHOST$SHARE nach $DESTINATION" >> $LOG<br />
echo "$HR" >> $LOG<br />
if [ $SOURCEDS -eq 1 ]; then<br />
rsync -e "$FROMRSYNC" $SYNCOPT $SSH_FROM:/volume*"$SOURCE" $LOGSTAT $EXCLUDE $RECYCLE "$DESTINATION" >> $LOG<br />
RSYNC_EXIT="$?"<br />
elif [ $SOURCEDS -ne 1 ]; then<br />
rsync -e "$FROMRSYNC" $SYNCOPT $SSH_FROM:"$SOURCE" $LOGSTAT $EXCLUDE $RECYCLE "$DESTINATION" >> $LOG<br />
RSYNC_EXIT="$?"<br />
fi<br />
# SSH-SSH_TO RSync-Datensicherung AUF eine entfernte DS oder komp. Server<br />
#--------------------------------------------------------------------------<br />
elif [ -n "$SSH_TO" ] && [ -z "$SSH_FROM" ] && [ -n "$DESTINATION" ]; then<br />
echo "$HR" >> $LOG<br />
echo "Starte Datensicherung: $LOKALHOST$SHARE nach $DESTINATION" >> $LOG<br />
echo "$HR" >> $LOG<br />
if [ $SOURCEDS -eq 1 ] && [ $FROMTHISDEVICE -ne 1 ]; then<br />
rsync -e "$TORSYNC" $SYNCOPT /volume*"$SOURCE" $LOGSTAT $EXCLUDE $RECYCLE $SSH_TO:"$DESTINATION" >> $LOG<br />
RSYNC_EXIT="$?"<br />
elif [ $SOURCEDS -ne 1 ] || [ $FROMTHISDEVICE -eq 1 ]; then<br />
rsync -e "$TORSYNC" $SYNCOPT "$SOURCE" $LOGSTAT $EXCLUDE $RECYCLE $SSH_TO:"$DESTINATION" >> $LOG<br />
RSYNC_EXIT="$?"<br />
fi<br />
# RSync- Lokale Datensicherung auf Volume, USB- oder SATA-Datentr�ger<br />
#-------------------------------------------------------------------------<br />
elif [ -z "$SSH_TO" ] && [ -z "$SSH_FROM" ] && [ -n "$DESTINATION" ]; then<br />
echo "$HR" >> $LOG<br />
echo "Starte Datensicherung: $REMOTEHOST$SHARE nach $DESTINATION" >> $LOG<br />
echo "$HR" >> $LOG<br />
if [ $SOURCEDS -eq 1 ] && [ $FROMTHISDEVICE -ne 1 ]; then<br />
rsync $SYNCOPT /volume*"$SOURCE" $LOGSTAT $EXCLUDE $RECYCLE "$DESTINATION" >> $LOG<br />
RSYNC_EXIT="$?"<br />
elif [ $SOURCEDS -ne 1 ] || [ $FROMTHISDEVICE -eq 1 ]; then<br />
rsync $SYNCOPT "$SOURCE" $LOGSTAT $EXCLUDE $RECYCLE "$DESTINATION" >> $LOG<br />
RSYNC_EXIT="$?"<br />
fi<br />
fi<br />
echo "" >> $LOG<br />
if [ $RSYNC_EXIT -ne 0 ]; then<br />
RSYNC_CODE="$RSYNC_EXIT"<br />
fi<br />
fi<br />
fi<br />
done<br />
<br />
# RSync Exit-Code = Fehlermeldung<br />
#-------------------------------------------------------------------------<br />
if [ -n "$RSYNC_CODE" ]; then<br />
# Exit-Code: Entfernter Server ausgeschaltet?<br />
if [ $RSYNC_CODE -eq 43 ]; then<br />
echo "RSync-Code $RSYNC_CODE: Entfernte DS oder RSync komp. Server nicht Online? Bitte RSYNC Port kontrollieren!" >> $LOG<br />
# Exit-Code: DSL-Verbindung getrennt?<br />
elif [ $RSYNC_CODE -eq 255 ]; then<br />
echo "RSync-Code $RSYNC_CODE: Bitte Internetverbindung oder RSYNC Port kontrollieren!" >> $LOG<br />
# Exit-Code ausgeben...<br />
elif [ $RSYNC_CODE -ne 0 ]; then<br />
echo "RSync Fehlermeldung (Exit Code): $RSYNC_CODE" >> $LOG<br />
fi<br />
fi<br />
<br />
# RSync Exit-Code = Erfolgreich bzw. Unvollständig<br />
#-------------------------------------------------------------------------<br />
if [ -z "$RSYNC_CODE" ] && [ -z "$STOP" ] && [ -z "$ERROR" ]; then<br />
echo "$HR" >> $LOG<br />
echo "RSync-Datensicherung erfolgreich. Sicherungsziel: $DESTINATION" >> $LOG<br />
if [ -z "$DSMNOTIFY" ]; then<br />
DSMNOTIFY="RSync-Datensicherung erfolgreich. Sicherungsziel: $DESTINATION"<br />
fi<br />
# Signalausgabe - Datensicherung erfolgreich<br />
if [ $SIGNAL -eq 1 ]; then<br />
echo 3 >/dev/ttyS1; echo 8 >/dev/ttyS1<br />
sleep 2<br />
fi<br />
# RSync Exit-Code = Fehlermeldung<br />
elif [ $RSYNC_CODE -ne 0 ] || [ -n "$STOP" ] || [ -n "$ERROR" ]; then<br />
echo "$HR" >> $LOG<br />
echo "RSync-Datensicherung unvollstaendig oder fehlgeschlagen - Sicherungsziel: $DESTINATION" >> $LOG<br />
if [ -z "$DSMNOTIFY" ]; then<br />
DSMNOTIFY="RSync-Datensicherung unvollstaendig oder fehlgeschlagen - Bitte Protokoll prüfen!"<br />
fi<br />
# Signalausgabe - Datensicherung fehlgeschlagen<br />
if [ $SIGNAL -eq 1 ]; then<br />
echo 2 >/dev/ttyS1; sleep 1; echo 2 >/dev/ttyS1; sleep 1; echo 2 >/dev/ttyS1; sleep 1; echo 8 >/dev/ttyS1<br />
fi<br />
fi<br />
echo "$HR" >> $LOG; echo "" >> $LOG<br />
if [ -n "$STOP" ]; then<br />
echo "FEHLER: $STOP" >> $LOG<br />
fi<br />
if [ -n "$ERROR" ]; then<br />
echo "FEHLER: $ERROR" >> $LOG<br />
fi<br />
<br />
# DSM-Systemkonfiguration exportieren<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ] && [ "$DSM_EXPORT" -eq 1 ] && [ -z "$RSYNC_CODE" ]; then<br />
if [ -n "$SSH_FROM" ] && [ -z "$SSH_TO" ] && [ -n "$SOURCEDS" ]; then<br />
$FROMSSH /usr/syno/bin/synoconfbkp export --filepath DSMConfig_TEMP.dss<br />
mkdir -p "$DESTINATION"/@DSMConfig<br />
$SCP -r $SSH_USER@$SSH_FROM:DSMConfig_TEMP.dss "$DESTINATION"/@DSMConfig/DSMConfig_"$DATE"_$REMOTEHOST.dss<br />
$FROMSSH rm -rf DSMConfig_TEMP.dss<br />
echo "Sicherung der DSM-Systemkonfiguration von $REMOTEHOST erfolgreich zu $LOKALHOST kopiert.." >> $LOG<br />
echo "" >> $LOG<br />
elif [ -z "$SSH_FROM" ] && [ -n "$SSH_TO" ]; then<br />
synoconfbkp export --filepath `dirname $0`/@DSMConfig/DSMConfig_"$DATE"_$LOKALHOST.dss<br />
$TOSSH mkdir -p "$DESTINATION"/@DSMConfig<br />
$SCP -r `dirname $0`/@DSMConfig/*.dss $SSH_USER@$SSH_TO:"$DESTINATION"/@DSMConfig/<br />
rm -rf `dirname $0`/@DSMConfig<br />
echo "Sicherung der DSM-Systemkonfiguration von $LOKALHOST erfolgreich zu $REMOTEHOST kopiert.." >> $LOG<br />
echo "" >> $LOG<br />
elif [ -z "$SSH_FROM" ] && [ -z "$SSH_TO" ]; then<br />
mkdir -p "$DESTINATION"/@DSMConfig<br />
synoconfbkp export --filepath "$DESTINATION"/@DSMConfig/DSMConfig_"$DATE"_$LOKALHOST.dss<br />
echo "Lokale Sicherung der DSM-Systemkonfiguration erfolgreich." >> $LOG<br />
echo "" >> $LOG<br />
fi<br />
fi<br />
<br />
# Rotationszyklus für das Löschen von @Recycle, @Logfiles und @DSMConfig<br />
#-------------------------------------------------------------------------<br />
# Dateien im Ordner @Recycle die älter als x Tage sind, löschen.<br />
if [ -z "$STOP" ] && [ -z "$RSYNC_CODE" ]; then<br />
if $TARGET_TEST -d "$DESTINATION"/@Recycle/; then<br />
if [ -z "$STOP" ] && [ -n "$RECYCLE_ROTATE" ] && [ -z "$ERROR" ]; then<br />
$FIND "$DESTINATION"/@Recycle/* -type d -mtime +$RECYCLE_ROTATE -exec rm -rf {} \;<br />
echo "HINWEIS: Daten aus dem Ordner /@Recycle, die mehr als $RECYCLE_ROTATE Tage alt waren, wurden geloescht." >> $LOG<br />
echo "" >> $LOG<br />
fi<br />
fi<br />
# Dateien im Ordner @Logfiles die älter als x Tage sind, löschen.<br />
if $TARGET_TEST -d `dirname $0`/@Logfiles/; then<br />
if [ -z "$STOP" ] && [ -n "$LOGFILES_ROTATE" ] && [ -z "$ERROR" ]; then<br />
find `dirname $0`/@Logfiles -name "*.log" -type f -mtime +$LOGFILES_ROTATE -exec rm {} \;<br />
echo "HINWEIS: Daten aus dem Ordner /@Logfiles, die mehr als $LOGFILES_ROTATE Tage alt waren, wurden geloescht." >> $LOG<br />
echo "" >> $LOG<br />
fi<br />
fi<br />
# Dateien im Ordner @DSMConfig die älter als x Tage sind, löschen.<br />
if $TARGET_TEST -d "$DESTINATION"/@DSMConfig/; then<br />
if [ -z "$STOP" ] && [ -n "$DSMCONFIG_ROTATE" ] && [ -z "$ERROR" ]; then<br />
$FIND "$DESTINATION"/@DSMConfig -name "*.dss" -type f -mtime +$DSMCONFIG_ROTATE -exec rm {} \;<br />
echo "HINWEIS: Daten aus dem Ordner /@DSMConfig, die mehr als $DSMCONFIG_ROTATE Tage alt waren, wurden geloescht." >> $LOG<br />
echo "" >> $LOG<br />
fi<br />
fi<br />
fi<br />
<br />
# Verschlüsselte Shares wieder aushängen..<br />
#-------------------------------------------------------------------------<br />
if [ $UNMOUNT -ne 0 ] && [ -n "$TARGETDS" ]; then<br />
if [ $UNMOUNT -ne 2 ]; then<br />
IFS="<br />
"<br />
TARGET_ESCAPE=$(echo $TARGET | sed -e 's/ /\\ /g')<br />
TARGET_DECRYPT_ESCAPE=$(echo $TARGET_DECRYPT | sed -e 's/ /\\ /g')<br />
IFS="$BACKIFS"<br />
if [ -n "$SSH_TO" ]; then<br />
DEST_DECRYPT="$TARGET_DECRYPT_ESCAPE"<br />
else<br />
DEST_DECRYPT="$TARGET_DECRYPT"<br />
fi<br />
if $TARGET_TEST -d /volume*/@"$DEST_DECRYPT"@ && $TARGET_TEST -d /volume*/"$DEST_DECRYPT"; then<br />
echo "Ziel: $TARGET_DECRYPT wurde ausgehangen" >> $LOG<br />
$SYNOSHARE_TARGET /usr/syno/sbin/synoshare --enc_unmount "$DEST_DECRYPT" >> $LOG<br />
sleep 10<br />
fi<br />
fi<br />
fi<br />
if [ $UNMOUNT -ne 0 ] && [ -n "$SOURCEDS" ]; then<br />
if [ $UNMOUNT -ne 3 ]; then<br />
IFS="<br />
"<br />
for SHARE in $SOURCES; do<br />
SHARE_ESCAPE=$(echo $SHARE | sed -e 's/ /\\ /g')<br />
SHARE_CUT="${SHARE#*/}"<br />
SHARE_DECRYPT="${SHARE_CUT%%/*}"<br />
SHARE_DECRYPT_ESCAPE=$(echo $SHARE_DECRYPT | sed -e 's/ /\\ /g')<br />
IFS="$BACKIFS"<br />
if [ -n "$SSH_FROM" ]; then<br />
SOURCE_DECRYPT="$SHARE_DECRYPT_ESCAPE"<br />
else<br />
SOURCE_DECRYPT="$SHARE_DECRYPT"<br />
fi<br />
if $SOURCE_TEST -d /volume*/@"$SOURCE_DECRYPT"@ && $SOURCE_TEST -d /volume*/"$SOURCE_DECRYPT"; then<br />
echo "Quelle: $SHARE_DECRYPT wurde ausgehangen" >> $LOG<br />
$SYNOSHARE_SOURCE /usr/syno/sbin/synoshare --enc_unmount "$SHARE_DECRYPT" >> $LOG<br />
sleep 10<br />
fi<br />
done<br />
fi<br />
fi<br />
unset KEYFILEPW<br />
<br />
# Entfernten Server herunterfahren<br />
#-------------------------------------------------------------------------<br />
if [ $SHUTDOWN -ne 0 ] && [ -z "$RSYNC_CODE" ] && [ -z "$STOP" ] && [ -z "$ERROR" ]; then<br />
if [ -n "$SSH_FROM" ]; then<br />
$FROMSSH poweroff<br />
echo "Remoteserver $SSH_FROM wird heruntergefahren." >> $LOG<br />
elif [ -n "$SSH_TO" ]; then<br />
$TOSSH poweroff<br />
echo "Remoteserver $SSH_TO wird heruntergefahren." >> $LOG<br />
fi<br />
fi<br />
<br />
# Benachrichtigung an die DSM-Administratorengruppe sowie E-Mail senden<br />
#-------------------------------------------------------------------------<br />
if [ -n "$DSMNOTIFY" ]; then<br />
synodsmnotify @administrators "Script: $SCRIPTNAME" "$DSMNOTIFY"<br />
fi<br />
if [ -n "$EMAIL" ]; then<br />
if [ "$EMAILFAIL" -eq 1 ] && [ -z "$RSYNC_CODE" ] || [ -n "$STOP" ] || [ -n "$ERROR" ]; then<br />
ssmtp $EMAIL < $LOG<br />
elif [ "$EMAILFAIL" -eq 0 ]; then<br />
ssmtp $EMAIL < $LOG<br />
fi<br />
fi<br />
<br />
# Script beenden...<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ] && [ -z "$RSYNC_CODE" ] && [ -z "$ERROR" ] && [ "$AUTORUN" -eq 1 ]; then<br />
exit 100<br />
else<br />
exit $?<br />
fi<br />
<br />
</pre><br />
<br />
=Erstellen eines RSA-Keys für den Aufbau einer SSH-Verbindung=<br />
Es soll eine dateibasierte Datensicherung mittels RSync von Diskstation "A" (Produktivsystem) auf Diskstation "B" (Backupsystem) angelegt werden. Dabei übernimmt das Backupsystem die Aufgabe des Servers, worüber der Verbindungsaufbau und der eigentliche Sicherungsvorgang initiiert wird. Das Produktivsystem übernimmt somit die Aufgabe des Client und muß dem ganzen Vorgang nur zustimmen. Um dies zu ermöglichen muß im Vorfeld ein RSA-Schlüssel auf dem Backupsystem erzeugt und dem Produktivsystem der öffentliche Schlüssel mitgeteilt werden, um so den automatischen Verbindungsaufbau per SSH zu ermöglichen. Nachdem die SSH-Verbindung erfolgreich aufgebaut wurde, wird der eigentliche rsync-Befehl abgesetzt und somit die Datensicherung ausgelöst. Um auch in die Gegenrichtung sichern zu können, muss die RSA-Key Einrichtung dementsprechend gedreht werden, so das am Ende sowohl Diskstation "A" als auch Diskstation "B" Quelle als auch Ziel der Datensicherung darstellen können.<br />
<br />
Im folgenden werden alle Einstellungen für den Benutzer '''root''' getroffen, da nur unter diesem Benutzer die Signalausgabe als auch das Sichern der DSM-Konfiguration funktioniert. Wer hier lieber als "admin" oder vielleicht sogar als eingeschränkter Benutzer "rsync" arbeiten möchte, muss nachfolgend an den entsprechenden Stellen den gewünschten Benutzernamen einsetzen. Das hier verwendete Homeverzeichnis des Benutzer "root" wird im folgenden nur in dessen Kurzform mit ~/ angesprochen, wobei hier immer auf /root verwiesen wird. Alle anderen Benutzerkonten befinden sich im Homeverzeichnis /home/[BENUTZERNAME] bzw. richtigerweise unter /var/services/homes/[BENUTZERNAME].<br />
<br />
(Nachfolgend symbolisiert das Zeichen "$" nur den Zeilenanfang und wird nicht mit geschrieben)<br />
<br />
<br />
'''Hinweis zum Loginvorgang bis DSM 5.2 für den Benutzer "root"'''<br />
<pre><br />
Login als Benutzer "root" mit dem Passwort des DSM-Benutzer "admin"<br />
</pre><br />
<br />
'''Hinweis zum Loginvorgang ab DSM 6 für den Benutzer "root"'''<br />
<pre><br />
Login als Benutzer "admin" mit dem Passwort des DSM-Benutzer "admin"<br />
<br />
"root"-Zugriff erhält man dann über die Eingabe von...<br />
<br />
$ sudo -i<br />
<br />
...und gibt abermals das Password des DSM-Benutzer "admin" ein.<br />
</pre> <br />
<br />
<br />
'''Beginnen wir auf dem Server der "Diskstation B" oder besser gesagt, dem Backupsystem'''<br />
<br />
Auf der Konsole der DS als Benutzer "root" einloggen. <br />
Erstellen des RSA-Schlüssels mit...<br />
<br />
<pre>$ ssh-keygen -t rsa</pre><br />
<br />
Bei der Erstellung wird man nach Speicherort und Passphrase gefragt...<br />
<br />
<pre><br />
Enter file in which to save the key (/root/.ssh/id_rsa):<br />
Enter passphrase (empty for no oassphrase):<br />
Enter same passphrase again:<br />
</pre><br />
<br />
... hier bitte nichts eintragen, sondern einfach nur mit der "Return-Taste" bestätigen. Nach der Ausführung werden im Homeverzeichnis des Benutzer "root" folgende Ordner und Dateien erstellt:<br />
<br />
<pre><br />
~/.ssh<br />
~/.ssh/id_rsa<br />
~/.ssh/id_rsa.pub<br />
</pre><br />
<br />
An dieser Stelle sollte man gleich noch die Ordner- und Dateirechte anpassen.<br />
<br />
<pre>$ chmod 0700 ~/.ssh<br />
$ chmod 0600 ~/.ssh/id_rsa*<br />
</pre><br />
<br />
Den Inhalt der Datei ~/.ssh/id_rsa.pub z.B. mit vi, nano oder dem AdminTool editieren und den Inhalt in die Zwischenablage kopieren.<br />
<br />
<pre>$ nano ~/.ssh/id_rsa.pub</pre><br />
<br />
Wichtig, wie hier im Beispiel gezeigt (RSA-Schlüssel wurde hier gekürzt) ist, das alles in einer Zeile steht...<br />
<br />
<pre>ssh-rsa AAAAB3NzaC1yc2..*gekürzt*...EAAAADAQABA3e root@Backupstation</pre><br />
<br />
'''Weiter gehts auf dem Client der "Diskstation A", also dem Produktivsystem.'''<br />
<br />
Auf der Konsole der DS als Benutzer "root" einloggen. Erstellen eines neuen Ornders<br />
<br />
<pre>$ mkdir ~/.ssh</pre><br />
<br />
Daraufhin wird unter ~/.ssh/ eine neue Datei namens "authorized_keys" erstellt...<br />
<br />
<pre>$ nano ~/.ssh/authorized_keys</pre><br />
<br />
...und der Inhalt aus der Zwischenablage, also der Inhalt aus der ~/.ssh/id_rsa.pub, die auf dem Backupsystem erstellt wurde, in die geöffnete Datei eingefügt. Nach dem Speichern und verlassen des Editors müssen auch hier noch die Ordner- und Dateirechte richtig gesetzt werden.<br />
<br />
<pre><br />
$ chmod 0700 ~/.ssh<br />
$ chmod 0600 ~/.ssh/authorized_keys<br />
</pre><br />
<br />
'''Zurück auf der Konsole der Backupstation.'''<br />
<br />
Als Benutzer "root" auf der DS einloggen und als Erstes die SSH-Verbindung prüfen mit...<br />
<br />
<pre>$ ssh root@IP-DER-DISKSTATION_A -p 22</pre><br />
<br />
Der Verbindungsaufbau möchte vom System nochmal mit "yes" bestätigt werden um anschließend auf der Konsole des Produktivsystemes zu landen. Diese Verbindung kann man durch die Eingabe eines...<br />
<br />
<pre>$ exit</pre><br />
<br />
... wieder beenden. Durch den Verbindungsaufbau wurde nun in der Datei ~/.ssh/known_hosts ein neuer Eintrag hinzugefügt, der die Zugangsdaten zur Diskstation beinhaltet. Kontrollieren kann man das mit...<br />
<br />
<pre>$ nano ~/.ssh/known_hosts</pre><br />
<br />
Nachdem alles gut verlaufen ist, wird die Konsole wieder geschlossen mit...<br />
<br />
<pre>$ exit</pre><br />
<br />
=Release Notes=<br />
<br />
'''Release Notes vom 10.05.2016'''<br />
(Knapp 150 Zeilen Script-Code wurden seit dem letzen Update hinzugefügt.)<br />
* Es wurde eine neue Variable (MAC) geschaffen um entfernte Server per WOL zu starten.<br />
* Es wurde eine neue Variable (SLEEP) geschaffen um dem entfernten Server ein Zeitfenster zum starten zu geben.<br />
* Es wurde eine neue Variable (SHUTDOWN) geschaffen um entfernte Server auszuschalten.<br />
* Anhand der drei grade genannten Variablen können demnach entfernte Server per WOL geweckt, die eigentliche Datensicherung ausgeführt werden um im Anschluss den entfernten Server bei Bedarf wieder auszuschalten. <br />
* Es wurde eine neue Variable (FROMTHISDEVICE) geschaffen um Inhalte eines USB/SATA-Datenräger auf eine Diskstation oder einem entfernten, RSync-kompatiblen Server zu sichern.<br />
* Quellen und Ziel können ab sofort auch Leerzeichen enthalten. <br />
<br />
'''Release Notes vom 01.05.2016'''<br />
* Es wurde eine neue Variable (SSH_PORT) geschaffen um einen abweichenden SSH-Port angeben zu können.<br />
* Es wurde eine neue Variable (RSYNC_PORT) geschaffen um einen abweichenden RSync-Port angeben zu können.<br />
* Es wurde eine neue Variable (EMAILFAIL) geschaffen um nur bei einer Störung per E-Mail benachrichtigt zu werden.<br />
* Alle "schaltbaren" Benutzer-Variablen wurden nach dem Schema "0" = aus / "1" = an umstrukturiert. Ursprünglich wurde der Wert bei Zustand "aus" einfach leer gelassen, also "". <br />
* Kommentare im Benutzer-Eingabebereich des Scripts wurden optimiert.<br />
* Neben der bereits funktionierenden Sicherung von und auf eine weitere Diskstation funktioniert jetzt auch das Sichern von und auf einen RSync-kompatible Server. Das Script erkennt hierbei automatisch ob es sich um eine Diskstation oder einen RSync-kompatiblen Server handelt und passt die Sicherungs-Pfade dementsprechend an. Diskstation arbeiten i.d.R. mit einem /volume[x], RSync-kompatible Server tun das in der Regel nicht.<br />
* Viele weitere Detailverbesserungen, die hier nicht alle aufgeführt werden können. Nur so viel... das Script ist um weitere 100 Zeilen Scipt-Code gewachsen.<br />
<br />
=Externe Links=<br />
*[http://www.synology-forum.de/showthread.html?72786-Projekt-rsync-Alternative-dateibasierte-Datensicherung Forum Post]<br />
*[http://wpkg.org/Rsync_exit_codes rsync Exit Codes]<br />
*[http://www.synology-wiki.de/index.php/LEDs_und_Buttons LEDs und Buttons (zur Signalsteuerung)]</div>Itommeshttps://www.synology-wiki.de/index.php?title=Dateibasierte_RSync-Datensicherung_auf_externen_Datentr%C3%A4ger_oder_RSync_kompatiblen_Server&diff=7082Dateibasierte RSync-Datensicherung auf externen Datenträger oder RSync kompatiblen Server2016-05-19T18:50:50Z<p>Itommes: /* Script 2: Das Ausführungs-Script "start-rsync.sh" */</p>
<hr />
<div>=Einleitung=<br />
<br />
'''Diese Anleitung zur dateibasierten RSync-Datensicherung bietet folgende Möglichkeiten...'''<br />
<br />
* Quelle(n) und/oder Ziel können unverschlüsselt sein<br />
* Quelle(n) und/oder Ziel können verschlüsselt sein<br />
* Quelle(n) und/oder Ziel können Leerzeichen im Ordernamen enthalten <br />
* Sicherung innerhalb eines /volume<br />
* Sicherung zwischen internen /volumes<br />
* Sicherung AUF lokal angeschlossene USB-/SATA-Datenträger sowie eingebundene Remote-Shares (nur unverschlüsselt)<br />
* Sicherung VON lokal angeschlossene USB-/SATA-Datenträger AUF internes /volume oder RSync-kompatiblen Server (auch verschlüsselt möglich)<br />
* Sicherung von einer entfernten DS oder RSync-kompatilben Server<br />
* Sicherung auf eine entfernte DS oder RSync-kompatilben Server<br />
* (weitere Konstellationen sind möglich, wurden jedoch nicht getestet) <br />
<br />
'''Hinweis:''' Die Verschlüsselung beruht hierbei auf der von Synology verwendeten Ordnerverschlüsselung (eCryptfs). Um verschlüsselte gemeinsame Ordner einbinden zu können, wird das Key-File also der Exportschlüssel benötigt. Diesen erhält man über die DSM-Systemsteuerung/Gemeinsame Ordner.<br />
<br />
=Anmerkung=<br />
Bevor ihr anfangt, nehmt bitte noch den Artikel "[[Wichtige Informationen zum Modden der Synology Stations]]" zur Kenntnis. <br />
<br />
Auch wenn dieses Script intensiv auf einwandfreie Funktion hin getestet wurde, so kann eine Fehlfunktion und demzufolge ein möglicher Datenverlust nicht ausgeschlossen werden. Aus diesem Grund solltet ihr das System erstmal mit unwichtigen Testdaten auf Herz und Nieren prüfen und sich mit der Arbeitsweise des Scripts und dessen Funktionen vertraut machen bevor ihr das ganze "produktiv" einsetzt. '''Ihr verwendet dieses Script auf eigene Gefahr.'''<br />
<br />
=Voraussetzungen=<br />
* Umgang mit dem DSM Aufgabenplaner <br />
* Umgang mit einem Editor seiner Wahl (z.B. Notepad++ oder dem DSM Text-Editor)<br />
* Grundkenntnisse im Umgang mit Shell-Scripten<br />
* Umgang mit der Konsole (bei Verwendung des SSH-Zuganges)<br />
* Zum versenden einer E-Mail muss im DSM unter Hauptmenü/Systemsteuerung/Benachrichtigung eine E-Mail Adresse hinterlegt sein.<br />
* Ein externer USB- oder SATA-Datenträger, eine weitere Synology Diskstation oder einen rsync-kompatiblen Server im Netzwerk.<br />
* Optional: autorun für externe Datenträger (Version 1.7)<br />
<br />
=Erläuterungen zur Funktion und Arbeitsweise=<br />
<br />
<pre><br />
Diskstation<br />
| |<br />
| '--> Aufgabenplaner ------------------------------<br />
| | |<br />
| '--> Such-Script -----> USB/SATA-Share ---> Ausführungs-<br />
| | Script<br />
'----------------> USB/SATA-Share --> autorun -------- (Key-Files)<br />
|<br />
.---------------------------'<br />
|<br />
V<br />
.---------- Quelle <--- definiere ---> Ziel----------.<br />
| | | |<br />
V '-- lokale/intern/extern --' V<br />
lokalisiere Quelle(n) lokalisiere Ziel<br />
| | <br />
| Protokoll/E-Mail |<br />
|--> Verschlüsselte | Verschlüsseltes <--|<br />
| Quelle(n) anhand der | Ziel anhand der |<br />
| Key-Files einhängen <--- aushängen ---> Key-Files einhängen |<br />
| | | | |<br />
| V | V |<br />
'--------------------->> !! DATENSICHERUNG !! >>---------------------'<br />
| |<br />
'-- lokale/intern/extern -'<br />
<br />
</pre><br />
<br />
<br />
'''Scriptausführung über den DSM-Aufgabenplaner'''<br />
<br />
Das manuelle oder automatisierte Aufrufen von Such- oder Ausführungs-Script wird komfortabel über den DSM - Aufgabenplaner gesteuert. Das Such-Script hat dabei die Aufgabe, das Ausführungs-Script zu lokalisieren und starten. Es wird jedoch nur bei der Verwendung einer lokalen Datensicherung auf einem angeschlossenen USB-/SATA-Datenträger eingesetzt, da sich hier die Datenträgerbezeichnungen durchaus mal ändern können. Für alle andern Aufgaben wird das Such-Script nicht benötigt weshalb man das Ausführungs-Script auch direkt über den DSM-Aufgabenplaner ansprechen kann, um es manuell oder automatisiert auszuführen. Dabei befindet sich das Ausführungs-Script innerhalb eines "gemeinsamen Ordners" auf der DS, also z.B. dort, wo die interne oder externe Datensicherung später gespeichert werden soll.<br />
<br />
<br />
'''Scriptausführung mittels "autorun"'''<br />
<br />
Eine weitere Möglichkeit der Scriptausführung bietet die Verwendung von "autorun", welches angeschlossene USB-/SATA-Datenträger automatisch erkennt und ein darauf liegendes Script Namens "autorun" ausführt, sollte es im Wurzel- bzw. Hauptverzeichnis des externen Datenträgers lokalisiert werden. Dieses Verhalten machen wir uns zunutze, indem wir entweder den Inhalt unseres Ausführungs-Scriptes per Copy & Paste mit dem des "autorun" Scripts überschreiben, oder wir legen uns eine neue Datei namens "autorun" an bzw. benennen unser Script einfach nach "autorun" um und legen es auf dem externen Datenträger ab. Somit erhält man die Möglichkeit durch einfaches anstecken des USB-Sticks eine lokale, interne oder externe Datensicherung auszuführen. Ein weiterer Vorteil von "autorun" ist der Tatsache geschuldet, das sich evtl. benötigte Key-Files (also der Exportschlüssel) für das Einhängen verschlüsselter gemeinsamer Ordner am Speicherort des Ausführungs-Scripts befinden müssen. Wird der USB-Stick demnach nur für die Zeit der Datensicherung verwendet und ansonsten an einem sicheren Ort aufbewahrt, sind auch die Key-Files für diesen Zeitraum erstmal sicher. <br />
<br />
<br />
'''Arbeitsweise des Ausführungs-Script (start-rsync.sh)'''<br />
<br />
Das Ausführungs-Script führt neben einigen anderen Dingen die eigentliche Datensicherung aus, wobei mittels RSync sämtliche konfigurierte Quellen mit dem Ziel synchronisiert werden. Befindet sich unter den Quellen oder dem Ziel ein oder mehrere verschlüsselte gemeinsame Ordner, so können diese über das sogenanntes Key-File (der Exportschlüssel) automatisch ein- und nach dem Beenden der Datensicherung wieder automatisch ausgehangen werden. Dazu ist es jedoch erforderlich, das sich das Key-File am Speicherort des Ausführungs-Scripts befindet. Das Key-File selber wird einem beim erstellen eines verschlüsselten gemeinsamen Ordners im DSM unter Systemsteuerung/Gemeinsame Ordner zum Download angeboten, man kann sich dieses aber auch nachträglich erstellen lassen. Weiterhin muss der Benutzer im Vorfeld noch einige Parameter innerhalb des Ausführungs-Scripts definieren, dessen Funktionen durch zusätzliche Kommentare näher beschrieben werden.<br />
<br />
Um dem Benutzer ein Feedback über Erfolg und Misserfolg der Datensicherung geben zu können wird ein Systemprotokoll erstellt, welches in einem Ordner Namens /@Logfiles abgelegt wird. Dieser Ordner liegt hierbei immer im Speicherort des Ausführungs-Scriptes. Weiterhin werden gelöschte Daten einer Quelle, im Ziel bei Bedarf in den Ordner /@Recycle verschoben, welcher sich auch im Speicherort der Datensicherung befindet. Ebenso wird hier bei Bedarf ein weiterer Ordner mit dem Namen @/DSMConfig angelegt, worin die Sicherungen der DSM-Systemkonfiguration des Systems aufbewahrt werden, von dem auch die Quellen stammen. Die Inhalte der Ordner /@Logfiles, /@Recycle sowie /@DSMConfig können nach der Angabe einer Individuellen Zeitvorgabe (in Tagen) vom System automatisch gelöscht werden um einen Speicherüberlauf zu verhindern und um die Übersicht zu bewahren.<br />
<br />
Bei der eigentlichen Datensicherung über RSync werden die Ordnerpfade relativ, nach dem jeweiligen Volume (1,2,3,4….) in das entsprechende Unterverzeichnis gespeichert. Systemorder wie z.B. /@eaDIR, /#recycle, /#snapshot und /.DS_Store werden von der Synchronisation ausgeschlossen. Alle ausgeführten Schritte sowie Fehlermeldungen als auch Abbrüche werden protokolliert und teilweise über sogenannte Exit-Codes als Zahlenwert ausgegeben. Diese Exit-Codes geben weitere Auskunft über mögliche Fehlerquellen. Im Anhang unten findet man ein entsprechender Link zur Auswertung. Das Protokoll wird im oben beschriebenen Ordner /@Logfiles abgelegt und kann bei Bedarf auch als E-Mail zugestellt werden. <br />
<br />
Weitere Einstellmöglichkeiten werden innerhalb des Scripts beschrieben und hier nicht weiter ausgeführt.<br />
<br />
=Hinweise zum Erstellen und ausführen der Scripte=<br />
Die hier verwendeten Script-Dateinamen dienen nur der Veranschaulichung und können, unter Beachtung einiger Rahmenbedingungen nach Belieben verändert werden.<br />
Für die Erstellung der Scripte wurde im DSM unter dem Benutzer "admin" der DSM eigene Text-Editor, der evtl. noch über das Paketzentrum installiert werden muss, verwendet. Wichtig ist das im Editor unter "Voreinstellungen" im Reiter "Bearbeiten" als Standardcodierung "Unicode (UTF-8)" ausgewählt wird.<br />
<br />
Nachdem das jeweilige Script aus dem Wiki in die Zwischenablage kopiert und im Text-Editor eingefügt wurde, kann die entsprechende Datei über "Speichern unter..." am gewünschten Ort abgespeichert werden. Scripte die später über den Aufgabenplaner ausgeführt werden, müssen noch die entsprechenden Berechtigungen erhalten um das jeweilige Script "ausführbar" zu machen. Dazu muss man in der FileStation mit einem rechtsklick auf die betreffenden Datei gehen und im Kontextmenü den Menüpunkt "Eigenschaften" auswählen. Dort angekommen wechselt man zum Reiter "Genehmigung" und weiter auf die Schaltfläche "Erweiterte Optionen" um darauffolgend den Punkt "Übernommene Genehmigungen einschließen" auszuwählen. Zum Schluss bestätigt man das Ganze mit der Schaltfläche "OK" (Die Datei sollte jetzt die Berechtigung rwxrw-rw, bzw. 766 haben)<br />
<br />
Nachdem die Privilegien richtig gesetzt wurden, kann das Script unter Hauptmenü/Systemsteuerung in den Aufgabenplaner aufgenommen werden, ohne die Aufgabe jedoch vorerst auszuführen. Dazu wählt man unter DSM 6 "Erstellen" --> "Geplante Aufgabe" --> "Benutzerdefiniertes Script". Im Reiter "Allgemein" kann man unter "Vorgang" einen individuellen Namen für die Aufgabe vergeben und als Benutzer sollte "root" ausgewählt werden. Bei einer Netzwerksicherung über eine SSH-Verbindung muss hier der Benutzer angegeben werden, auf dem der RSA-Key ausgestellt wurde, in unserem Fall (siehe Anleitung unten) ist das der Benutzer "root". (Nur unter dem Benutzer "root" funktioniert die Signaausgabe sowie die Sicherung der DSM-Konfiguration) Die Checkbox "Aktiviert" wird nur benötigt, sollte das Script automatisiert, also Zeitgesteuert gestartet werden. Dazu wäre dann im nächsten Schritt unter dem Reiter der "Zeitplan" zu definieren. Im Reiter "Aufgabeneinstellungen" muss jetzt noch unter dem Punkt "Befehl ausführen" der Pfad zum "Benutzerdefinierten Script" angegeben werden, also z.B. /volume1/ScriptStuff/search-rsync.sh. Nach dem Bestätigen mit "OK" wird die Aufgabe dem Aufgabenplaner hinzugefügt und kann später, falls gewünscht, nach dem Markieren der Aufgabe, über die Schaltfläche "Ausführen" manuell ausgeführt werden.<br />
<br />
=Script 1: Das Such-Script "search-rsync.sh"=<br />
<br />
Da es mehrere Ansätze für die Suche gibt, kann man sich hier [[Dateibasierte RSync-Datensicherung auf externen Datenträger oder RSync kompatiblen Server/Suchscriptvarianten|Weitere Suchscriptvarianten]] anschauen und sich die für sich passenden Möglichkeit auswählen.<br />
<br />
'''search-rsync.sh'''<br />
<pre><br />
#!/bin/sh<br />
<br />
# Zeichenkette für Script-Dateinamen definieren<br />
# ------------------------------------------------------------------------<br />
# Es ist nicht erforderlich, den kompletten Script-Dateinamen anzugeben. |<br />
# Es reicht die Eingabe einer Zeichenkette, die in jedem auszuführenden |<br />
# Script-Dateinamen enthalten sein muss. |<br />
# Beispiele für die Zeichenkette: "local" = local_Backup_Filme.sh |<br />
# local_Filme.sh oder auch Filme_local_sichern.sh |<br />
#-------------------------------------------------------------------------<br />
SCRIPT_STRING="start"<br />
<br />
# ------------------------------------------------------------------------<br />
# Ab hier bitte nichts mehr ändern |<br />
# ------------------------------------------------------------------------<br />
<br />
for SCRIPT in /volume*/*share/*$SCRIPT_STRING*.sh<br />
do<br />
if [ -f $SCRIPT ]; then<br />
sh $SCRIPT<br />
fi<br />
done<br />
</pre><br />
<br />
=Script 2: Das Ausführungs-Script "start-rsync.sh"=<br />
Das Script mit dem beispielhaften Script-Dateinamen "start-rsync.sh", wird entweder auf den entsprechenden externen USB- oder SATA-Datenträger in dessen Wurzelverzeichnis oder aber in einen "gemeinsamen Ordner" auf der Diskstation abgelegt, auf dem die Datensicherung abgelegt werden soll. <br />
<br />
'''start-rsync.sh'''<br />
<pre><br />
#!/bin/sh<br />
<br />
# E-Mail Adresse<br />
# -------------------------------------------------------------------------<br />
# Die E-Mail Adresse muss mit der bereits im DSM unter "Benachrichtigung" |<br />
# hinterlegten E-Mail-Adresse identisch sein. |<br />
# -------------------------------------------------------------------------<br />
EMAIL="" # E-Mail für Zustellung des Sicherungsprotokolls<br />
EMAILFAIL="0" # "0" = Sicherungsprotokoll immer senden<br />
# "1" = Sicherungsprotokoll nur bei Problemen senden<br />
# SSH - Verbindungsdaten<br />
# -------------------------------------------------------------------------<br />
# Werden keine Verbindungsdaten angegeben, wird eine lokale Datensicherung|<br />
# durchgeführt. |<br />
# -------------------------------------------------------------------------<br />
SSH_USER="" # Benutzername<br />
SSH_FROM="" # IP-, Host- oder Domain VON entfernter Quelle AUF lokales Ziel<br />
SSH_TO="" # IP-, Host- oder Domain VON lokaler Quelle AUF entferntes Ziel<br />
SSH_PORT="" # Leer = Port 22 ansonsten gewünschten Port angeben<br />
RSYNC_PORT="" # Alternativer Rsync Port kann hier eingetragen werden<br />
MAC="" # Leer = WOL wird nicht genutzt<br />
SLEEP="300" # Wartezeit in Sekunden bis Remoteserver gebootet ist<br />
# MAC Adresse eintragen = Server wird hochgefahren, wenn dieser ausgeschaltet ist<br />
SHUTDOWN="0" # "0" = Entfernter Server wird nicht heruntergefahren<br />
# "1" = Entfernter Server wird heruntergefahren wenn das Backup erfolgreich war<br />
<br />
# Umgang mit verschlüsselten Ordnern<br />
# ------------------------------------------------------------------------<br />
# Angeben, ob eingehangene verschlüsselte Ordner nach der Datensicherung |<br />
# wieder ausgehangen werden sollen. |<br />
# ------------------------------------------------------------------------<br />
UNMOUNT="0" # "0" = Eingehangene Ordner werden nicht ausgehängt<br />
# "1" = Quelle und Ziel werden ausgehängt<br />
# "2" = Quelle wird ausgehängt<br />
# "3" = Ziel wird ausgehängt<br />
<br />
# Backup - Quellen<br />
# ------------------------------------------------------------------------<br />
# Hier können beliebige, unverschlüsselte sowie verschlüsselte |<br />
# Backup-Quellen einer lokalen oder entfernten DS eingetragen werden. |<br />
# Zu beachten ist, das immer der vollständige Pfad ohne Angabe des |<br />
# entsprechenden Volume anzugeben ist. Weiterhin ist auf die |<br />
# Schreibweise im Beispiel zu achten, pro Zeile je eine Backupquelle. |<br />
# ------------------------------------------------------------------------<br />
SOURCES="/homes/admin<br />
/ordner mit leerzeichen<br />
/verschlüsselter ordner"<br />
<br />
# Backup - Ziel<br />
# ------------------------------------------------------------------------<br />
# Wenn NOTTOSCRIPT="0" |<br />
# - dann entspricht TARGET einem "Unterverzeichnis" am Speicherort des |<br />
# Scripts. Beisp.: volume[x]/share/[TARGET] oder bei einem |<br />
# angeschlossenen USB-Datenträger: volumeUSB[x]/usbshare/[TARGET] |<br />
# - Ist zusätzlich HOSTNAME="1" gesetzt, wird der Netzwerkname dem |<br />
# Speicherort hinzugefügt. Beisp.: volume[x]/Share/[TARGET]/[HOSTNAME]|<br />
# |<br />
# Wenn NOTTOSCRIPT="1" und Ziel ist eine Diskstation |<br />
# - dann entspricht TARGET einem "gemeinsamen Ordner" (Share) am |<br />
# Speicherort des Ziel's. Beisp.: volume[x]/[TARGET] |<br />
# - Ist zusätzlich HOSTNAME="1" gesetzt, wird der Netzwerkname dem |<br />
# Speicherort hinzugefügt. Beisp.: volume[x]/[TARGET]/[HOSTNAME] |<br />
# |<br />
# Wenn NOTTOSCRIPT="1" und Ziel ist ein RSync-kompatibler Server |<br />
# - dann entspricht TARGET einem Ordner (Share) am Speicherort des |<br />
# Ziel's. Beisp.: /[TARGET] |<br />
# - Ist zusätzlich HOSTNAME="1" gesetzt, wird der Netzwerkname dem |<br />
# Speicherort hinzugefügt. Beisp.: /[TARGET]/[HOSTNAME] |<br />
#-------------------------------------------------------------------------<br />
TARGET="/RSync Backup"<br />
<br />
FROMTHISDEVICE="0" # "0" = Quelle ist ein gemeinsamer Ordner<br />
# "1" = Quelle liegt auf externen USB/SATA-Speicher neben Script<br />
NOTTOSCRIPT="0" # "0" = Sicherungsziel liegt beim Script<br />
# "1" = Sicherungsziel liegt im geinsamen Ordner<br />
HOSTNAME="0" # "0" = Sicherungsziel entspricht TARGET<br />
# "1" = Sicherungsziel entspricht TARGET/HOSTNAME<br />
AUTORUN="0" # "0" = autorun wirft USB-Stick nicht aus<br />
# "1" = autorun wirft USB-Stick aus<br />
<br />
# Optische- sowie akustische Signalausgabe<br />
#-------------------------------------------------------------------------<br />
# Start : Status-LED wechselt von grün nach orange. Ein Signalton ertönt|<br />
# Ende : Status-LED wechselt von orange nach grün. Ein Signalton ertönt|<br />
# Fehler : Status-LED wechselt von orange nach grün. 3x Signalton ertönt |<br />
#-------------------------------------------------------------------------<br />
SIGNAL="0" # "0" = Optische- sowie akustische Signalausgabe aus<br />
# "1" = Optische- sowie akustische Signalausgabe an<br />
<br />
# Exportieren der DSM-Systemkonfiguration (.dss)<br />
#-------------------------------------------------------------------------<br />
# Die DSM-Systemkonfigurartion (.dss) wird in den Systemordner |<br />
# /@DSMConfig exportiert. |<br />
#-------------------------------------------------------------------------<br />
DSM_EXPORT="0" # "0" = DSM-Systemkonfiguration wird NICHT exportiert<br />
# "1" = DSM-Systemkonfiguration wird exportiert<br />
<br />
# Rotationszyklus für das Löschen von @Recycle und @Logfiles<br />
#-------------------------------------------------------------------------<br />
# Zeitangabe, wann Ordner bzw. Dateien in den System-Ordnern endgültig |<br />
# gelöscht werden sollen, die älter als x Tage sind. |<br />
# ------------------------------------------------------------------------<br />
RECYCLE_ROTATE="90" # @Recycle-Daten die älter als "x" Tage sind, löschen<br />
LOGFILES_ROTATE="60" # @Logfiles-Daten die älter als "x" Tage sind, löschen<br />
DSMCONFIG_ROTATE="30" # @DSMConfig-Daten die älter als "x" Tage sind, löschen<br />
<br />
# ------------------------------------------------------------------------<br />
# Ab hier bitte nichts mehr ändern, wenn man nicht weiß was man tut !!! |<br />
# ------------------------------------------------------------------------<br />
SCRIPTFILE="${0##*/}"<br />
SCRIPTNAME="${SCRIPTFILE%.*}"<br />
DATE=`date +%Y-%m-%d_%Hh%M`<br />
# RSync Optionen konfigurieren<br />
#-------------------------------------------------------------------------<br />
SYNCOPT="-ahR"<br />
LOGSTAT="--stats"<br />
EXCLUDE="--exclude=@eaDir/*** --exclude=@Logfiles/*** --exclude=#recycle/*** --exclude=#snapshot/*** --exclude=.DS_Store/***"<br />
RECYCLE="--delete --backup --backup-dir=@Recycle/"$DATE"_$SCRIPTNAME"<br />
<br />
# Umgebungsvariablen definieren<br />
#-------------------------------------------------------------------------<br />
BACKIFS="$IFS"<br />
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/syno/bin:/usr/syno/sbin<br />
TARGET_EMPTY="/Backup_DS"<br />
if [[ ${TARGET:0:1} != \/ ]] && [ -n "$TARGET" ]; then<br />
TARGET="/$TARGET"<br />
fi<br />
DEST="${TARGET#*/}"<br />
TARGET_CUT="${TARGET#*/}"<br />
TARGET_DECRYPT="${TARGET_CUT%%/*}"<br />
TIMESTAMP=`date +%d.%m.%Y%t%H:%M:%S`<br />
LOKALHOST="$(hostname)"<br />
HR="------------------------------------------------------------------------------------------------"<br />
<br />
# Variablen je nach Verbindung festlegen<br />
#-------------------------------------------------------------------------<br />
# Wenn Verbindung AUF entfernten Server... (TOSSH)<br />
if [ -n "$SSH_FROM" ] && [ -z "$SSH_TO" ]; then<br />
if [ -n "$SSH_PORT" ]; then<br />
FROMSSH="ssh -p $SSH_PORT $SSH_USER@$SSH_FROM"<br />
SCP="scp -P $SSH_PORT"<br />
else<br />
FROMSSH="ssh $SSH_USER@$SSH_FROM"<br />
SCP="scp"<br />
fi<br />
if [ -n "$RSYNC_PORT" ]; then<br />
FROMRSYNC="ssh -p $RSYNC_PORT -l $SSH_USER"<br />
else<br />
FROMRSYNC="ssh -l $SSH_USER"<br />
fi<br />
REMOTEIP="$SSH_FROM"<br />
# Wenn Verbindung VON entfernten Server... (FROMSSH)<br />
elif [ -z "$SSH_FROM" ] && [ -n "$SSH_TO" ]; then<br />
if [ -n "$SSH_PORT" ]; then<br />
TOSSH="ssh -p $SSH_PORT $SSH_USER@$SSH_TO"<br />
SCP="scp -P $SSH_PORT"<br />
else<br />
TOSSH="ssh $SSH_USER@$SSH_TO"<br />
SCP="scp"<br />
fi<br />
if [ -n "$RSYNC_PORT" ]; then<br />
TORSYNC="ssh -p $RSYNC_PORT -l $SSH_USER"<br />
else<br />
TORSYNC="ssh -l $SSH_USER"<br />
fi<br />
REMOTEIP="$SSH_TO"<br />
# Wenn Verbindung lokal...<br />
elif [ -z "$SSH_FROM" ] && [ -z "$SSH_TO" ]; then<br />
FIND="find"<br />
SOURCE_TEST="test"<br />
TARGET_TEST="test"<br />
if [ $HOSTNAME -eq 1 ]; then<br />
NAME="$LOKALHOST"<br />
fi<br />
fi<br />
<br />
# DSM-Benachrichtigung: Script wird ausgeführt...<br />
#-------------------------------------------------------------------------<br />
synodsmnotify @administrators "Script: $SCRIPTNAME" "Wird ausgeführt.."<br />
<br />
# Speicherort des Logfiles festlegen<br />
#-------------------------------------------------------------------------<br />
mkdir -p `dirname $0`/@Logfiles<br />
LOG="`dirname $0`/@Logfiles/"$DATE"_$SCRIPTNAME.log"<br />
if test ! -d `dirname $0`/@Logfiles; then<br />
DSMNOTIFY="Es konnte kein @Logfiles Ordner erstellt werden!"<br />
fi<br />
if [ $SIGNAL -eq 1 ]; then<br />
echo 3 >/dev/ttyS1; echo : >/dev/ttyS1<br />
sleep 2<br />
fi<br />
<br />
# Ordner/Datei für das Protokoll anlegen und Kopfdaten generieren<br />
#-------------------------------------------------------------------------<br />
# E-Mail-Kopf aufbauen...<br />
if [ -n "$EMAIL" ]; then<br />
echo "To: $EMAIL" > $LOG<br />
echo "From: $EMAIL" >> $LOG<br />
echo "Subject: Sicherungsprotokoll vom $TIMESTAMP Uhr" >> $LOG<br />
echo "" >> $LOG<br />
echo "Ausgefuehrtes RSync-Script: $SCRIPTFILE" >> $LOG<br />
echo "" >> $LOG; echo "$HR" >> $LOG<br />
# Protokoll-Kopf aufbauen...<br />
else<br />
echo "Sicherungsprotokoll vom $TIMESTAMP Uhr" >> $LOG<br />
echo "" >> $LOG<br />
echo "Ausgefuehrtes RSync-Script: $SCRIPTFILE" >> $LOG<br />
echo "" >> $LOG; echo "$HR" >> $LOG<br />
fi<br />
<br />
# Fehlererkennung<br />
#-------------------------------------------------------------------------<br />
if [ -z "$TARGET" ] && [ "$NOTTOSCRIPT" -eq 1 ]; then<br />
STOP="Bitte TARGET setzen oder NOTTOSCRIPT nicht setzen..." >> $LOG<br />
fi<br />
if [ -z "$STOP" ] && [ -n "$SSH_FROM" ] && [ -n "$SSH_TO" ]; then<br />
STOP="Bitte nur SSH_FROM oder SSH_TO setzen!" >> $LOG<br />
fi<br />
if [ -z "$STOP" ] && [ -n "$SSH_TO" ] && [ -z "$TARGET" ]; then<br />
STOP="Bei SSH_TO muss TARGET angegeben werden!"<br />
fi<br />
if [ -z "$STOP" ] && [ "$NOTTOSCRIPT" -eq 1 ] && [ -z "$TARGET" ]; then<br />
STOP="Bei NOTTOSCRIPT=1 muss TARGET angegeben werden!"<br />
fi<br />
if [ -z "$STOP" ] && [ $FROMTHISDEVICE -eq 1 ] && [ -n "$SSH_FROM" ]; then<br />
STOP="Nur FROMTHISDEVICE setzen oder SSH_FROM !"<br />
fi<br />
# Ping Test<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ]; then<br />
if [ -n "$SSH_FROM" ] || [ -n "$SSH_TO" ]; then<br />
ping $REMOTEIP -c 2<br />
ONLINE="$?"<br />
if [ $ONLINE -eq 0 ]; then<br />
echo "Remoteserver $REMOTEIP ist online." >> $LOG<br />
else<br />
if [ -z "$MAC" ]; then<br />
STOP="Remoteserver $REMOTEIP ist offline!" >> $LOG<br />
else<br />
echo "Remoteserver $REMOTEIP ist offline!" >> $LOG<br />
fi<br />
fi<br />
if [ -z "$SSH_USER" ]; then<br />
STOP="Bei der Netzwerksicherung bitte SSH_USER angeben." >> $LOG<br />
fi<br />
fi<br />
fi<br />
<br />
# WOL<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ] && [ -n "$MAC" ] && [ $ONLINE -eq 1 ]; then<br />
echo "Remoteserver $REMOTEIP wird geweckt." >> $LOG<br />
if test -f /usr/bin/ether-wake; then<br />
/usr/bin/ether-wake $MAC<br />
elif test -f /usr/syno/sbin/synonet; then<br />
/usr/syno/sbin/synonet --wake $MAC eth0<br />
fi<br />
sleep $SLEEP<br />
ping $REMOTEIP -c 2<br />
ONLINE="$?"<br />
if [ $ONLINE -eq 0 ]; then<br />
echo "Remoteserver $REMOTEIP wurde hochgefahren." >> $LOG<br />
else<br />
if [ -z "$STOP" ]; then<br />
STOP="Remoteserver $REMOTEIP konnte nicht hochgefahren werden." >> $LOG<br />
fi<br />
fi<br />
fi<br />
<br />
# Verbindungstest (SSH_FROM)<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ] && [ -n "$SSH_FROM" ] && [ -z "$SSH_TO" ]; then<br />
if [ ! "$FROMSSH" ]; then<br />
STOP="Es konnte keine SSH-Verbindung zu $SSH_FROM aufgebaut werden." >> $LOG<br />
elif [ "$FROMSSH" ]; then<br />
REMOTEHOST=$($FROMSSH "echo \`hostname\`")<br />
echo "SSH-Verbindung zu $REMOTEHOST aufgebaut." >> $LOG<br />
SYNOSHARE_SOURCE="$FROMSSH"<br />
FIND="$FROMSSH find"<br />
SOURCE_TEST="$FROMSSH test"<br />
TARGET_TEST="test"<br />
if [ $HOSTNAME -eq 1 ]; then<br />
NAME="$REMOTEHOST"<br />
fi<br />
fi<br />
fi<br />
<br />
# Verbindungstest (SSH_TO)<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ] && [ -z "$SSH_FROM" ] && [ -n "$SSH_TO" ]; then<br />
if [ ! "$TOSSH" ]; then<br />
STOP="Es konnte keine SSH-Verbindung zu $SSH_TO aufgebaut werden." >> $LOG<br />
elif [ "$TOSSH" ]; then<br />
REMOTEHOST=$($TOSSH "echo \`hostname\`")<br />
echo "SSH-Verbindung zu $REMOTEHOST aufgebaut." >> $LOG<br />
SYNOSHARE_TARGET="$TOSSH"<br />
FIND="$TOSSH find"<br />
SOURCE_TEST="test"<br />
TARGET_TEST="$TOSSH test"<br />
if [ $HOSTNAME -eq 1 ]; then<br />
NAME="$LOKALHOST"<br />
fi<br />
fi<br />
fi<br />
<br />
# Verbindungstest ob Quelle bzw. Ziel eine Diskstation ist oder nicht<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ] && [ -n "$SSH_FROM" ] || [ -n "$SSH_TO" ]; then<br />
if $SOURCE_TEST -d /usr/syno/synoman; then<br />
SOURCE_PATH="/volume*"<br />
SOURCEDS="1"<br />
echo "Quellserver ist eine DS" >> $LOG<br />
elif $SOURCE_TEST ! -d /usr/syno/synoman; then<br />
SOURCEDS="0"<br />
echo "Quellserver ist keine DS" >> $LOG<br />
fi<br />
<br />
if $TARGET_TEST -d /usr/syno/synoman; then<br />
TARGET_PATH="/volume*"<br />
TARGETDS="1"<br />
echo "Zielserver ist eine DS" >> $LOG<br />
elif $TARGET_TEST ! -d /usr/syno/synoman; then<br />
TARGETDS="0"<br />
echo "Zielserver ist keine DS" >> $LOG<br />
fi<br />
<br />
elif [ -z "$STOP" ]; then<br />
SOURCE_PATH="/volume*"<br />
TARGET_PATH="/volume*"<br />
SOURCEDS="1"<br />
TARGETDS="1"<br />
fi<br />
<br />
if [ $FROMTHISDEVICE -eq 1 ]; then<br />
SOURCE_PATH="/volume*/*share"<br />
fi<br />
<br />
# Zielordner checken<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ]; then<br />
IFS="<br />
"<br />
TARGET_ESCAPE=$(echo $TARGET | sed -e 's/ /\\ /g')<br />
TARGET_DECRYPT_ESCAPE=$(echo $TARGET_DECRYPT | sed -e 's/ /\\ /g')<br />
IFS="$BACKIFS"<br />
if [ -n "$SSH_TO" ]; then<br />
DEST_DECRYPT="$TARGET_DECRYPT_ESCAPE"<br />
else<br />
DEST_DECRYPT="$TARGET_DECRYPT"<br />
fi<br />
if [ "$NOTTOSCRIPT" -eq 1 ] || [ -n "$SSH_TO" ]; then<br />
if $TARGET_TEST ! -d $TARGET_PATH/@"$DEST_DECRYPT"@ && $TARGET_TEST -d $TARGET_PATH/"$DEST_DECRYPT"; then<br />
echo "Zielordner $TARGET_DECRYPT wurde lokalisiert..." >> $LOG<br />
elif $TARGET_TEST -d $TARGET_PATH/@"$DEST_DECRYPT"@ && $TARGET_TEST -d $TARGET_PATH/"$DEST_DECRYPT"; then<br />
echo "Verschluesselter Zielordner $TARGET_DECRYPT bereits eingehangen..." >> $LOG<br />
elif $TARGET_TEST -d $TARGET_PATH/@"$DEST_DECRYPT"@ && $TARGET_TEST ! -d $TARGET_PATH/"$DEST_DECRYPT"; then<br />
echo "Verschluesselter Zielordner $TARGET_DECRYPT nicht eingehangen..." >> $LOG<br />
# Anhand des Key-Files versuchen einen verschluesselten Zielordner einbinden<br />
if test -f `dirname $0`/"$TARGET_DECRYPT".key; then<br />
echo "$TARGET_DECRYPT.key gefunden" >> $LOG<br />
echo "Verschluesselter Zielordner $TARGET_DECRYPT wird eingehangen..." >> $LOG<br />
KEYFILEDEST=$(ecryptfs-unwrap-passphrase `dirname $0`/"$TARGET_DECRYPT".key "\$1\$5YN01o9y")<br />
$SYNOSHARE_TARGET /usr/syno/sbin/synoshare --enc_mount "$DEST_DECRYPT" "$KEYFILEDEST" >> $LOG<br />
sleep 20<br />
if $TARGET_TEST -d $TARGET_PATH/@"$DEST_DECRYPT"@ && $TARGET_TEST -d $TARGET_PATH/"$DEST_DECRYPT"; then<br />
echo "Verschluesselter Zielordner $TARGET_DECRYPT wurde eingehangen..." >> $LOG<br />
elif $TARGET_TEST -d $TARGET_PATH/@"$DEST_DECRYPT"@ && $TARGET_TEST ! -d $TARGET_PATH/"$DEST_DECRYPT"; then<br />
echo "Verschluesselter Zielordner $TARGET_DECRYPT konnte nicht eingehangen werden..." >> $LOG<br />
fi<br />
else<br />
echo "Kein Keyfile fuer $TARGET_DECRYPT gefunden! Verschluesselte Ordner muessen eingehangen werden!"<br />
fi<br />
fi<br />
if $TARGET_TEST ! -d $TARGET_PATH/"$DEST_DECRYPT"; then<br />
if [ -z "$STOP" ]; then<br />
STOP="Zielordner /$TARGET_DECRYPT nicht gefunden!"<br />
fi<br />
fi<br />
fi<br />
fi<br />
<br />
# Quellordner checken<br />
#-------------------------------------------------------------------------<br />
IFS="<br />
"<br />
for SHARE in $SOURCES; do<br />
if [[ ${SHARE:0:1} != \/ ]] ; then<br />
SHARE="/$SHARE"<br />
fi<br />
SHARE_ESCAPE=$(echo $SHARE | sed -e 's/ /\\ /g')<br />
SHARE_CUT="${SHARE#*/}"<br />
SHARE_DECRYPT="${SHARE_CUT%%/*}"<br />
SHARE_DECRYPT_ESCAPE=$(echo $SHARE_DECRYPT | sed -e 's/ /\\ /g')<br />
IFS="$BACKIFS"<br />
if [ -n "$SSH_FROM" ]; then<br />
SOURCE_DECRYPT="$SHARE_DECRYPT_ESCAPE"<br />
else<br />
SOURCE_DECRYPT="$SHARE_DECRYPT"<br />
fi<br />
if $SOURCE_TEST ! -d $SOURCE_PATH/@"$SOURCE_DECRYPT"@ && $SOURCE_TEST -d $SOURCE_PATH/"$SOURCE_DECRYPT"; then<br />
echo "Quellordner $SHARE_DECRYPT wurde lokalisiert..." >> $LOG<br />
elif $SOURCE_TEST -d $SOURCE_PATH/@"$SOURCE_DECRYPT"@ && $SOURCE_TEST -d $SOURCE_PATH/"$SOURCE_DECRYPT"; then<br />
echo "Verschluesselter Quellordner $SHARE_DECRYPT bereits eingehangen..." >> $LOG<br />
elif $SOURCE_TEST -d $SOURCE_PATH/@"$SOURCE_DECRYPT"@ && $SOURCE_TEST ! -d $SOURCE_PATH/"$SOURCE_DECRYPT"; then<br />
echo "Verschluesselter Quellordner $SHARE_DECRYPT nicht eingehangen..." >> $LOG<br />
# Anhand des Key-Files versuchen einen verschluesselten Quellordner einbinden<br />
if test -f `dirname $0`/"$SHARE_DECRYPT".key; then<br />
echo "$SHARE_DECRYPT.key gefunden" >> $LOG<br />
echo "Verschluesselter Quellordner $SHARE_DECRYPT wird eingehangen..." >> $LOG<br />
KEYFILESHARE=$(ecryptfs-unwrap-passphrase `dirname $0`/"$SHARE_DECRYPT".key "\$1\$5YN01o9y")<br />
$SYNOSHARE_SOURCE /usr/syno/sbin/synoshare --enc_mount "$SHARE_DECRYPT" "$KEYFILESHARE" >> $LOG<br />
sleep 20<br />
if $SOURCE_TEST -d $SOURCE_PATH/@"$SOURCE_DECRYPT"@ && $SOURCE_TEST -d $SOURCE_PATH/"$SOURCE_DECRYPT"; then<br />
echo "Verschluesselter Quellordner $SHARE_DECRYPT wurde eingehangen..." >> $LOG<br />
elif $SOURCE_TEST -d $SOURCE_PATH/@"$SOURCE_DECRYPT"@ && $SOURCE_TEST ! -d $SOURCE_PATH/"$SOURCE_DECRYPT"; then<br />
echo "Verschluesselter Quellordner $SHARE_DECRYPT konnte nicht eingehangen werden..." >> $LOG<br />
fi<br />
else<br />
STOP="Kein Keyfile fuer $SHARE_DECRYPT gefunden! Verschluesselte Ordner muessen eingehangen werden! Datensicherung ABGEBROCHEN..."<br />
fi<br />
fi<br />
done<br />
<br />
# Ziel definieren<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ]; then<br />
if [ -n "$SSH_TO" ] && [ -n "$TARGET" ]; then<br />
DEST_FULL=$($TOSSH "echo $TARGET_PATH/$TARGET_DECRYPT_ESCAPE")<br />
DEST_CUT="${DEST_FULL#*/}"<br />
DEST_VOL="${DEST_CUT%%/*}"<br />
if [ $TARGETDS -eq 1 ]; then<br />
DESTTARGET="/$DEST_VOL$TARGET_ESCAPE"<br />
else<br />
DESTTARGET="$TARGET_ESCAPE"<br />
fi<br />
if [ $HOSTNAME -eq 1 ]; then<br />
DESTINATION="$DESTTARGET/$NAME"<br />
else<br />
DESTINATION="$DESTTARGET"<br />
fi<br />
elif [ -z "$SSH_TO" ] && [ "$NOTTOSCRIPT" -eq 0 ] && [ -z "$TARGET" ]; then<br />
if [ $HOSTNAME -eq 1 ]; then<br />
DESTINATION="`dirname $0`$TARGET_EMPTY/$NAME"<br />
else<br />
DESTINATION="`dirname $0`$TARGET_EMPTY"<br />
fi<br />
elif [ -z "$SSH_TO" ] && [ "$NOTTOSCRIPT" -eq 1 ] && [ -n "$TARGET" ]; then<br />
DEST_FULL=$(echo $TARGET_PATH/"$TARGET_DECRYPT")<br />
DEST_CUT="${DEST_FULL#*/}"<br />
DEST_VOL="${DEST_CUT%%/*}"<br />
if [ -n "$TARGETDS" ]; then<br />
DESTTARGET="/$DEST_VOL$TARGET"<br />
else<br />
DESTTARGET="$TARGET"<br />
fi<br />
if [ $HOSTNAME -eq 1 ]; then<br />
DESTINATION="$DESTTARGET/$NAME"<br />
else<br />
DESTINATION="$DESTTARGET"<br />
fi<br />
elif [ -z "$SSH_TO" ] && [ "$NOTTOSCRIPT" -eq 0 ]; then<br />
if [ $HOSTNAME -eq 1 ]; then<br />
DESTINATION="`dirname $0`$TARGET/$NAME"<br />
else<br />
DESTINATION="`dirname $0`$TARGET"<br />
fi<br />
fi<br />
mkdir -p "$DESTINATION"<br />
if [ -n "$SSH_TO" ] && [ "$NOTTOSCRIPT" -eq 0 ]; then<br />
STOP="Bei SSH_TO muss NOTTOSCRIPT gesetzt werden!" >> $LOG<br />
elif [ -n "$SSH_TO" ] && [ "$NOTTOSCRIPT" -eq 1 ] && [ -n "$TARGET" ]; then<br />
if $TARGET_TEST -d $TARGET_PATH/$TARGET_DECRYPT_ESCAPE; then<br />
$TOSSH mkdir -p "$DESTINATION"<br />
fi<br />
fi<br />
fi<br />
<br />
# Check ob Zielordner erstellt wurde bzw. vorhanden war.<br />
if $TARGET_TEST ! -d "$DESTINATION"; then<br />
if [ -z "$STOP" ]; then<br />
STOP="Zielordner $TARGET konnte nicht erstellt werden bzw. ist nicht vorhanden !"<br />
fi<br />
fi<br />
<br />
echo "" >> $LOG<br />
echo "$HR" >> $LOG<br />
echo "" >> $LOG<br />
# Beginn der RSync-Datensicherung<br />
#--------------------------------------------------------------------------<br />
IFS="<br />
"<br />
for SHARE in $SOURCES; do<br />
if [ -z "$STOP" ]; then<br />
echo "" >> $LOG<br />
if [[ ${SHARE:0:1} != \/ ]] ; then<br />
SHARE="/$SHARE"<br />
fi<br />
SHARE_ESCAPE=$(echo $SHARE | sed -e 's/ /\\ /g')<br />
SHARE_CUT="${SHARE#*/}"<br />
SHARE_DECRYPT="${SHARE_CUT%%/*}"<br />
IFS="$BACKIFS"<br />
unset FORERROR<br />
if [ -n "$SSH_FROM" ]; then<br />
SOURCE="$SHARE_ESCAPE"<br />
else<br />
SOURCE="$SHARE"<br />
fi<br />
<br />
if $SOURCE_TEST ! -d $SOURCE_PATH"$SOURCE"; then<br />
ERROR="Quellordner $SHARE nicht erreichbar..." >> $LOG<br />
FORERROR="1"<br />
elif $SOURCE_TEST -d $SOURCE_PATH"$SOURCE"; then<br />
echo "Quellordner $SHARE erreichbar." >> $LOG<br />
fi<br />
if [ $FROMTHISDEVICE -eq 1 ] && [ -z "$SSH_FROM" ]; then<br />
SOURCE="`dirname $0`$SHARE"<br />
elif [ $FROMTHISDEVICE -eq 0 ] && [ -z "$SSH_FROM" ]; then<br />
SOURCE="$SHARE"<br />
fi<br />
<br />
if [ -z "$STOP" ] && [ -z "$FORERROR" ]; then<br />
# SSH-SSH_FROM RSync-Datensicherung VON einer entfernten DS oder komp. Server<br />
#--------------------------------------------------------------------------<br />
if [ -n "$SSH_FROM" ] && [ -z "$SSH_TO" ] && [ -n "$DESTINATION" ]; then<br />
echo "$HR" >> $LOG<br />
echo "Starte Datensicherung: $REMOTEHOST$SHARE nach $DESTINATION" >> $LOG<br />
echo "$HR" >> $LOG<br />
if [ $SOURCEDS -eq 1 ]; then<br />
rsync -e "$FROMRSYNC" $SYNCOPT $SSH_FROM:/volume*"$SOURCE" $LOGSTAT $EXCLUDE $RECYCLE "$DESTINATION" >> $LOG<br />
RSYNC_EXIT="$?"<br />
elif [ $SOURCEDS -ne 1 ]; then<br />
rsync -e "$FROMRSYNC" $SYNCOPT $SSH_FROM:"$SOURCE" $LOGSTAT $EXCLUDE $RECYCLE "$DESTINATION" >> $LOG<br />
RSYNC_EXIT="$?"<br />
fi<br />
# SSH-SSH_TO RSync-Datensicherung AUF eine entfernte DS oder komp. Server<br />
#--------------------------------------------------------------------------<br />
elif [ -n "$SSH_TO" ] && [ -z "$SSH_FROM" ] && [ -n "$DESTINATION" ]; then<br />
echo "$HR" >> $LOG<br />
echo "Starte Datensicherung: $LOKALHOST$SHARE nach $DESTINATION" >> $LOG<br />
echo "$HR" >> $LOG<br />
if [ $SOURCEDS -eq 1 ] && [ $FROMTHISDEVICE -ne 1 ]; then<br />
rsync -e "$TORSYNC" $SYNCOPT /volume*"$SOURCE" $LOGSTAT $EXCLUDE $RECYCLE $SSH_TO:"$DESTINATION" >> $LOG<br />
RSYNC_EXIT="$?"<br />
elif [ $SOURCEDS -ne 1 ] || [ $FROMTHISDEVICE -eq 1 ]; then<br />
rsync -e "$TORSYNC" $SYNCOPT "$SOURCE" $LOGSTAT $EXCLUDE $RECYCLE $SSH_TO:"$DESTINATION" >> $LOG<br />
RSYNC_EXIT="$?"<br />
fi<br />
# RSync- Lokale Datensicherung auf Volume, USB- oder SATA-Datentr�ger<br />
#-------------------------------------------------------------------------<br />
elif [ -z "$SSH_TO" ] && [ -z "$SSH_FROM" ] && [ -n "$DESTINATION" ]; then<br />
echo "$HR" >> $LOG<br />
echo "Starte Datensicherung: $REMOTEHOST$SHARE nach $DESTINATION" >> $LOG<br />
echo "$HR" >> $LOG<br />
if [ $SOURCEDS -eq 1 ] && [ $FROMTHISDEVICE -ne 1 ]; then<br />
rsync $SYNCOPT /volume*"$SOURCE" $LOGSTAT $EXCLUDE $RECYCLE "$DESTINATION" >> $LOG<br />
RSYNC_EXIT="$?"<br />
elif [ $SOURCEDS -ne 1 ] || [ $FROMTHISDEVICE -eq 1 ]; then<br />
rsync $SYNCOPT "$SOURCE" $LOGSTAT $EXCLUDE $RECYCLE "$DESTINATION" >> $LOG<br />
RSYNC_EXIT="$?"<br />
fi<br />
fi<br />
echo "" >> $LOG<br />
if [ $RSYNC_EXIT -ne 0 ]; then<br />
RSYNC_CODE="$RSYNC_EXIT"<br />
fi<br />
fi<br />
fi<br />
done<br />
<br />
# RSync Exit-Code = Fehlermeldung<br />
#-------------------------------------------------------------------------<br />
if [ -n "$RSYNC_CODE" ]; then<br />
# Exit-Code: Entfernter Server ausgeschaltet?<br />
if [ $RSYNC_CODE -eq 43 ]; then<br />
echo "RSync-Code $RSYNC_CODE: Entfernte DS oder RSync komp. Server nicht Online? Bitte RSYNC Port kontrollieren!" >> $LOG<br />
# Exit-Code: DSL-Verbindung getrennt?<br />
elif [ $RSYNC_CODE -eq 255 ]; then<br />
echo "RSync-Code $RSYNC_CODE: Bitte Internetverbindung oder RSYNC Port kontrollieren!" >> $LOG<br />
# Exit-Code ausgeben...<br />
elif [ $RSYNC_CODE -ne 0 ]; then<br />
echo "RSync Fehlermeldung (Exit Code): $RSYNC_CODE" >> $LOG<br />
fi<br />
fi<br />
<br />
# RSync Exit-Code = Erfolgreich bzw. Unvollständig<br />
#-------------------------------------------------------------------------<br />
if [ -z "$RSYNC_CODE" ] && [ -z "$STOP" ] && [ -z "$ERROR" ]; then<br />
echo "$HR" >> $LOG<br />
echo "RSync-Datensicherung erfolgreich. Sicherungsziel: $DESTINATION" >> $LOG<br />
if [ -z "$DSMNOTIFY" ]; then<br />
DSMNOTIFY="RSync-Datensicherung erfolgreich. Sicherungsziel: $DESTINATION"<br />
fi<br />
# Signalausgabe - Datensicherung erfolgreich<br />
if [ $SIGNAL -eq 1 ]; then<br />
echo 3 >/dev/ttyS1; echo 8 >/dev/ttyS1<br />
sleep 2<br />
fi<br />
# RSync Exit-Code = Fehlermeldung<br />
elif [ $RSYNC_CODE -ne 0 ] || [ -n "$STOP" ] || [ -n "$ERROR" ]; then<br />
echo "$HR" >> $LOG<br />
echo "RSync-Datensicherung unvollstaendig oder fehlgeschlagen - Sicherungsziel: $DESTINATION" >> $LOG<br />
if [ -z "$DSMNOTIFY" ]; then<br />
DSMNOTIFY="RSync-Datensicherung unvollstaendig oder fehlgeschlagen - Bitte Protokoll prüfen!"<br />
fi<br />
# Signalausgabe - Datensicherung fehlgeschlagen<br />
if [ $SIGNAL -eq 1 ]; then<br />
echo 2 >/dev/ttyS1; sleep 1; echo 2 >/dev/ttyS1; sleep 1; echo 2 >/dev/ttyS1; sleep 1; echo 8 >/dev/ttyS1<br />
fi<br />
fi<br />
echo "$HR" >> $LOG; echo "" >> $LOG<br />
if [ -n "$STOP" ]; then<br />
echo "FEHLER: $STOP" >> $LOG<br />
fi<br />
if [ -n "$ERROR" ]; then<br />
echo "FEHLER: $ERROR" >> $LOG<br />
fi<br />
<br />
# DSM-Systemkonfiguration exportieren<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ] && [ "$DSM_EXPORT" -eq 1 ] && [ -z "$RSYNC_CODE" ]; then<br />
if [ -n "$SSH_FROM" ] && [ -z "$SSH_TO" ] && [ -n "$SOURCEDS" ]; then<br />
$FROMSSH /usr/syno/bin/synoconfbkp export --filepath DSMConfig_TEMP.dss<br />
mkdir -p "$DESTINATION"/@DSMConfig<br />
$SCP -r $SSH_USER@$SSH_FROM:DSMConfig_TEMP.dss "$DESTINATION"/@DSMConfig/DSMConfig_"$DATE"_$REMOTEHOST.dss<br />
$FROMSSH rm -rf DSMConfig_TEMP.dss<br />
echo "Sicherung der DSM-Systemkonfiguration von $REMOTEHOST erfolgreich zu $LOKALHOST kopiert.." >> $LOG<br />
echo "" >> $LOG<br />
elif [ -z "$SSH_FROM" ] && [ -n "$SSH_TO" ]; then<br />
synoconfbkp export --filepath `dirname $0`/@DSMConfig/DSMConfig_"$DATE"_$LOKALHOST.dss<br />
$TOSSH mkdir -p "$DESTINATION"/@DSMConfig<br />
$SCP -r `dirname $0`/@DSMConfig/*.dss $SSH_USER@$SSH_TO:"$DESTINATION"/@DSMConfig/<br />
rm -rf `dirname $0`/@DSMConfig<br />
echo "Sicherung der DSM-Systemkonfiguration von $LOKALHOST erfolgreich zu $REMOTEHOST kopiert.." >> $LOG<br />
echo "" >> $LOG<br />
elif [ -z "$SSH_FROM" ] && [ -z "$SSH_TO" ]; then<br />
mkdir -p "$DESTINATION"/@DSMConfig<br />
synoconfbkp export --filepath "$DESTINATION"/@DSMConfig/DSMConfig_"$DATE"_$LOKALHOST.dss<br />
echo "Lokale Sicherung der DSM-Systemkonfiguration erfolgreich." >> $LOG<br />
echo "" >> $LOG<br />
fi<br />
fi<br />
<br />
# Rotationszyklus für das Löschen von @Recycle, @Logfiles und @DSMConfig<br />
#-------------------------------------------------------------------------<br />
# Dateien im Ordner @Recycle die älter als x Tage sind, löschen.<br />
if [ -z "$STOP" ] && [ -z "$RSYNC_CODE" ]; then<br />
if $TARGET_TEST -d "$DESTINATION"/@Recycle/; then<br />
if [ -z "$STOP" ] && [ -n "$RECYCLE_ROTATE" ] && [ -z "$ERROR" ]; then<br />
$FIND "$DESTINATION"/@Recycle/* -type d -mtime +$RECYCLE_ROTATE -exec rm -rf {} \;<br />
echo "HINWEIS: Daten aus dem Ordner /@Recycle, die mehr als $RECYCLE_ROTATE Tage alt waren, wurden geloescht." >> $LOG<br />
echo "" >> $LOG<br />
fi<br />
fi<br />
# Dateien im Ordner @Logfiles die älter als x Tage sind, löschen.<br />
if $TARGET_TEST -d `dirname $0`/@Logfiles/; then<br />
if [ -z "$STOP" ] && [ -n "$LOGFILES_ROTATE" ] && [ -z "$ERROR" ]; then<br />
find `dirname $0`/@Logfiles -name "*.log" -type f -mtime +$LOGFILES_ROTATE -exec rm {} \;<br />
echo "HINWEIS: Daten aus dem Ordner /@Logfiles, die mehr als $LOGFILES_ROTATE Tage alt waren, wurden geloescht." >> $LOG<br />
echo "" >> $LOG<br />
fi<br />
fi<br />
# Dateien im Ordner @DSMConfig die älter als x Tage sind, löschen.<br />
if $TARGET_TEST -d "$DESTINATION"/@DSMConfig/; then<br />
if [ -z "$STOP" ] && [ -n "$DSMCONFIG_ROTATE" ] && [ -z "$ERROR" ]; then<br />
$FIND "$DESTINATION"/@DSMConfig -name "*.dss" -type f -mtime +$DSMCONFIG_ROTATE -exec rm {} \;<br />
echo "HINWEIS: Daten aus dem Ordner /@DSMConfig, die mehr als $DSMCONFIG_ROTATE Tage alt waren, wurden geloescht." >> $LOG<br />
echo "" >> $LOG<br />
fi<br />
fi<br />
fi<br />
<br />
# Verschlüsselte Shares wieder aushängen..<br />
#-------------------------------------------------------------------------<br />
if [ $UNMOUNT -ne 0 ] && [ -n "$TARGETDS" ]; then<br />
if [ $UNMOUNT -ne 2 ]; then<br />
IFS="<br />
"<br />
TARGET_ESCAPE=$(echo $TARGET | sed -e 's/ /\\ /g')<br />
TARGET_DECRYPT_ESCAPE=$(echo $TARGET_DECRYPT | sed -e 's/ /\\ /g')<br />
IFS="$BACKIFS"<br />
if [ -n "$SSH_TO" ]; then<br />
DEST_DECRYPT="$TARGET_DECRYPT_ESCAPE"<br />
else<br />
DEST_DECRYPT="$TARGET_DECRYPT"<br />
fi<br />
if $TARGET_TEST -d /volume*/@"$DEST_DECRYPT"@ && $TARGET_TEST -d /volume*/"$DEST_DECRYPT"; then<br />
echo "Ziel: $TARGET_DECRYPT wurde ausgehangen" >> $LOG<br />
$SYNOSHARE_TARGET /usr/syno/sbin/synoshare --enc_unmount "$DEST_DECRYPT" >> $LOG<br />
sleep 10<br />
fi<br />
fi<br />
fi<br />
if [ $UNMOUNT -ne 0 ] && [ -n "$SOURCEDS" ]; then<br />
if [ $UNMOUNT -ne 3 ]; then<br />
IFS="<br />
"<br />
for SHARE in $SOURCES; do<br />
SHARE_ESCAPE=$(echo $SHARE | sed -e 's/ /\\ /g')<br />
SHARE_CUT="${SHARE#*/}"<br />
SHARE_DECRYPT="${SHARE_CUT%%/*}"<br />
SHARE_DECRYPT_ESCAPE=$(echo $SHARE_DECRYPT | sed -e 's/ /\\ /g')<br />
IFS="$BACKIFS"<br />
if [ -n "$SSH_FROM" ]; then<br />
SOURCE_DECRYPT="$SHARE_DECRYPT_ESCAPE"<br />
else<br />
SOURCE_DECRYPT="$SHARE_DECRYPT"<br />
fi<br />
if $SOURCE_TEST -d /volume*/@"$SOURCE_DECRYPT"@ && $SOURCE_TEST -d /volume*/"$SOURCE_DECRYPT"; then<br />
echo "Quelle: $SHARE_DECRYPT wurde ausgehangen" >> $LOG<br />
$SYNOSHARE_SOURCE /usr/syno/sbin/synoshare --enc_unmount "$SHARE_DECRYPT" >> $LOG<br />
sleep 10<br />
fi<br />
done<br />
fi<br />
fi<br />
unset KEYFILEPW<br />
<br />
# Entfernten Server herunterfahren<br />
#-------------------------------------------------------------------------<br />
if [ $SHUTDOWN -ne 0 ] && [ -z "$RSYNC_CODE" ] && [ -z "$STOP" ] && [ -z "$ERROR" ]; then<br />
if [ -n "$SSH_FROM" ]; then<br />
$FROMSSH poweroff<br />
echo "Remoteserver $SSH_FROM wird heruntergefahren." >> $LOG<br />
elif [ -n "$SSH_TO" ]; then<br />
$TOSSH poweroff<br />
echo "Remoteserver $SSH_TO wird heruntergefahren." >> $LOG<br />
fi<br />
fi<br />
<br />
# Benachrichtigung an die DSM-Administratorengruppe sowie E-Mail senden<br />
#-------------------------------------------------------------------------<br />
if [ -n "$DSMNOTIFY" ]; then<br />
synodsmnotify @administrators "Script: $SCRIPTNAME" "$DSMNOTIFY"<br />
fi<br />
if [ -n "$EMAIL" ]; then<br />
if [ "$EMAILFAIL" -eq 1 ] && [ -z "$RSYNC_CODE" ] || [ -n "$STOP" ] || [ -n "$ERROR" ]; then<br />
ssmtp $EMAIL < $LOG<br />
elif [ "$EMAILFAIL" -eq 0 ]; then<br />
ssmtp $EMAIL < $LOG<br />
fi<br />
fi<br />
<br />
# Script beenden...<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ] && [ -z "$RSYNC_CODE" ] && [ -z "$ERROR" ] && [ "$AUTORUN" -eq 1 ]; then<br />
exit 100<br />
else<br />
exit $?<br />
fi<br />
<br />
</pre><br />
<br />
=Erstellen eines RSA-Keys für den Aufbau einer SSH-Verbindung=<br />
Es soll eine dateibasierte Datensicherung mittels RSync von Diskstation "A" (Produktivsystem) auf Diskstation "B" (Backupsystem) angelegt werden. Dabei übernimmt das Backupsystem die Aufgabe des Servers, worüber der Verbindungsaufbau und der eigentliche Sicherungsvorgang initiiert wird. Das Produktivsystem übernimmt somit die Aufgabe des Client und muß dem ganzen Vorgang nur zustimmen. Um dies zu ermöglichen muß im Vorfeld ein RSA-Schlüssel auf dem Backupsystem erzeugt und dem Produktivsystem der öffentliche Schlüssel mitgeteilt werden, um so den automatischen Verbindungsaufbau per SSH zu ermöglichen. Nachdem die SSH-Verbindung erfolgreich aufgebaut wurde, wird der eigentliche rsync-Befehl abgesetzt und somit die Datensicherung ausgelöst. Um auch in die Gegenrichtung sichern zu können, muss die RSA-Key Einrichtung dementsprechend gedreht werden, so das am Ende sowohl Diskstation "A" als auch Diskstation "B" Quelle als auch Ziel der Datensicherung darstellen können.<br />
<br />
Im folgenden werden alle Einstellungen für den Benutzer '''root''' getroffen, da nur unter diesem Benutzer die Signalausgabe als auch das Sichern der DSM-Konfiguration funktioniert. Wer hier lieber als "admin" oder vielleicht sogar als eingeschränkter Benutzer "rsync" arbeiten möchte, muss nachfolgend an den entsprechenden Stellen den gewünschten Benutzernamen einsetzen. Das hier verwendete Homeverzeichnis des Benutzer "root" wird im folgenden nur in dessen Kurzform mit ~/ angesprochen, wobei hier immer auf /root verwiesen wird. Alle anderen Benutzerkonten befinden sich im Homeverzeichnis /home/[BENUTZERNAME] bzw. richtigerweise unter /var/services/homes/[BENUTZERNAME].<br />
<br />
(Nachfolgend symbolisiert das Zeichen "$" nur den Zeilenanfang und wird nicht mit geschrieben)<br />
<br />
<br />
'''Hinweis zum Loginvorgang bis DSM 5.2 für den Benutzer "root"'''<br />
<pre><br />
Login als Benutzer "root" mit dem Passwort des DSM-Benutzer "admin"<br />
</pre><br />
<br />
'''Hinweis zum Loginvorgang ab DSM 6 für den Benutzer "root"'''<br />
<pre><br />
Login als Benutzer "admin" mit dem Passwort des DSM-Benutzer "admin"<br />
<br />
"root"-Zugriff erhält man dann über die Eingabe von...<br />
<br />
$ sudo -i<br />
<br />
...und gibt abermals das Password des DSM-Benutzer "admin" ein.<br />
</pre> <br />
<br />
<br />
'''Beginnen wir auf dem Server der "Diskstation B" oder besser gesagt, dem Backupsystem'''<br />
<br />
Auf der Konsole der DS als Benutzer "root" einloggen. <br />
Erstellen des RSA-Schlüssels mit...<br />
<br />
<pre>$ ssh-keygen -t rsa</pre><br />
<br />
Bei der Erstellung wird man nach Speicherort und Passphrase gefragt...<br />
<br />
<pre><br />
Enter file in which to save the key (/root/.ssh/id_rsa):<br />
Enter passphrase (empty for no oassphrase):<br />
Enter same passphrase again:<br />
</pre><br />
<br />
... hier bitte nichts eintragen, sondern einfach nur mit der "Return-Taste" bestätigen. Nach der Ausführung werden im Homeverzeichnis des Benutzer "root" folgende Ordner und Dateien erstellt:<br />
<br />
<pre><br />
~/.ssh<br />
~/.ssh/id_rsa<br />
~/.ssh/id_rsa.pub<br />
</pre><br />
<br />
An dieser Stelle sollte man gleich noch die Ordner- und Dateirechte anpassen.<br />
<br />
<pre>$ chmod 0700 ~/.ssh<br />
$ chmod 0600 ~/.ssh/id_rsa*<br />
</pre><br />
<br />
Den Inhalt der Datei ~/.ssh/id_rsa.pub z.B. mit vi, nano oder dem AdminTool editieren und den Inhalt in die Zwischenablage kopieren.<br />
<br />
<pre>$ nano ~/.ssh/id_rsa.pub</pre><br />
<br />
Wichtig, wie hier im Beispiel gezeigt (RSA-Schlüssel wurde hier gekürzt) ist, das alles in einer Zeile steht...<br />
<br />
<pre>ssh-rsa AAAAB3NzaC1yc2..*gekürzt*...EAAAADAQABA3e root@Backupstation</pre><br />
<br />
'''Weiter gehts auf dem Client der "Diskstation A", also dem Produktivsystem.'''<br />
<br />
Auf der Konsole der DS als Benutzer "root" einloggen. Erstellen eines neuen Ornders<br />
<br />
<pre>$ mkdir ~/.ssh</pre><br />
<br />
Daraufhin wird unter ~/.ssh/ eine neue Datei namens "authorized_keys" erstellt...<br />
<br />
<pre>$ nano ~/.ssh/authorized_keys</pre><br />
<br />
...und der Inhalt aus der Zwischenablage, also der Inhalt aus der ~/.ssh/id_rsa.pub, die auf dem Backupsystem erstellt wurde, in die geöffnete Datei eingefügt. Nach dem Speichern und verlassen des Editors müssen auch hier noch die Ordner- und Dateirechte richtig gesetzt werden.<br />
<br />
<pre><br />
$ chmod 0700 ~/.ssh<br />
$ chmod 0600 ~/.ssh/authorized_keys<br />
</pre><br />
<br />
'''Zurück auf der Konsole der Backupstation.'''<br />
<br />
Als Benutzer "root" auf der DS einloggen und als Erstes die SSH-Verbindung prüfen mit...<br />
<br />
<pre>$ ssh root@IP-DER-DISKSTATION_A -p 22</pre><br />
<br />
Der Verbindungsaufbau möchte vom System nochmal mit "yes" bestätigt werden um anschließend auf der Konsole des Produktivsystemes zu landen. Diese Verbindung kann man durch die Eingabe eines...<br />
<br />
<pre>$ exit</pre><br />
<br />
... wieder beenden. Durch den Verbindungsaufbau wurde nun in der Datei ~/.ssh/known_hosts ein neuer Eintrag hinzugefügt, der die Zugangsdaten zur Diskstation beinhaltet. Kontrollieren kann man das mit...<br />
<br />
<pre>$ nano ~/.ssh/known_hosts</pre><br />
<br />
Nachdem alles gut verlaufen ist, wird die Konsole wieder geschlossen mit...<br />
<br />
<pre>$ exit</pre><br />
<br />
=Release Notes=<br />
<br />
'''Release Notes vom 10.05.2016'''<br />
(Knapp 150 Zeilen Script-Code wurden seit dem letzen Update hinzugefügt.)<br />
* Es wurde eine neue Variable (MAC) geschaffen um entfernte Server per WOL zu starten.<br />
* Es wurde eine neue Variable (SLEEP) geschaffen um dem entfernten Server ein Zeitfenster zum starten zu geben.<br />
* Es wurde eine neue Variable (SHUTDOWN) geschaffen um entfernte Server auszuschalten.<br />
* Anhand der drei grade genannten Variablen können demnach entfernte Server per WOL geweckt, die eigentliche Datensicherung ausgeführt werden um im Anschluss den entfernten Server bei Bedarf wieder auszuschalten. <br />
* Es wurde eine neue Variable (FROMTHISDEVICE) geschaffen um Inhalte eines USB/SATA-Datenräger auf eine Diskstation oder einem entfernten, RSync-kompatiblen Server zu sichern.<br />
* Quellen und Ziel können ab sofort auch Leerzeichen enthalten. <br />
<br />
'''Release Notes vom 01.05.2016'''<br />
* Es wurde eine neue Variable (SSH_PORT) geschaffen um einen abweichenden SSH-Port angeben zu können.<br />
* Es wurde eine neue Variable (RSYNC_PORT) geschaffen um einen abweichenden RSync-Port angeben zu können.<br />
* Es wurde eine neue Variable (EMAILFAIL) geschaffen um nur bei einer Störung per E-Mail benachrichtigt zu werden.<br />
* Alle "schaltbaren" Benutzer-Variablen wurden nach dem Schema "0" = aus / "1" = an umstrukturiert. Ursprünglich wurde der Wert bei Zustand "aus" einfach leer gelassen, also "". <br />
* Kommentare im Benutzer-Eingabebereich des Scripts wurden optimiert.<br />
* Neben der bereits funktionierenden Sicherung von und auf eine weitere Diskstation funktioniert jetzt auch das Sichern von und auf einen RSync-kompatible Server. Das Script erkennt hierbei automatisch ob es sich um eine Diskstation oder einen RSync-kompatiblen Server handelt und passt die Sicherungs-Pfade dementsprechend an. Diskstation arbeiten i.d.R. mit einem /volume[x], RSync-kompatible Server tun das in der Regel nicht.<br />
* Viele weitere Detailverbesserungen, die hier nicht alle aufgeführt werden können. Nur so viel... das Script ist um weitere 100 Zeilen Scipt-Code gewachsen.<br />
<br />
=Externe Links=<br />
*[http://www.synology-forum.de/showthread.html?72786-Projekt-rsync-Alternative-dateibasierte-Datensicherung Forum Post]<br />
*[http://wpkg.org/Rsync_exit_codes rsync Exit Codes]<br />
*[http://www.synology-wiki.de/index.php/LEDs_und_Buttons LEDs und Buttons (zur Signalsteuerung)]</div>Itommeshttps://www.synology-wiki.de/index.php?title=Dateibasierte_RSync-Datensicherung_auf_externen_Datentr%C3%A4ger_oder_RSync_kompatiblen_Server/Suchscriptvarianten&diff=7081Dateibasierte RSync-Datensicherung auf externen Datenträger oder RSync kompatiblen Server/Suchscriptvarianten2016-05-19T18:24:16Z<p>Itommes: </p>
<hr />
<div>'''Variante 1: Scripte anhand ihrer vollständigen Script-Dateinamen auf extern angeschlossenen Datenträgern suchen und ausführen'''<br />
<br />
<pre><br />
#!/bin/sh<br />
<br />
# Kurze Funktionsbeschreibung<br />
# ------------------------------------------------------------------------<br />
# Das Script kann manuell oder automatisiert über den Aufgabenplaner |<br />
# als "root" ausgeführt werden, je nachdem ob der externe Datenträger |<br />
# temporär oder permanent mit der DS verbunden wird. |<br />
# Nach dem Start des Scriptes werden alle USB- sowie SATA Anschlüsse der |<br />
# DS nach extern angeschlossenen Datenträgern durchsucht um im jeweiligen|<br />
# Wurzelverzeichnis ein oder mehrere abgelegte Scripte zu lokalisieren. |<br />
# Es besteht also die Möglichkeit mehrere Scripte auszuführen, die dazu |<br />
# noch auf unterschiedlichen Datenträgern liegen. Dabei ist es auch nicht|<br />
# zwingend erforderlich, das alle Script permanent verfügbar sein müssen.|<br />
# Wird ein Script oder mehrere Scripte gefunden, werden diese |<br />
# ausgeführt und somit das eigentliche Backupsystem angestoßen. |<br />
# Im Vorfeld muß natürlich noch das rsync.sh Script den jeweiligen |<br />
# Bedürfnissen angepasst werden. |<br />
# ------------------------------------------------------------------------<br />
SCRIPTNAME="Diskstation-Backup.sh"<br />
<br />
# ------------------------------------------------------------------------<br />
# Ab hier bitte nichts mehr ändern |<br />
# ------------------------------------------------------------------------<br />
for SCRIPT in $SCRIPTNAME<br />
do <br />
# Durchsuche volumeUSB1<br />
if [ -f /volumeUSB1/usbshare/$SCRIPT ]; then<br />
sh /volumeUSB1/usbshare/$SCRIPT<br />
fi<br />
# Durchsuche volumeUSB2<br />
if [ -f /volumeUSB2/usbshare/$SCRIPT ]; then<br />
sh /volumeUSB2/usbshare/$SCRIPT<br />
fi<br />
# Durchsuche volumeUSB3<br />
if [ -f /volumeUSB3/usbshare/$SCRIPT ]; then<br />
sh /volumeUSB3/usbshare/$SCRIPT<br />
fi<br />
# Durchsuche volumeSATA<br />
if [ -f /volumeSATA/satashare/$SCRIPT ]; then<br />
sh /volumeSATA/satashare/$SCRIPT<br />
fi<br />
done<br />
</pre><br />
<br />
<br />
----<br />
<br />
<br />
'''Variante 2: Scripte anhand einer Zeichenkette auf extern angeschlossenen Datenträgern sowie auf der Diskstation selber suchen, ausschließen oder ausführen'''<br />
<br />
<br />
<pre><br />
#!/bin/sh<br />
<br />
# Zeichenkette auf der DS sowie angeschlossenen Datenträgern suchen<br />
# ------------------------------------------------------------------------<br />
# Hierbei werden nicht nur extern angeschlossene USB- und SATA |<br />
# Datenträger, sondern auch alle Volume innerhalb der Diskstation |<br />
# |<br />
# Es ist nicht erforderlich, den kompletten Script-Dateinamen anzugeben. |<br />
# Es reicht die Eingabe einer Zeichenkette, die in jedem auszuführenden |<br />
# Script-Dateinamen enthalten sein muss. |<br />
# Beispiele für die Zeichenkette: "start" = start_Backup_Filme.sh |<br />
# start_Filme.sh oder auch _start_Filme_sichern.sh |<br />
# |<br />
# Soll eine Scriptausführung bei einer bestimmten Zeichenkette verhindert|<br />
# werden, weil sich ein Script z.B. noch im Testbetrieb befindet, kann |<br />
# dies über die Variable EXCLUDE_STRING gesteuert werden. | <br />
# Beispiel: start_Backup_Filme.sh wird ausgeführt test_Backup_Filme.sh |<br />
# jedoch nicht. |<br />
#-------------------------------------------------------------------------<br />
SCRIPT_STRING="start"<br />
EXCLUDE_STRING="test"<br />
<br />
<br />
if [ "$EXCLUDE_STRING" ]<br />
then<br />
find /volume*/ -type f -name "*$SCRIPT_STRING*.sh" ! -name "*$EXCLUDE_STRING*" -exec sh {} \;<br />
else<br />
find /volume*/ -type f -name "*$SCRIPT_STRING*.sh" -exec sh {} \;<br />
fi<br />
</pre></div>Itommeshttps://www.synology-wiki.de/index.php?title=Dateibasierte_RSync-Datensicherung_auf_externen_Datentr%C3%A4ger_oder_RSync_kompatiblen_Server&diff=7079Dateibasierte RSync-Datensicherung auf externen Datenträger oder RSync kompatiblen Server2016-05-13T13:31:34Z<p>Itommes: /* Script 2: Das Ausführungs-Script "start-rsync.sh" */</p>
<hr />
<div>=Einleitung=<br />
<br />
'''Diese Anleitung zur dateibasierten RSync-Datensicherung bietet folgende Möglichkeiten...'''<br />
<br />
* Quelle(n) und/oder Ziel können unverschlüsselt sein<br />
* Quelle(n) und/oder Ziel können verschlüsselt sein<br />
* Quelle(n) und/oder Ziel können Leerzeichen im Ordernamen enthalten <br />
* Sicherung innerhalb eines /volume<br />
* Sicherung zwischen internen /volumes<br />
* Sicherung AUF lokal angeschlossene USB-/SATA-Datenträger sowie eingebundene Remote-Shares (nur unverschlüsselt)<br />
* Sicherung VON lokal angeschlossene USB-/SATA-Datenträger AUF internes /volume oder RSync-kompatiblen Server (auch verschlüsselt möglich)<br />
* Sicherung von einer entfernten DS oder RSync-kompatilben Server<br />
* Sicherung auf eine entfernte DS oder RSync-kompatilben Server<br />
* (weitere Konstellationen sind möglich, wurden jedoch nicht getestet) <br />
<br />
'''Hinweis:''' Die Verschlüsselung beruht hierbei auf der von Synology verwendeten Ordnerverschlüsselung (eCryptfs). Um verschlüsselte gemeinsame Ordner einbinden zu können, wird das Key-File also der Exportschlüssel benötigt. Diesen erhält man über die DSM-Systemsteuerung/Gemeinsame Ordner.<br />
<br />
=Anmerkung=<br />
Bevor ihr anfangt, nehmt bitte noch den Artikel "[[Wichtige Informationen zum Modden der Synology Stations]]" zur Kenntnis. <br />
<br />
Auch wenn dieses Script intensiv auf einwandfreie Funktion hin getestet wurde, so kann eine Fehlfunktion und demzufolge ein möglicher Datenverlust nicht ausgeschlossen werden. Aus diesem Grund solltet ihr das System erstmal mit unwichtigen Testdaten auf Herz und Nieren prüfen und sich mit der Arbeitsweise des Scripts und dessen Funktionen vertraut machen bevor ihr das ganze "produktiv" einsetzt. '''Ihr verwendet dieses Script auf eigene Gefahr.'''<br />
<br />
=Voraussetzungen=<br />
* Umgang mit dem DSM Aufgabenplaner <br />
* Umgang mit einem Editor seiner Wahl (z.B. Notepad++ oder dem DSM Text-Editor)<br />
* Grundkenntnisse im Umgang mit Shell-Scripten<br />
* Umgang mit der Konsole (bei Verwendung des SSH-Zuganges)<br />
* Zum versenden einer E-Mail muss im DSM unter Hauptmenü/Systemsteuerung/Benachrichtigung eine E-Mail Adresse hinterlegt sein.<br />
* Ein externer USB- oder SATA-Datenträger, eine weitere Synology Diskstation oder einen rsync-kompatiblen Server im Netzwerk.<br />
* Optional: autorun für externe Datenträger (Version 1.7)<br />
<br />
=Erläuterungen zur Funktion und Arbeitsweise=<br />
<br />
<pre><br />
Diskstation<br />
| |<br />
| '--> Aufgabenplaner ------------------------------<br />
| | |<br />
| '--> Such-Script -----> USB/SATA-Share ---> Ausführungs-<br />
| | Script<br />
'----------------> USB/SATA-Share --> autorun -------- (Key-Files)<br />
|<br />
.---------------------------'<br />
|<br />
V<br />
.---------- Quelle <--- definiere ---> Ziel----------.<br />
| | | |<br />
V '-- lokale/intern/extern --' V<br />
lokalisiere Quelle(n) lokalisiere Ziel<br />
| | <br />
| Protokoll/E-Mail |<br />
|--> Verschlüsselte | Verschlüsseltes <--|<br />
| Quelle(n) anhand der | Ziel anhand der |<br />
| Key-Files einhängen <--- aushängen ---> Key-Files einhängen |<br />
| | | | |<br />
| V | V |<br />
'--------------------->> !! DATENSICHERUNG !! >>---------------------'<br />
| |<br />
'-- lokale/intern/extern -'<br />
<br />
</pre><br />
<br />
<br />
'''Scriptausführung über den DSM-Aufgabenplaner'''<br />
<br />
Das manuelle oder automatisierte Aufrufen von Such- oder Ausführungs-Script wird komfortabel über den DSM - Aufgabenplaner gesteuert. Das Such-Script hat dabei die Aufgabe, das Ausführungs-Script zu lokalisieren und starten. Es wird jedoch nur bei der Verwendung einer lokalen Datensicherung auf einem angeschlossenen USB-/SATA-Datenträger eingesetzt, da sich hier die Datenträgerbezeichnungen durchaus mal ändern können. Für alle andern Aufgaben wird das Such-Script nicht benötigt weshalb man das Ausführungs-Script auch direkt über den DSM-Aufgabenplaner ansprechen kann, um es manuell oder automatisiert auszuführen. Dabei befindet sich das Ausführungs-Script innerhalb eines "gemeinsamen Ordners" auf der DS, also z.B. dort, wo die interne oder externe Datensicherung später gespeichert werden soll.<br />
<br />
<br />
'''Scriptausführung mittels "autorun"'''<br />
<br />
Eine weitere Möglichkeit der Scriptausführung bietet die Verwendung von "autorun", welches angeschlossene USB-/SATA-Datenträger automatisch erkennt und ein darauf liegendes Script Namens "autorun" ausführt, sollte es im Wurzel- bzw. Hauptverzeichnis des externen Datenträgers lokalisiert werden. Dieses Verhalten machen wir uns zunutze, indem wir entweder den Inhalt unseres Ausführungs-Scriptes per Copy & Paste mit dem des "autorun" Scripts überschreiben, oder wir legen uns eine neue Datei namens "autorun" an bzw. benennen unser Script einfach nach "autorun" um und legen es auf dem externen Datenträger ab. Somit erhält man die Möglichkeit durch einfaches anstecken des USB-Sticks eine lokale, interne oder externe Datensicherung auszuführen. Ein weiterer Vorteil von "autorun" ist der Tatsache geschuldet, das sich evtl. benötigte Key-Files (also der Exportschlüssel) für das Einhängen verschlüsselter gemeinsamer Ordner am Speicherort des Ausführungs-Scripts befinden müssen. Wird der USB-Stick demnach nur für die Zeit der Datensicherung verwendet und ansonsten an einem sicheren Ort aufbewahrt, sind auch die Key-Files für diesen Zeitraum erstmal sicher. <br />
<br />
<br />
'''Arbeitsweise des Ausführungs-Script (start-rsync.sh)'''<br />
<br />
Das Ausführungs-Script führt neben einigen anderen Dingen die eigentliche Datensicherung aus, wobei mittels RSync sämtliche konfigurierte Quellen mit dem Ziel synchronisiert werden. Befindet sich unter den Quellen oder dem Ziel ein oder mehrere verschlüsselte gemeinsame Ordner, so können diese über das sogenanntes Key-File (der Exportschlüssel) automatisch ein- und nach dem Beenden der Datensicherung wieder automatisch ausgehangen werden. Dazu ist es jedoch erforderlich, das sich das Key-File am Speicherort des Ausführungs-Scripts befindet. Das Key-File selber wird einem beim erstellen eines verschlüsselten gemeinsamen Ordners im DSM unter Systemsteuerung/Gemeinsame Ordner zum Download angeboten, man kann sich dieses aber auch nachträglich erstellen lassen. Weiterhin muss der Benutzer im Vorfeld noch einige Parameter innerhalb des Ausführungs-Scripts definieren, dessen Funktionen durch zusätzliche Kommentare näher beschrieben werden.<br />
<br />
Um dem Benutzer ein Feedback über Erfolg und Misserfolg der Datensicherung geben zu können wird ein Systemprotokoll erstellt, welches in einem Ordner Namens /@Logfiles abgelegt wird. Dieser Ordner liegt hierbei immer im Speicherort des Ausführungs-Scriptes. Weiterhin werden gelöschte Daten einer Quelle, im Ziel bei Bedarf in den Ordner /@Recycle verschoben, welcher sich auch im Speicherort der Datensicherung befindet. Ebenso wird hier bei Bedarf ein weiterer Ordner mit dem Namen @/DSMConfig angelegt, worin die Sicherungen der DSM-Systemkonfiguration des Systems aufbewahrt werden, von dem auch die Quellen stammen. Die Inhalte der Ordner /@Logfiles, /@Recycle sowie /@DSMConfig können nach der Angabe einer Individuellen Zeitvorgabe (in Tagen) vom System automatisch gelöscht werden um einen Speicherüberlauf zu verhindern und um die Übersicht zu bewahren.<br />
<br />
Bei der eigentlichen Datensicherung über RSync werden die Ordnerpfade relativ, nach dem jeweiligen Volume (1,2,3,4….) in das entsprechende Unterverzeichnis gespeichert. Systemorder wie z.B. /@eaDIR, /#recycle, /#snapshot und /.DS_Store werden von der Synchronisation ausgeschlossen. Alle ausgeführten Schritte sowie Fehlermeldungen als auch Abbrüche werden protokolliert und teilweise über sogenannte Exit-Codes als Zahlenwert ausgegeben. Diese Exit-Codes geben weitere Auskunft über mögliche Fehlerquellen. Im Anhang unten findet man ein entsprechender Link zur Auswertung. Das Protokoll wird im oben beschriebenen Ordner /@Logfiles abgelegt und kann bei Bedarf auch als E-Mail zugestellt werden. <br />
<br />
Weitere Einstellmöglichkeiten werden innerhalb des Scripts beschrieben und hier nicht weiter ausgeführt.<br />
<br />
=Hinweise zum Erstellen und ausführen der Scripte=<br />
Die hier verwendeten Script-Dateinamen dienen nur der Veranschaulichung und können, unter Beachtung einiger Rahmenbedingungen nach Belieben verändert werden.<br />
Für die Erstellung der Scripte wurde im DSM unter dem Benutzer "admin" der DSM eigene Text-Editor, der evtl. noch über das Paketzentrum installiert werden muss, verwendet. Wichtig ist das im Editor unter "Voreinstellungen" im Reiter "Bearbeiten" als Standardcodierung "Unicode (UTF-8)" ausgewählt wird.<br />
<br />
Nachdem das jeweilige Script aus dem Wiki in die Zwischenablage kopiert und im Text-Editor eingefügt wurde, kann die entsprechende Datei über "Speichern unter..." am gewünschten Ort abgespeichert werden. Scripte die später über den Aufgabenplaner ausgeführt werden, müssen noch die entsprechenden Berechtigungen erhalten um das jeweilige Script "ausführbar" zu machen. Dazu muss man in der FileStation mit einem rechtsklick auf die betreffenden Datei gehen und im Kontextmenü den Menüpunkt "Eigenschaften" auswählen. Dort angekommen wechselt man zum Reiter "Genehmigung" und weiter auf die Schaltfläche "Erweiterte Optionen" um darauffolgend den Punkt "Übernommene Genehmigungen einschließen" auszuwählen. Zum Schluss bestätigt man das Ganze mit der Schaltfläche "OK" (Die Datei sollte jetzt die Berechtigung rwxrw-rw, bzw. 766 haben)<br />
<br />
Nachdem die Privilegien richtig gesetzt wurden, kann das Script unter Hauptmenü/Systemsteuerung in den Aufgabenplaner aufgenommen werden, ohne die Aufgabe jedoch vorerst auszuführen. Dazu wählt man unter DSM 6 "Erstellen" --> "Geplante Aufgabe" --> "Benutzerdefiniertes Script". Im Reiter "Allgemein" kann man unter "Vorgang" einen individuellen Namen für die Aufgabe vergeben und als Benutzer sollte "root" ausgewählt werden. Bei einer Netzwerksicherung über eine SSH-Verbindung muss hier der Benutzer angegeben werden, auf dem der RSA-Key ausgestellt wurde, in unserem Fall (siehe Anleitung unten) ist das der Benutzer "root". (Nur unter dem Benutzer "root" funktioniert die Signaausgabe sowie die Sicherung der DSM-Konfiguration) Die Checkbox "Aktiviert" wird nur benötigt, sollte das Script automatisiert, also Zeitgesteuert gestartet werden. Dazu wäre dann im nächsten Schritt unter dem Reiter der "Zeitplan" zu definieren. Im Reiter "Aufgabeneinstellungen" muss jetzt noch unter dem Punkt "Befehl ausführen" der Pfad zum "Benutzerdefinierten Script" angegeben werden, also z.B. /volume1/ScriptStuff/search-rsync.sh. Nach dem Bestätigen mit "OK" wird die Aufgabe dem Aufgabenplaner hinzugefügt und kann später, falls gewünscht, nach dem Markieren der Aufgabe, über die Schaltfläche "Ausführen" manuell ausgeführt werden.<br />
<br />
=Script 1: Das Such-Script "search-rsync.sh"=<br />
<br />
Da es mehrere Ansätze für die Suche gibt, kann man sich hier [[Dateibasierte RSync-Datensicherung auf externen Datenträger oder RSync kompatiblen Server/Suchscriptvarianten|Weitere Suchscriptvarianten]] anschauen und sich die für sich passenden Möglichkeit auswählen.<br />
<br />
'''search-rsync.sh'''<br />
<pre><br />
#!/bin/sh<br />
<br />
# Zeichenkette für Script-Dateinamen definieren<br />
# ------------------------------------------------------------------------<br />
# Es ist nicht erforderlich, den kompletten Script-Dateinamen anzugeben. |<br />
# Es reicht die Eingabe einer Zeichenkette, die in jedem auszuführenden |<br />
# Script-Dateinamen enthalten sein muss. |<br />
# Beispiele für die Zeichenkette: "local" = local_Backup_Filme.sh |<br />
# local_Filme.sh oder auch Filme_local_sichern.sh |<br />
#-------------------------------------------------------------------------<br />
SCRIPT_STRING="start"<br />
<br />
# ------------------------------------------------------------------------<br />
# Ab hier bitte nichts mehr ändern |<br />
# ------------------------------------------------------------------------<br />
<br />
for SCRIPT in /volume*/*share/*$SCRIPT_STRING*.sh<br />
do<br />
if [ -f $SCRIPT ]; then<br />
sh $SCRIPT<br />
fi<br />
done<br />
</pre><br />
<br />
=Script 2: Das Ausführungs-Script "start-rsync.sh"=<br />
Das Script mit dem beispielhaften Script-Dateinamen "start-rsync.sh", wird entweder auf den entsprechenden externen USB- oder SATA-Datenträger in dessen Wurzelverzeichnis oder aber in einen "gemeinsamen Ordner" auf der Diskstation abgelegt, auf dem die Datensicherung abgelegt werden soll. <br />
<br />
'''start-rsync.sh'''<br />
<pre><br />
#!/bin/sh<br />
# E-Mail Adresse<br />
# -------------------------------------------------------------------------<br />
# Die E-Mail Adresse muss mit der bereits im DSM unter "Benachrichtigung" |<br />
# hinterlegten E-Mail-Adresse identisch sein. |<br />
# -------------------------------------------------------------------------<br />
EMAIL="" # E-Mail für Zustellung des Sicherungsprotokolls<br />
EMAILFAIL="0" # "0" = Sicherungsprotokoll immer senden<br />
# "1" = Sicherungsprotokoll nur bei Problemen senden<br />
# SSH - Verbindungsdaten<br />
# -------------------------------------------------------------------------<br />
# Werden keine Verbindungsdaten angegeben, wird eine lokale Datensicherung|<br />
# durchgeführt. |<br />
# -------------------------------------------------------------------------<br />
SSH_USER="" # Benutzername<br />
SSH_FROM="" # IP-, Host- oder Domain VON entfernter Quelle AUF lokales Ziel<br />
SSH_TO="" # IP-, Host- oder Domain VON lokaler Quelle AUF entferntes Ziel<br />
SSH_PORT="" # Leer = Port 22 ansonsten gewünschten Port angeben<br />
RSYNC_PORT="" # Alternativer Rsync Port kann hier eingetragen werden<br />
MAC="" # Leer = WOL wird nicht genutzt<br />
SLEEP="300" # Wartezeit in Sekunden bis Remoteserver gebootet ist<br />
# MAC Adresse eintragen = Server wird hochgefahren, wenn dieser ausgeschaltet ist<br />
SHUTDOWN="0" # "0" = Entfernter Server wird nicht heruntergefahren<br />
# "1" = Entfernter Server wird heruntergefahren wenn das Backup erfolgreich war<br />
<br />
# Umgang mit verschlüsselten Ordnern<br />
# ------------------------------------------------------------------------<br />
# Angeben, ob eingehangene verschlüsselte Ordner nach der Datensicherung |<br />
# wieder ausgehangen werden sollen. |<br />
# ------------------------------------------------------------------------<br />
UNMOUNT="0" # "0" = Eingehangene Ordner werden nicht ausgehängt<br />
# "1" = Quelle und Ziel werden ausgehängt<br />
# "2" = Quelle wird ausgehängt<br />
# "3" = Ziel wird ausgehängt<br />
<br />
# Backup - Quellen<br />
# ------------------------------------------------------------------------<br />
# Hier können beliebige, unverschlüsselte sowie verschlüsselte |<br />
# Backup-Quellen einer lokalen oder entfernten DS eingetragen werden. |<br />
# Zu beachten ist, das immer der vollständige Pfad ohne Angabe des |<br />
# entsprechenden Volume anzugeben ist. Weiterhin ist auf die |<br />
# Schreibweise im Beispiel zu achten, pro Zeile je eine Backupquelle. |<br />
# ------------------------------------------------------------------------<br />
SOURCES="/homes/admin<br />
/ordner mit leerzeichen<br />
/verschlüsselter ordner"<br />
<br />
# Backup - Ziel<br />
# ------------------------------------------------------------------------<br />
# Wenn NOTTOSCRIPT="0" |<br />
# - dann entspricht TARGET einem "Unterverzeichnis" am Speicherort des |<br />
# Scripts. Beisp.: volume[x]/share/[TARGET] oder bei einem |<br />
# angeschlossenen USB-Datenträger: volumeUSB[x]/usbshare/[TARGET] |<br />
# - Ist zusätzlich HOSTNAME="1" gesetzt, wird der Netzwerkname dem |<br />
# Speicherort hinzugefügt. Beisp.: volume[x]/Share/[TARGET]/[HOSTNAME]|<br />
# |<br />
# Wenn NOTTOSCRIPT="1" und Ziel ist eine Diskstation |<br />
# - dann entspricht TARGET einem "gemeinsamen Ordner" (Share) am |<br />
# Speicherort des Ziel's. Beisp.: volume[x]/[TARGET] |<br />
# - Ist zusätzlich HOSTNAME="1" gesetzt, wird der Netzwerkname dem |<br />
# Speicherort hinzugefügt. Beisp.: volume[x]/[TARGET]/[HOSTNAME] |<br />
# |<br />
# Wenn NOTTOSCRIPT="1" und Ziel ist ein RSync-kompatibler Server |<br />
# - dann entspricht TARGET einem Ordner (Share) am Speicherort des |<br />
# Ziel's. Beisp.: /[TARGET] |<br />
# - Ist zusätzlich HOSTNAME="1" gesetzt, wird der Netzwerkname dem |<br />
# Speicherort hinzugefügt. Beisp.: /[TARGET]/[HOSTNAME] |<br />
#-------------------------------------------------------------------------<br />
TARGET="/RSync Backup"<br />
<br />
FROMTHISDEVICE="0" # "0" = Quelle ist ein gemeinsamer Ordner<br />
# "1" = Quelle liegt auf externen USB/SATA-Speicher neben Script<br />
NOTTOSCRIPT="0" # "0" = Sicherungsziel liegt beim Script<br />
# "1" = Sicherungsziel liegt im geinsamen Ordner<br />
HOSTNAME="0" # "0" = Sicherungsziel entspricht TARGET<br />
# "1" = Sicherungsziel entspricht TARGET/HOSTNAME<br />
AUTORUN="0" # "0" = autorun wirft USB-Stick nicht aus<br />
# "1" = autorun wirft USB-Stick aus<br />
<br />
# Optische- sowie akustische Signalausgabe<br />
#-------------------------------------------------------------------------<br />
# Start : Status-LED wechselt von grün nach orange. Ein Signalton ertönt|<br />
# Ende : Status-LED wechselt von orange nach grün. Ein Signalton ertönt|<br />
# Fehler : Status-LED wechselt von orange nach grün. 3x Signalton ertönt |<br />
#-------------------------------------------------------------------------<br />
SIGNAL="0" # "0" = Optische- sowie akustische Signalausgabe aus<br />
# "1" = Optische- sowie akustische Signalausgabe an<br />
<br />
# Exportieren der DSM-Systemkonfiguration (.dss)<br />
#-------------------------------------------------------------------------<br />
# Die DSM-Systemkonfigurartion (.dss) wird in den Systemordner |<br />
# /@DSMConfig exportiert. |<br />
#-------------------------------------------------------------------------<br />
DSM_EXPORT="0" # "0" = DSM-Systemkonfiguration wird NICHT exportiert<br />
# "1" = DSM-Systemkonfiguration wird exportiert<br />
<br />
# Rotationszyklus für das Löschen von @Recycle und @Logfiles<br />
#-------------------------------------------------------------------------<br />
# Zeitangabe, wann Ordner bzw. Dateien in den System-Ordnern endgültig |<br />
# gelöscht werden sollen, die älter als x Tage sind. |<br />
# ------------------------------------------------------------------------<br />
RECYCLE_ROTATE="90" # @Recycle-Daten die älter als "x" Tage sind, löschen<br />
LOGFILES_ROTATE="60" # @Logfiles-Daten die älter als "x" Tage sind, löschen<br />
DSMCONFIG_ROTATE="30" # @DSMConfig-Daten die älter als "x" Tage sind, löschen<br />
<br />
# ------------------------------------------------------------------------<br />
# Ab hier bitte nichts mehr ändern, wenn man nicht weiß was man tut !!! |<br />
# ------------------------------------------------------------------------<br />
SCRIPTFILE="${0##*/}"<br />
SCRIPTNAME="${SCRIPTFILE%.*}"<br />
DATE=`date +%Y-%m-%d_%Hh%M`<br />
# RSync Optionen konfigurieren<br />
#-------------------------------------------------------------------------<br />
SYNCOPT="-ahR"<br />
LOGSTAT="--stats"<br />
EXCLUDE="--exclude=@eaDir/*** --exclude=@Logfiles/*** --exclude=#recycle/*** --exclude=#snapshot/*** --exclude=.DS_Store/***"<br />
RECYCLE="--delete --backup --backup-dir=@Recycle/"$DATE"_$SCRIPTNAME"<br />
<br />
# Umgebungsvariablen definieren<br />
#-------------------------------------------------------------------------<br />
BACKIFS="$IFS"<br />
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/syno/bin:/usr/syno/sbin<br />
TARGET_EMPTY="/Backup_DS"<br />
if [[ ${TARGET:0:1} != \/ ]] && [ -n "$TARGET" ]; then<br />
TARGET="/$TARGET"<br />
fi<br />
DEST="${TARGET#*/}"<br />
TARGET_CUT="${TARGET#*/}"<br />
TARGET_DECRYPT="${TARGET_CUT%%/*}"<br />
TIMESTAMP=`date +%d.%m.%Y%t%H:%M:%S`<br />
LOKALHOST="$(hostname)"<br />
HR="------------------------------------------------------------------------------------------------"<br />
<br />
# Variablen je nach Verbindung festlegen<br />
#-------------------------------------------------------------------------<br />
# Wenn Verbindung AUF entfernten Server... (TOSSH)<br />
if [ -n "$SSH_FROM" ] && [ -z "$SSH_TO" ]; then<br />
if [ -n "$SSH_PORT" ]; then<br />
FROMSSH="ssh -p $SSH_PORT $SSH_USER@$SSH_FROM"<br />
SCP="scp -P $SSH_PORT"<br />
else<br />
FROMSSH="ssh $SSH_USER@$SSH_FROM"<br />
SCP="scp"<br />
fi<br />
if [ -n "$RSYNC_PORT" ]; then<br />
FROMRSYNC="ssh -p $RSYNC_PORT -l $SSH_USER"<br />
else<br />
FROMRSYNC="ssh -l $SSH_USER"<br />
fi<br />
REMOTEIP="$SSH_FROM"<br />
# Wenn Verbindung VON entfernten Server... (FROMSSH)<br />
elif [ -z "$SSH_FROM" ] && [ -n "$SSH_TO" ]; then<br />
if [ -n "$SSH_PORT" ]; then<br />
TOSSH="ssh -p $SSH_PORT $SSH_USER@$SSH_TO"<br />
SCP="scp -P $SSH_PORT"<br />
else<br />
TOSSH="ssh $SSH_USER@$SSH_TO"<br />
SCP="scp"<br />
fi<br />
if [ -n "$RSYNC_PORT" ]; then<br />
TORSYNC="ssh -p $RSYNC_PORT -l $SSH_USER"<br />
else<br />
TORSYNC="ssh -l $SSH_USER"<br />
fi<br />
REMOTEIP="$SSH_TO"<br />
# Wenn Verbindung lokal...<br />
elif [ -z "$SSH_FROM" ] && [ -z "$SSH_TO" ]; then<br />
FIND="find"<br />
SOURCE_TEST="test"<br />
TARGET_TEST="test"<br />
if [ $HOSTNAME -eq 1 ]; then<br />
NAME="$LOKALHOST"<br />
fi<br />
fi<br />
<br />
# DSM-Benachrichtigung: Script wird ausgeführt...<br />
#-------------------------------------------------------------------------<br />
synodsmnotify @administrators "Script: $SCRIPTNAME" "Wird ausgeführt.."<br />
<br />
# Speicherort des Logfiles festlegen<br />
#-------------------------------------------------------------------------<br />
mkdir -p `dirname $0`/@Logfiles<br />
LOG="`dirname $0`/@Logfiles/"$DATE"_$SCRIPTNAME.log"<br />
if test ! -d `dirname $0`/@Logfiles; then<br />
DSMNOTIFY="Es konnte kein @Logfiles Ordner erstellt werden!"<br />
fi<br />
if [ $SIGNAL -eq 1 ]; then<br />
echo 3 >/dev/ttyS1; echo : >/dev/ttyS1<br />
sleep 2<br />
fi<br />
<br />
# Ordner/Datei für das Protokoll anlegen und Kopfdaten generieren<br />
#-------------------------------------------------------------------------<br />
# E-Mail-Kopf aufbauen...<br />
if [ -n "$EMAIL" ]; then<br />
echo "To: $EMAIL" > $LOG<br />
echo "From: $EMAIL" >> $LOG<br />
echo "Subject: Sicherungsprotokoll vom $TIMESTAMP Uhr" >> $LOG<br />
echo "" >> $LOG<br />
echo "Ausgefuehrtes RSync-Script: $SCRIPTFILE" >> $LOG<br />
echo "" >> $LOG; echo "$HR" >> $LOG<br />
# Protokoll-Kopf aufbauen...<br />
else<br />
echo "Sicherungsprotokoll vom $TIMESTAMP Uhr" >> $LOG<br />
echo "" >> $LOG<br />
echo "Ausgefuehrtes RSync-Script: $SCRIPTFILE" >> $LOG<br />
echo "" >> $LOG; echo "$HR" >> $LOG<br />
fi<br />
<br />
# Fehlererkennung<br />
#-------------------------------------------------------------------------<br />
if [ -z "$TARGET" ] && [ "$NOTTOSCRIPT" -eq 1 ]; then<br />
STOP="Bitte TARGET setzen oder NOTTOSCRIPT nicht setzen..." >> $LOG<br />
fi<br />
if [ -z "$STOP" ] && [ -n "$SSH_FROM" ] && [ -n "$SSH_TO" ]; then<br />
STOP="Bitte nur SSH_FROM oder SSH_TO setzen!" >> $LOG<br />
fi<br />
if [ -z "$STOP" ] && [ -n "$SSH_TO" ] && [ -z "$TARGET" ]; then<br />
STOP="Bei SSH_TO muss TARGET angegeben werden!"<br />
fi<br />
if [ -z "$STOP" ] && [ "$NOTTOSCRIPT" -eq 1 ] && [ -z "$TARGET" ]; then<br />
STOP="Bei NOTTOSCRIPT=1 muss TARGET angegeben werden!"<br />
fi<br />
if [ -z "$STOP" ] && [ $FROMTHISDEVICE -eq 1 ] && [ -n "$SSH_FROM" ]; then<br />
STOP="Nur FROMTHISDEVICE setzen oder SSH_FROM !"<br />
fi<br />
# Ping Test<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ]; then<br />
if [ -n "$SSH_FROM" ] || [ -n "$SSH_TO" ]; then<br />
ping $REMOTEIP -c 2<br />
ONLINE="$?"<br />
if [ $ONLINE -eq 0 ]; then<br />
echo "Remoteserver $REMOTEIP ist online." >> $LOG<br />
else<br />
if [ -z "$MAC" ]; then<br />
STOP="Remoteserver $REMOTEIP ist offline!" >> $LOG<br />
else<br />
echo "Remoteserver $REMOTEIP ist offline!" >> $LOG<br />
fi<br />
fi<br />
if [ -z "$SSH_USER" ]; then<br />
STOP="Bei der Netzwerksicherung bitte SSH_USER angeben." >> $LOG<br />
fi<br />
fi<br />
fi<br />
<br />
# WOL<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ] && [ -n "$MAC" ] && [ $ONLINE -eq 1 ]; then<br />
echo "Remoteserver $REMOTEIP wird geweckt." >> $LOG<br />
if test -f /usr/bin/ether-wake; then<br />
/usr/bin/ether-wake $MAC<br />
elif test -f /usr/syno/sbin/synonet; then<br />
/usr/syno/sbin/synonet --wake $MAC eth0<br />
fi<br />
sleep $SLEEP<br />
ping $REMOTEIP -c 2<br />
ONLINE="$?"<br />
if [ $ONLINE -eq 0 ]; then<br />
echo "Remoteserver $REMOTEIP wurde hochgefahren." >> $LOG<br />
else<br />
if [ -z "$STOP" ]; then<br />
STOP="Remoteserver $REMOTEIP konnte nicht hochgefahren werden." >> $LOG<br />
fi<br />
fi<br />
fi<br />
<br />
# Verbindungstest (SSH_FROM)<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ] && [ -n "$SSH_FROM" ] && [ -z "$SSH_TO" ]; then<br />
if [ ! "$FROMSSH" ]; then<br />
STOP="Es konnte keine SSH-Verbindung zu $SSH_FROM aufgebaut werden." >> $LOG<br />
elif [ "$FROMSSH" ]; then<br />
REMOTEHOST=$($FROMSSH "echo \`hostname\`")<br />
echo "SSH-Verbindung zu $REMOTEHOST aufgebaut." >> $LOG<br />
SYNOSHARE_SOURCE="$FROMSSH"<br />
FIND="$FROMSSH find"<br />
SOURCE_TEST="$FROMSSH test"<br />
TARGET_TEST="test"<br />
if [ $HOSTNAME -eq 1 ]; then<br />
NAME="$REMOTEHOST"<br />
fi<br />
fi<br />
fi<br />
<br />
# Verbindungstest (SSH_TO)<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ] && [ -z "$SSH_FROM" ] && [ -n "$SSH_TO" ]; then<br />
if [ ! "$TOSSH" ]; then<br />
STOP="Es konnte keine SSH-Verbindung zu $SSH_TO aufgebaut werden." >> $LOG<br />
elif [ "$TOSSH" ]; then<br />
REMOTEHOST=$($TOSSH "echo \`hostname\`")<br />
echo "SSH-Verbindung zu $REMOTEHOST aufgebaut." >> $LOG<br />
SYNOSHARE_TARGET="$TOSSH"<br />
FIND="$TOSSH find"<br />
SOURCE_TEST="test"<br />
TARGET_TEST="$TOSSH test"<br />
if [ $HOSTNAME -eq 1 ]; then<br />
NAME="$LOKALHOST"<br />
fi<br />
fi<br />
fi<br />
<br />
# Verbindungstest ob Quelle bzw. Ziel eine Diskstation ist oder nicht<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ] && [ -n "$SSH_FROM" ] || [ -n "$SSH_TO" ]; then<br />
if $SOURCE_TEST -d /usr/syno/synoman; then<br />
SOURCE_PATH="/volume*"<br />
SOURCEDS="1"<br />
echo "Quellserver ist eine DS" >> $LOG<br />
elif $SOURCE_TEST ! -d /usr/syno/synoman; then<br />
SOURCEDS="0"<br />
echo "Quellserver ist keine DS" >> $LOG<br />
fi<br />
<br />
if $TARGET_TEST -d /usr/syno/synoman; then<br />
TARGET_PATH="/volume*"<br />
TARGETDS="1"<br />
echo "Zielserver ist eine DS" >> $LOG<br />
elif $TARGET_TEST ! -d /usr/syno/synoman; then<br />
TARGETDS="0"<br />
echo "Zielserver ist keine DS" >> $LOG<br />
fi<br />
<br />
elif [ -z "$STOP" ]; then<br />
SOURCE_PATH="/volume*"<br />
TARGET_PATH="/volume*"<br />
SOURCEDS="1"<br />
TARGETDS="1"<br />
fi<br />
<br />
if [ $FROMTHISDEVICE -eq 1 ]; then<br />
SOURCE_PATH="/volume*/*share"<br />
fi<br />
<br />
# Zielordner checken<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ]; then<br />
IFS="<br />
"<br />
TARGET_ESCAPE=$(echo $TARGET | sed -e 's/ /\\ /g')<br />
TARGET_DECRYPT_ESCAPE=$(echo $TARGET_DECRYPT | sed -e 's/ /\\ /g')<br />
IFS="$BACKIFS"<br />
if [ -n "$SSH_TO" ]; then<br />
DEST_DECRYPT="$TARGET_DECRYPT_ESCAPE"<br />
else<br />
DEST_DECRYPT="$TARGET_DECRYPT"<br />
fi<br />
if [ "$NOTTOSCRIPT" -eq 1 ] || [ -n "$SSH_TO" ]; then<br />
if $TARGET_TEST ! -d $TARGET_PATH/@"$DEST_DECRYPT"@ && $TARGET_TEST -d $TARGET_PATH/"$DEST_DECRYPT"; then<br />
echo "Zielordner $TARGET_DECRYPT wurde lokalisiert..." >> $LOG<br />
elif $TARGET_TEST -d $TARGET_PATH/@"$DEST_DECRYPT"@ && $TARGET_TEST -d $TARGET_PATH/"$DEST_DECRYPT"; then<br />
echo "Verschluesselter Zielordner $TARGET_DECRYPT bereits eingehangen..." >> $LOG<br />
elif $TARGET_TEST -d $TARGET_PATH/@"$DEST_DECRYPT"@ && $TARGET_TEST ! -d $TARGET_PATH/"$DEST_DECRYPT"; then<br />
echo "Verschluesselter Zielordner $TARGET_DECRYPT nicht eingehangen..." >> $LOG<br />
# Anhand des Key-Files versuchen einen verschluesselten Zielordner einbinden<br />
if test -f `dirname $0`/"$TARGET_DECRYPT".key; then<br />
echo "$TARGET_DECRYPT.key gefunden" >> $LOG<br />
echo "Verschluesselter Zielordner $TARGET_DECRYPT wird eingehangen..." >> $LOG<br />
KEYFILEDEST=$(ecryptfs-unwrap-passphrase `dirname $0`/"$TARGET_DECRYPT".key "\$1\$5YN01o9y")<br />
$SYNOSHARE_TARGET /usr/syno/sbin/synoshare --enc_mount "$DEST_DECRYPT" "$KEYFILEDEST" >> $LOG<br />
sleep 20<br />
if $TARGET_TEST -d $TARGET_PATH/@"$DEST_DECRYPT"@ && $TARGET_TEST -d $TARGET_PATH/"$DEST_DECRYPT"; then<br />
echo "Verschluesselter Zielordner $TARGET_DECRYPT wurde eingehangen..." >> $LOG<br />
elif $TARGET_TEST -d $TARGET_PATH/@"$DEST_DECRYPT"@ && $TARGET_TEST ! -d $TARGET_PATH/"$DEST_DECRYPT"; then<br />
echo "Verschluesselter Zielordner $TARGET_DECRYPT konnte nicht eingehangen werden..." >> $LOG<br />
fi<br />
else<br />
echo "Kein Keyfile fuer $TARGET_DECRYPT gefunden! Verschluesselte Ordner muessen eingehangen werden!"<br />
fi<br />
fi<br />
if $TARGET_TEST ! -d $TARGET_PATH/"$DEST_DECRYPT"; then<br />
if [ -z "$STOP" ]; then<br />
STOP="Zielordner /$TARGET_DECRYPT nicht gefunden!"<br />
fi<br />
fi<br />
fi<br />
fi<br />
<br />
# Quellordner checken<br />
#-------------------------------------------------------------------------<br />
IFS="<br />
"<br />
for SHARE in $SOURCES; do<br />
if [[ ${SHARE:0:1} != \/ ]] ; then<br />
SHARE="/$SHARE"<br />
fi<br />
SHARE_ESCAPE=$(echo $SHARE | sed -e 's/ /\\ /g')<br />
SHARE_CUT="${SHARE#*/}"<br />
SHARE_DECRYPT="${SHARE_CUT%%/*}"<br />
SHARE_DECRYPT_ESCAPE=$(echo $SHARE_DECRYPT | sed -e 's/ /\\ /g')<br />
IFS="$BACKIFS"<br />
if [ -n "$SSH_FROM" ]; then<br />
SOURCE_DECRYPT="$SHARE_DECRYPT_ESCAPE"<br />
else<br />
SOURCE_DECRYPT="$SHARE_DECRYPT"<br />
fi<br />
if $SOURCE_TEST ! -d $SOURCE_PATH/@"$SOURCE_DECRYPT"@ && $SOURCE_TEST -d $SOURCE_PATH/"$SOURCE_DECRYPT"; then<br />
echo "Quellordner $SHARE_DECRYPT wurde lokalisiert..." >> $LOG<br />
elif $SOURCE_TEST -d $SOURCE_PATH/@"$SOURCE_DECRYPT"@ && $SOURCE_TEST -d $SOURCE_PATH/"$SOURCE_DECRYPT"; then<br />
echo "Verschluesselter Quellordner $SHARE_DECRYPT bereits eingehangen..." >> $LOG<br />
elif $SOURCE_TEST -d $SOURCE_PATH/@"$SOURCE_DECRYPT"@ && $SOURCE_TEST ! -d $SOURCE_PATH/"$SOURCE_DECRYPT"; then<br />
echo "Verschluesselter Quellordner $SHARE_DECRYPT nicht eingehangen..." >> $LOG<br />
# Anhand des Key-Files versuchen einen verschluesselten Quellordner einbinden<br />
if test -f `dirname $0`/"$SHARE_DECRYPT".key; then<br />
echo "$SHARE_DECRYPT.key gefunden" >> $LOG<br />
echo "Verschluesselter Quellordner $SHARE_DECRYPT wird eingehangen..." >> $LOG<br />
KEYFILESHARE=$(ecryptfs-unwrap-passphrase `dirname $0`/"$SHARE_DECRYPT".key "\$1\$5YN01o9y")<br />
$SYNOSHARE_SOURCE /usr/syno/sbin/synoshare --enc_mount "$SHARE_DECRYPT" "$KEYFILESHARE" >> $LOG<br />
sleep 20<br />
if $SOURCE_TEST -d $SOURCE_PATH/@"$SOURCE_DECRYPT"@ && $SOURCE_TEST -d $SOURCE_PATH/"$SOURCE_DECRYPT"; then<br />
echo "Verschluesselter Quellordner $SHARE_DECRYPT wurde eingehangen..." >> $LOG<br />
elif $SOURCE_TEST -d $SOURCE_PATH/@"$SOURCE_DECRYPT"@ && $SOURCE_TEST ! -d $SOURCE_PATH/"$SOURCE_DECRYPT"; then<br />
echo "Verschluesselter Quellordner $SHARE_DECRYPT konnte nicht eingehangen werden..." >> $LOG<br />
fi<br />
else<br />
STOP="Kein Keyfile fuer $SHARE_DECRYPT gefunden! Verschluesselte Ordner muessen eingehangen werden! Datensicherung ABGEBROCHEN..."<br />
fi<br />
fi<br />
done<br />
<br />
# Ziel definieren<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ]; then<br />
if [ -n "$SSH_TO" ] && [ -n "$TARGET" ]; then<br />
DEST_FULL=$($TOSSH "echo $TARGET_PATH/$TARGET_DECRYPT_ESCAPE")<br />
DEST_CUT="${DEST_FULL#*/}"<br />
DEST_VOL="${DEST_CUT%%/*}"<br />
if [ $TARGETDS -eq 1 ]; then<br />
DESTTARGET="/$DEST_VOL$TARGET_ESCAPE"<br />
else<br />
DESTTARGET="$TARGET_ESCAPE"<br />
fi<br />
if [ $HOSTNAME -eq 1 ]; then<br />
DESTINATION="$DESTTARGET/$NAME"<br />
else<br />
DESTINATION="$DESTTARGET"<br />
fi<br />
elif [ -z "$SSH_TO" ] && [ "$NOTTOSCRIPT" -eq 0 ] && [ -z "$TARGET" ]; then<br />
if [ $HOSTNAME -eq 1 ]; then<br />
DESTINATION="`dirname $0`$TARGET_EMPTY/$NAME"<br />
else<br />
DESTINATION="`dirname $0`$TARGET_EMPTY"<br />
fi<br />
elif [ -z "$SSH_TO" ] && [ "$NOTTOSCRIPT" -eq 1 ] && [ -n "$TARGET" ]; then<br />
DEST_FULL=$(echo $TARGET_PATH/"$TARGET_DECRYPT")<br />
DEST_CUT="${DEST_FULL#*/}"<br />
DEST_VOL="${DEST_CUT%%/*}"<br />
if [ -n "$TARGETDS" ]; then<br />
DESTTARGET="/$DEST_VOL$TARGET"<br />
else<br />
DESTTARGET="$TARGET"<br />
fi<br />
if [ $HOSTNAME -eq 1 ]; then<br />
DESTINATION="$DESTTARGET/$NAME"<br />
else<br />
DESTINATION="$DESTTARGET"<br />
fi<br />
elif [ -z "$SSH_TO" ] && [ "$NOTTOSCRIPT" -eq 0 ]; then<br />
if [ $HOSTNAME -eq 1 ]; then<br />
DESTINATION="`dirname $0`$TARGET/$NAME"<br />
else<br />
DESTINATION="`dirname $0`$TARGET"<br />
fi<br />
fi<br />
mkdir -p "$DESTINATION"<br />
if [ -n "$SSH_TO" ] && [ "$NOTTOSCRIPT" -eq 0 ]; then<br />
STOP="Bei SSH_TO muss NOTTOSCRIPT gesetzt werden!" >> $LOG<br />
elif [ -n "$SSH_TO" ] && [ "$NOTTOSCRIPT" -eq 1 ] && [ -n "$TARGET" ]; then<br />
if $TARGET_TEST -d $TARGET_PATH/$TARGET_DECRYPT_ESCAPE; then<br />
$TOSSH mkdir -p "$DESTINATION"<br />
fi<br />
fi<br />
fi<br />
<br />
# Check ob Zielordner erstellt wurde bzw. vorhanden war.<br />
if $TARGET_TEST ! -d "$DESTINATION"; then<br />
if [ -z "$STOP" ]; then<br />
STOP="Zielordner $TARGET konnte nicht erstellt werden bzw. ist nicht vorhanden !"<br />
fi<br />
fi<br />
<br />
echo "" >> $LOG<br />
echo "$HR" >> $LOG<br />
echo "" >> $LOG<br />
# Beginn der RSync-Datensicherung<br />
#--------------------------------------------------------------------------<br />
IFS="<br />
"<br />
for SHARE in $SOURCES; do<br />
if [ -z "$STOP" ]; then<br />
echo "" >> $LOG<br />
if [[ ${SHARE:0:1} != \/ ]] ; then<br />
SHARE="/$SHARE"<br />
fi<br />
SHARE_ESCAPE=$(echo $SHARE | sed -e 's/ /\\ /g')<br />
SHARE_CUT="${SHARE#*/}"<br />
SHARE_DECRYPT="${SHARE_CUT%%/*}"<br />
IFS="$BACKIFS"<br />
unset FORERROR<br />
if [ -n "$SSH_FROM" ]; then<br />
SOURCE="$SHARE_ESCAPE"<br />
else<br />
SOURCE="$SHARE"<br />
fi<br />
<br />
if $SOURCE_TEST ! -d $SOURCE_PATH"$SOURCE"; then<br />
ERROR="Quellordner $SHARE nicht erreichbar..." >> $LOG<br />
FORERROR="1"<br />
elif $SOURCE_TEST -d $SOURCE_PATH"$SOURCE"; then<br />
echo "Quellordner $SHARE erreichbar." >> $LOG<br />
fi<br />
if [ $FROMTHISDEVICE -eq 1 ] && [ -z "$SSH_FROM" ]; then<br />
SOURCE="`dirname $0`$SHARE"<br />
elif [ $FROMTHISDEVICE -eq 0 ] && [ -z "$SSH_FROM" ]; then<br />
SOURCE="$SHARE"<br />
fi<br />
<br />
if [ -z "$STOP" ] && [ -z "$FORERROR" ]; then<br />
# SSH-SSH_FROM RSync-Datensicherung VON einer entfernten DS oder komp. Server<br />
#--------------------------------------------------------------------------<br />
if [ -n "$SSH_FROM" ] && [ -z "$SSH_TO" ] && [ -n "$DESTINATION" ]; then<br />
echo "$HR" >> $LOG<br />
echo "Starte Datensicherung: $REMOTEHOST$SHARE nach $DESTINATION" >> $LOG<br />
echo "$HR" >> $LOG<br />
if [ $SOURCEDS -eq 1 ]; then<br />
rsync -e "$FROMRSYNC" $SYNCOPT $SSH_FROM:/volume*"$SOURCE" $LOGSTAT $EXCLUDE $RECYCLE "$DESTINATION" >> $LOG<br />
RSYNC_EXIT="$?"<br />
elif [ $SOURCEDS -ne 1 ]; then<br />
rsync -e "$FROMRSYNC" $SYNCOPT $SSH_FROM:"$SOURCE" $LOGSTAT $EXCLUDE $RECYCLE "$DESTINATION" >> $LOG<br />
RSYNC_EXIT="$?"<br />
fi<br />
# SSH-SSH_TO RSync-Datensicherung AUF eine entfernte DS oder komp. Server<br />
#--------------------------------------------------------------------------<br />
elif [ -n "$SSH_TO" ] && [ -z "$SSH_FROM" ] && [ -n "$DESTINATION" ]; then<br />
echo "$HR" >> $LOG<br />
echo "Starte Datensicherung: $LOKALHOST$SHARE nach $DESTINATION" >> $LOG<br />
echo "$HR" >> $LOG<br />
if [ $SOURCEDS -eq 1 ] && [ $FROMTHISDEVICE -ne 1 ]; then<br />
rsync -e "$TORSYNC" $SYNCOPT /volume*"$SOURCE" $LOGSTAT $EXCLUDE $RECYCLE $SSH_TO:"$DESTINATION" >> $LOG<br />
RSYNC_EXIT="$?"<br />
elif [ $SOURCEDS -ne 1 ] || [ $FROMTHISDEVICE -eq 1 ]; then<br />
rsync -e "$TORSYNC" $SYNCOPT "$SOURCE" $LOGSTAT $EXCLUDE $RECYCLE $SSH_TO:"$DESTINATION" >> $LOG<br />
RSYNC_EXIT="$?"<br />
fi<br />
# RSync- Lokale Datensicherung auf Volume, USB- oder SATA-Datentr�ger<br />
#-------------------------------------------------------------------------<br />
elif [ -z "$SSH_TO" ] && [ -z "$SSH_FROM" ] && [ -n "$DESTINATION" ]; then<br />
echo "$HR" >> $LOG<br />
echo "Starte Datensicherung: $REMOTEHOST$SHARE nach $DESTINATION" >> $LOG<br />
echo "$HR" >> $LOG<br />
if [ $SOURCEDS -eq 1 ] && [ $FROMTHISDEVICE -ne 1 ]; then<br />
rsync $SYNCOPT /volume*"$SOURCE" $LOGSTAT $EXCLUDE $RECYCLE "$DESTINATION" >> $LOG<br />
RSYNC_EXIT="$?"<br />
elif [ $SOURCEDS -ne 1 ] || [ $FROMTHISDEVICE -eq 1 ]; then<br />
rsync $SYNCOPT "$SOURCE" $LOGSTAT $EXCLUDE $RECYCLE "$DESTINATION" >> $LOG<br />
RSYNC_EXIT="$?"<br />
fi<br />
fi<br />
echo "" >> $LOG<br />
if [ $RSYNC_EXIT -ne 0 ]; then<br />
RSYNC_CODE="$RSYNC_EXIT"<br />
fi<br />
fi<br />
fi<br />
done<br />
<br />
# RSync Exit-Code = Fehlermeldung<br />
#-------------------------------------------------------------------------<br />
# Exit-Code: Entfernter Server ausgeschaltet?<br />
if [ $RSYNC_CODE -eq 43 ]; then<br />
echo "Entfernte DS oder RSync komp. Server nicht Online? Bitte RSYNC Port kontrollieren!" >> $LOG<br />
# Exit-Code: DSL-Verbindung getrennt?<br />
elif [ $RSYNC_CODE -eq 255 ]; then<br />
echo "Bitte Internetverbindung oder RSYNC Port kontrollieren!" >> $LOG<br />
# Exit-Code ausgeben...<br />
elif [ $RSYNC_CODE -ne 0 ]; then<br />
echo "RSync Fehlermeldung (Exit Code): $RSYNC_CODE" >> $LOG<br />
fi<br />
<br />
# RSync Exit-Code = Erfolgreich bzw. Unvollständig<br />
#-------------------------------------------------------------------------<br />
if [ -z "$RSYNC_CODE" ] && [ -z "$STOP" ] && [ -z "$ERROR" ]; then<br />
echo "$HR" >> $LOG<br />
echo "RSync-Datensicherung erfolgreich. Sicherungsziel: $DESTINATION" >> $LOG<br />
if [ -z "$DSMNOTIFY" ]; then<br />
DSMNOTIFY="RSync-Datensicherung erfolgreich. Sicherungsziel: $DESTINATION"<br />
fi<br />
# Signalausgabe - Datensicherung erfolgreich<br />
if [ $SIGNAL -eq 1 ]; then<br />
echo 3 >/dev/ttyS1; echo 8 >/dev/ttyS1<br />
sleep 2<br />
fi<br />
# RSync Exit-Code = Fehlermeldung<br />
elif [ $RSYNC_CODE -ne 0 ] || [ -n "$STOP" ] || [ -n "$ERROR" ]; then<br />
echo "$HR" >> $LOG<br />
echo "RSync-Datensicherung unvollstaendig oder fehlgeschlagen - Sicherungsziel: $DESTINATION" >> $LOG<br />
if [ -z "$DSMNOTIFY" ]; then<br />
DSMNOTIFY="RSync-Datensicherung unvollstaendig oder fehlgeschlagen - Bitte Protokoll prüfen!"<br />
fi<br />
# Signalausgabe - Datensicherung fehlgeschlagen<br />
if [ $SIGNAL -eq 1 ]; then<br />
echo 2 >/dev/ttyS1; sleep 1; echo 2 >/dev/ttyS1; sleep 1; echo 2 >/dev/ttyS1; sleep 1; echo 8 >/dev/ttyS1<br />
fi<br />
fi<br />
echo "$HR" >> $LOG; echo "" >> $LOG<br />
if [ -n "$STOP" ]; then<br />
echo "FEHLER: $STOP" >> $LOG<br />
fi<br />
if [ -n "$ERROR" ]; then<br />
echo "FEHLER: $ERROR" >> $LOG<br />
fi<br />
<br />
# DSM-Systemkonfiguration exportieren<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ] && [ "$DSM_EXPORT" -eq 1 ] && [ -z "$RSYNC_CODE" ]; then<br />
if [ -n "$SSH_FROM" ] && [ -z "$SSH_TO" ] && [ -n "$SOURCEDS" ]; then<br />
$FROMSSH /usr/syno/bin/synoconfbkp export --filepath DSMConfig_TEMP.dss<br />
mkdir -p "$DESTINATION"/@DSMConfig<br />
$SCP -r $SSH_USER@$SSH_FROM:DSMConfig_TEMP.dss "$DESTINATION"/@DSMConfig/DSMConfig_"$DATE"_$REMOTEHOST.dss<br />
$FROMSSH rm -rf DSMConfig_TEMP.dss<br />
echo "Sicherung der DSM-Systemkonfiguration von $REMOTEHOST erfolgreich zu $LOKALHOST kopiert.." >> $LOG<br />
echo "" >> $LOG<br />
elif [ -z "$SSH_FROM" ] && [ -n "$SSH_TO" ]; then<br />
synoconfbkp export --filepath `dirname $0`/@DSMConfig/DSMConfig_"$DATE"_$LOKALHOST.dss<br />
$TOSSH mkdir -p "$DESTINATION"/@DSMConfig<br />
$SCP -r `dirname $0`/@DSMConfig/*.dss $SSH_USER@$SSH_TO:"$DESTINATION"/@DSMConfig/<br />
rm -rf `dirname $0`/@DSMConfig<br />
echo "Sicherung der DSM-Systemkonfiguration von $LOKALHOST erfolgreich zu $REMOTEHOST kopiert.." >> $LOG<br />
echo "" >> $LOG<br />
elif [ -z "$SSH_FROM" ] && [ -z "$SSH_TO" ]; then<br />
mkdir -p "$DESTINATION"/@DSMConfig<br />
synoconfbkp export --filepath "$DESTINATION"/@DSMConfig/DSMConfig_"$DATE"_$LOKALHOST.dss<br />
echo "Lokale Sicherung der DSM-Systemkonfiguration erfolgreich." >> $LOG<br />
echo "" >> $LOG<br />
fi<br />
fi<br />
<br />
# Rotationszyklus für das Löschen von @Recycle, @Logfiles und @DSMConfig<br />
#-------------------------------------------------------------------------<br />
# Dateien im Ordner @Recycle die älter als x Tage sind, löschen.<br />
if $TARGET_TEST -d "$DESTINATION"/@Recycle/; then<br />
if [ -z "$STOP" ] && [ -n "$RECYCLE_ROTATE" ] && [ -z "$ERROR" ]; then<br />
$FIND "$DESTINATION"/@Recycle/* -type d -mtime +$RECYCLE_ROTATE -exec rm -rf {} \;<br />
echo "HINWEIS: Daten aus dem Ordner /@Recycle, die mehr als $RECYCLE_ROTATE Tage alt waren, wurden geloescht." >> $LOG<br />
echo "" >> $LOG<br />
fi<br />
fi<br />
# Dateien im Ordner @Logfiles die älter als x Tage sind, löschen.<br />
if $TARGET_TEST -d `dirname $0`/@Logfiles/; then<br />
if [ -z "$STOP" ] && [ -n "$LOGFILES_ROTATE" ] && [ -z "$ERROR" ]; then<br />
find `dirname $0`/@Logfiles -name "*.log" -type f -mtime +$LOGFILES_ROTATE -exec rm {} \;<br />
echo "HINWEIS: Daten aus dem Ordner /@Logfiles, die mehr als $LOGFILES_ROTATE Tage alt waren, wurden geloescht." >> $LOG<br />
echo "" >> $LOG<br />
fi<br />
fi<br />
# Dateien im Ordner @DSMConfig die älter als x Tage sind, löschen.<br />
if $TARGET_TEST -d "$DESTINATION"/@DSMConfig/; then<br />
if [ -z "$STOP" ] && [ -n "$DSMCONFIG_ROTATE" ] && [ -z "$ERROR" ]; then<br />
$FIND "$DESTINATION"/@DSMConfig -name "*.dss" -type f -mtime +$DSMCONFIG_ROTATE -exec rm {} \;<br />
echo "HINWEIS: Daten aus dem Ordner /@DSMConfig, die mehr als $DSMCONFIG_ROTATE Tage alt waren, wurden geloescht." >> $LOG<br />
echo "" >> $LOG<br />
fi<br />
fi<br />
<br />
# Verschlüsselte Shares wieder aushängen..<br />
#-------------------------------------------------------------------------<br />
if [ $UNMOUNT -ne 0 ] && [ -n "$TARGETDS" ]; then<br />
if [ $UNMOUNT -ne 2 ]; then<br />
IFS="<br />
"<br />
TARGET_ESCAPE=$(echo $TARGET | sed -e 's/ /\\ /g')<br />
TARGET_DECRYPT_ESCAPE=$(echo $TARGET_DECRYPT | sed -e 's/ /\\ /g')<br />
IFS="$BACKIFS"<br />
if [ -n "$SSH_TO" ]; then<br />
DEST_DECRYPT="$TARGET_DECRYPT_ESCAPE"<br />
else<br />
DEST_DECRYPT="$TARGET_DECRYPT"<br />
fi<br />
if $TARGET_TEST -d /volume*/@"$DEST_DECRYPT"@ && $TARGET_TEST -d /volume*/"$DEST_DECRYPT"; then<br />
echo "Ziel: $TARGET_DECRYPT wurde ausgehangen" >> $LOG<br />
$SYNOSHARE_TARGET /usr/syno/sbin/synoshare --enc_unmount "$DEST_DECRYPT" >> $LOG<br />
sleep 10<br />
fi<br />
fi<br />
fi<br />
if [ $UNMOUNT -ne 0 ] && [ -n "$SOURCEDS" ]; then<br />
if [ $UNMOUNT -ne 3 ]; then<br />
IFS="<br />
"<br />
for SHARE in $SOURCES; do<br />
SHARE_ESCAPE=$(echo $SHARE | sed -e 's/ /\\ /g')<br />
SHARE_CUT="${SHARE#*/}"<br />
SHARE_DECRYPT="${SHARE_CUT%%/*}"<br />
SHARE_DECRYPT_ESCAPE=$(echo $SHARE_DECRYPT | sed -e 's/ /\\ /g')<br />
IFS="$BACKIFS"<br />
if [ -n "$SSH_FROM" ]; then<br />
SOURCE_DECRYPT="$SHARE_DECRYPT_ESCAPE"<br />
else<br />
SOURCE_DECRYPT="$SHARE_DECRYPT"<br />
fi<br />
if $SOURCE_TEST -d /volume*/@"$SOURCE_DECRYPT"@ && $SOURCE_TEST -d /volume*/"$SOURCE_DECRYPT"; then<br />
echo "Quelle: $SHARE_DECRYPT wurde ausgehangen" >> $LOG<br />
$SYNOSHARE_SOURCE /usr/syno/sbin/synoshare --enc_unmount "$SHARE_DECRYPT" >> $LOG<br />
sleep 10<br />
fi<br />
done<br />
fi<br />
fi<br />
unset KEYFILEPW<br />
<br />
# Entfernten Server herunterfahren<br />
#-------------------------------------------------------------------------<br />
if [ $SHUTDOWN -ne 0 ] && [ -z "$RSYNC_CODE" ] && [ -z "$STOP" ] && [ -z "$ERROR" ]; then<br />
if [ -n "$SSH_FROM" ]; then<br />
$FROMSSH poweroff<br />
echo "Remoteserver $SSH_FROM wird heruntergefahren." >> $LOG<br />
elif [ -n "$SSH_TO" ]; then<br />
$TOSSH poweroff<br />
echo "Remoteserver $SSH_TO wird heruntergefahren." >> $LOG<br />
fi<br />
fi<br />
<br />
# Benachrichtigung an die DSM-Administratorengruppe sowie E-Mail senden<br />
#-------------------------------------------------------------------------<br />
if [ -n "$DSMNOTIFY" ]; then<br />
synodsmnotify @administrators "Script: $SCRIPTNAME" "$DSMNOTIFY"<br />
fi<br />
if [ -n "$EMAIL" ]; then<br />
if [ "$EMAILFAIL" -eq 1 ] && [ -z "$RSYNC_CODE" ] || [ -n "$STOP" ] || [ -n "$ERROR" ]; then<br />
ssmtp $EMAIL < $LOG<br />
elif [ "$EMAILFAIL" -eq 0 ]; then<br />
ssmtp $EMAIL < $LOG<br />
fi<br />
fi<br />
<br />
# Script beenden...<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ] && [ -z "$RSYNC_CODE" ] && [ -z "$ERROR" ] && [ "$AUTORUN" -eq 1 ]; then<br />
exit 100<br />
else<br />
exit $?<br />
fi<br />
<br />
</pre><br />
<br />
=Erstellen eines RSA-Keys für den Aufbau einer SSH-Verbindung=<br />
Es soll eine dateibasierte Datensicherung mittels RSync von Diskstation "A" (Produktivsystem) auf Diskstation "B" (Backupsystem) angelegt werden. Dabei übernimmt das Backupsystem die Aufgabe des Servers, worüber der Verbindungsaufbau und der eigentliche Sicherungsvorgang initiiert wird. Das Produktivsystem übernimmt somit die Aufgabe des Client und muß dem ganzen Vorgang nur zustimmen. Um dies zu ermöglichen muß im Vorfeld ein RSA-Schlüssel auf dem Backupsystem erzeugt und dem Produktivsystem der öffentliche Schlüssel mitgeteilt werden, um so den automatischen Verbindungsaufbau per SSH zu ermöglichen. Nachdem die SSH-Verbindung erfolgreich aufgebaut wurde, wird der eigentliche rsync-Befehl abgesetzt und somit die Datensicherung ausgelöst. Um auch in die Gegenrichtung sichern zu können, muss die RSA-Key Einrichtung dementsprechend gedreht werden, so das am Ende sowohl Diskstation "A" als auch Diskstation "B" Quelle als auch Ziel der Datensicherung darstellen können.<br />
<br />
Im folgenden werden alle Einstellungen für den Benutzer '''root''' getroffen, da nur unter diesem Benutzer die Signalausgabe als auch das Sichern der DSM-Konfiguration funktioniert. Wer hier lieber als "admin" oder vielleicht sogar als eingeschränkter Benutzer "rsync" arbeiten möchte, muss nachfolgend an den entsprechenden Stellen den gewünschten Benutzernamen einsetzen. Das hier verwendete Homeverzeichnis des Benutzer "root" wird im folgenden nur in dessen Kurzform mit ~/ angesprochen, wobei hier immer auf /root verwiesen wird. Alle anderen Benutzerkonten befinden sich im Homeverzeichnis /home/[BENUTZERNAME] bzw. richtigerweise unter /var/services/homes/[BENUTZERNAME].<br />
<br />
(Nachfolgend symbolisiert das Zeichen "$" nur den Zeilenanfang und wird nicht mit geschrieben)<br />
<br />
<br />
'''Hinweis zum Loginvorgang bis DSM 5.2 für den Benutzer "root"'''<br />
<pre><br />
Login als Benutzer "root" mit dem Passwort des DSM-Benutzer "admin"<br />
</pre><br />
<br />
'''Hinweis zum Loginvorgang ab DSM 6 für den Benutzer "root"'''<br />
<pre><br />
Login als Benutzer "admin" mit dem Passwort des DSM-Benutzer "admin"<br />
<br />
"root"-Zugriff erhält man dann über die Eingabe von...<br />
<br />
$ sudo -i<br />
<br />
...und gibt abermals das Password des DSM-Benutzer "admin" ein.<br />
</pre> <br />
<br />
<br />
'''Beginnen wir auf dem Server der "Diskstation B" oder besser gesagt, dem Backupsystem'''<br />
<br />
Auf der Konsole der DS als Benutzer "root" einloggen. <br />
Erstellen des RSA-Schlüssels mit...<br />
<br />
<pre>$ ssh-keygen -t rsa</pre><br />
<br />
Bei der Erstellung wird man nach Speicherort und Passphrase gefragt...<br />
<br />
<pre><br />
Enter file in which to save the key (/root/.ssh/id_rsa):<br />
Enter passphrase (empty for no oassphrase):<br />
Enter same passphrase again:<br />
</pre><br />
<br />
... hier bitte nichts eintragen, sondern einfach nur mit der "Return-Taste" bestätigen. Nach der Ausführung werden im Homeverzeichnis des Benutzer "root" folgende Ordner und Dateien erstellt:<br />
<br />
<pre><br />
~/.ssh<br />
~/.ssh/id_rsa<br />
~/.ssh/id_rsa.pub<br />
</pre><br />
<br />
An dieser Stelle sollte man gleich noch die Ordner- und Dateirechte anpassen.<br />
<br />
<pre>$ chmod 0700 ~/.ssh<br />
$ chmod 0600 ~/.ssh/id_rsa*<br />
</pre><br />
<br />
Den Inhalt der Datei ~/.ssh/id_rsa.pub z.B. mit vi, nano oder dem AdminTool editieren und den Inhalt in die Zwischenablage kopieren.<br />
<br />
<pre>$ nano ~/.ssh/id_rsa.pub</pre><br />
<br />
Wichtig, wie hier im Beispiel gezeigt (RSA-Schlüssel wurde hier gekürzt) ist, das alles in einer Zeile steht...<br />
<br />
<pre>ssh-rsa AAAAB3NzaC1yc2..*gekürzt*...EAAAADAQABA3e root@Backupstation</pre><br />
<br />
'''Weiter gehts auf dem Client der "Diskstation A", also dem Produktivsystem.'''<br />
<br />
Auf der Konsole der DS als Benutzer "root" einloggen. Erstellen eines neuen Ornders<br />
<br />
<pre>$ mkdir ~/.ssh</pre><br />
<br />
Daraufhin wird unter ~/.ssh/ eine neue Datei namens "authorized_keys" erstellt...<br />
<br />
<pre>$ nano ~/.ssh/authorized_keys</pre><br />
<br />
...und der Inhalt aus der Zwischenablage, also der Inhalt aus der ~/.ssh/id_rsa.pub, die auf dem Backupsystem erstellt wurde, in die geöffnete Datei eingefügt. Nach dem Speichern und verlassen des Editors müssen auch hier noch die Ordner- und Dateirechte richtig gesetzt werden.<br />
<br />
<pre><br />
$ chmod 0700 ~/.ssh<br />
$ chmod 0600 ~/.ssh/authorized_keys<br />
</pre><br />
<br />
'''Zurück auf der Konsole der Backupstation.'''<br />
<br />
Als Benutzer "root" auf der DS einloggen und als Erstes die SSH-Verbindung prüfen mit...<br />
<br />
<pre>$ ssh root@IP-DER-DISKSTATION_A -p 22</pre><br />
<br />
Der Verbindungsaufbau möchte vom System nochmal mit "yes" bestätigt werden um anschließend auf der Konsole des Produktivsystemes zu landen. Diese Verbindung kann man durch die Eingabe eines...<br />
<br />
<pre>$ exit</pre><br />
<br />
... wieder beenden. Durch den Verbindungsaufbau wurde nun in der Datei ~/.ssh/known_hosts ein neuer Eintrag hinzugefügt, der die Zugangsdaten zur Diskstation beinhaltet. Kontrollieren kann man das mit...<br />
<br />
<pre>$ nano ~/.ssh/known_hosts</pre><br />
<br />
Nachdem alles gut verlaufen ist, wird die Konsole wieder geschlossen mit...<br />
<br />
<pre>$ exit</pre><br />
<br />
=Release Notes=<br />
<br />
'''Release Notes vom 10.05.2016'''<br />
(Knapp 150 Zeilen Script-Code wurden seit dem letzen Update hinzugefügt.)<br />
* Es wurde eine neue Variable (MAC) geschaffen um entfernte Server per WOL zu starten.<br />
* Es wurde eine neue Variable (SLEEP) geschaffen um dem entfernten Server ein Zeitfenster zum starten zu geben.<br />
* Es wurde eine neue Variable (SHUTDOWN) geschaffen um entfernte Server auszuschalten.<br />
* Anhand der drei grade genannten Variablen können demnach entfernte Server per WOL geweckt, die eigentliche Datensicherung ausgeführt werden um im Anschluss den entfernten Server bei Bedarf wieder auszuschalten. <br />
* Es wurde eine neue Variable (FROMTHISDEVICE) geschaffen um Inhalte eines USB/SATA-Datenräger auf eine Diskstation oder einem entfernten, RSync-kompatiblen Server zu sichern.<br />
* Quellen und Ziel können ab sofort auch Leerzeichen enthalten. <br />
<br />
'''Release Notes vom 01.05.2016'''<br />
* Es wurde eine neue Variable (SSH_PORT) geschaffen um einen abweichenden SSH-Port angeben zu können.<br />
* Es wurde eine neue Variable (RSYNC_PORT) geschaffen um einen abweichenden RSync-Port angeben zu können.<br />
* Es wurde eine neue Variable (EMAILFAIL) geschaffen um nur bei einer Störung per E-Mail benachrichtigt zu werden.<br />
* Alle "schaltbaren" Benutzer-Variablen wurden nach dem Schema "0" = aus / "1" = an umstrukturiert. Ursprünglich wurde der Wert bei Zustand "aus" einfach leer gelassen, also "". <br />
* Kommentare im Benutzer-Eingabebereich des Scripts wurden optimiert.<br />
* Neben der bereits funktionierenden Sicherung von und auf eine weitere Diskstation funktioniert jetzt auch das Sichern von und auf einen RSync-kompatible Server. Das Script erkennt hierbei automatisch ob es sich um eine Diskstation oder einen RSync-kompatiblen Server handelt und passt die Sicherungs-Pfade dementsprechend an. Diskstation arbeiten i.d.R. mit einem /volume[x], RSync-kompatible Server tun das in der Regel nicht.<br />
* Viele weitere Detailverbesserungen, die hier nicht alle aufgeführt werden können. Nur so viel... das Script ist um weitere 100 Zeilen Scipt-Code gewachsen.<br />
<br />
=Externe Links=<br />
*[http://www.synology-forum.de/showthread.html?72786-Projekt-rsync-Alternative-dateibasierte-Datensicherung Forum Post]<br />
*[http://wpkg.org/Rsync_exit_codes rsync Exit Codes]<br />
*[http://www.synology-wiki.de/index.php/LEDs_und_Buttons LEDs und Buttons (zur Signalsteuerung)]</div>Itommeshttps://www.synology-wiki.de/index.php?title=Dateibasierte_RSync-Datensicherung_auf_externen_Datentr%C3%A4ger_oder_RSync_kompatiblen_Server&diff=7077Dateibasierte RSync-Datensicherung auf externen Datenträger oder RSync kompatiblen Server2016-05-10T19:49:00Z<p>Itommes: /* Einleitung */</p>
<hr />
<div>=Einleitung=<br />
<br />
'''Diese Anleitung zur dateibasierten RSync-Datensicherung bietet folgende Möglichkeiten...'''<br />
<br />
* Quelle(n) und/oder Ziel können unverschlüsselt sein<br />
* Quelle(n) und/oder Ziel können verschlüsselt sein<br />
* Quelle(n) und/oder Ziel können Leerzeichen im Ordernamen enthalten <br />
* Sicherung innerhalb eines /volume<br />
* Sicherung zwischen internen /volumes<br />
* Sicherung AUF lokal angeschlossene USB-/SATA-Datenträger sowie eingebundene Remote-Shares (nur unverschlüsselt)<br />
* Sicherung VON lokal angeschlossene USB-/SATA-Datenträger AUF internes /volume oder RSync-kompatiblen Server (auch verschlüsselt möglich)<br />
* Sicherung von einer entfernten DS oder RSync-kompatilben Server<br />
* Sicherung auf eine entfernte DS oder RSync-kompatilben Server<br />
* (weitere Konstellationen sind möglich, wurden jedoch nicht getestet) <br />
<br />
'''Hinweis:''' Die Verschlüsselung beruht hierbei auf der von Synology verwendeten Ordnerverschlüsselung (eCryptfs). Um verschlüsselte gemeinsame Ordner einbinden zu können, wird das Key-File also der Exportschlüssel benötigt. Diesen erhält man über die DSM-Systemsteuerung/Gemeinsame Ordner.<br />
<br />
=Anmerkung=<br />
Bevor ihr anfangt, nehmt bitte noch den Artikel "[[Wichtige Informationen zum Modden der Synology Stations]]" zur Kenntnis. <br />
<br />
Auch wenn dieses Script intensiv auf einwandfreie Funktion hin getestet wurde, so kann eine Fehlfunktion und demzufolge ein möglicher Datenverlust nicht ausgeschlossen werden. Aus diesem Grund solltet ihr das System erstmal mit unwichtigen Testdaten auf Herz und Nieren prüfen und sich mit der Arbeitsweise des Scripts und dessen Funktionen vertraut machen bevor ihr das ganze "produktiv" einsetzt. '''Ihr verwendet dieses Script auf eigene Gefahr.'''<br />
<br />
=Voraussetzungen=<br />
* Umgang mit dem DSM Aufgabenplaner <br />
* Umgang mit einem Editor seiner Wahl (z.B. Notepad++ oder dem DSM Text-Editor)<br />
* Grundkenntnisse im Umgang mit Shell-Scripten<br />
* Umgang mit der Konsole (bei Verwendung des SSH-Zuganges)<br />
* Zum versenden einer E-Mail muss im DSM unter Hauptmenü/Systemsteuerung/Benachrichtigung eine E-Mail Adresse hinterlegt sein.<br />
* Ein externer USB- oder SATA-Datenträger, eine weitere Synology Diskstation oder einen rsync-kompatiblen Server im Netzwerk.<br />
* Optional: autorun für externe Datenträger (Version 1.7)<br />
<br />
=Erläuterungen zur Funktion und Arbeitsweise=<br />
<br />
<pre><br />
Diskstation<br />
| |<br />
| '--> Aufgabenplaner ------------------------------<br />
| | |<br />
| '--> Such-Script -----> USB/SATA-Share ---> Ausführungs-<br />
| | Script<br />
'----------------> USB/SATA-Share --> autorun -------- (Key-Files)<br />
|<br />
.---------------------------'<br />
|<br />
V<br />
.---------- Quelle <--- definiere ---> Ziel----------.<br />
| | | |<br />
V '-- lokale/intern/extern --' V<br />
lokalisiere Quelle(n) lokalisiere Ziel<br />
| | <br />
| Protokoll/E-Mail |<br />
|--> Verschlüsselte | Verschlüsseltes <--|<br />
| Quelle(n) anhand der | Ziel anhand der |<br />
| Key-Files einhängen <--- aushängen ---> Key-Files einhängen |<br />
| | | | |<br />
| V | V |<br />
'--------------------->> !! DATENSICHERUNG !! >>---------------------'<br />
| |<br />
'-- lokale/intern/extern -'<br />
<br />
</pre><br />
<br />
<br />
'''Scriptausführung über den DSM-Aufgabenplaner'''<br />
<br />
Das manuelle oder automatisierte Aufrufen von Such- oder Ausführungs-Script wird komfortabel über den DSM - Aufgabenplaner gesteuert. Das Such-Script hat dabei die Aufgabe, das Ausführungs-Script zu lokalisieren und starten. Es wird jedoch nur bei der Verwendung einer lokalen Datensicherung auf einem angeschlossenen USB-/SATA-Datenträger eingesetzt, da sich hier die Datenträgerbezeichnungen durchaus mal ändern können. Für alle andern Aufgaben wird das Such-Script nicht benötigt weshalb man das Ausführungs-Script auch direkt über den DSM-Aufgabenplaner ansprechen kann, um es manuell oder automatisiert auszuführen. Dabei befindet sich das Ausführungs-Script innerhalb eines "gemeinsamen Ordners" auf der DS, also z.B. dort, wo die interne oder externe Datensicherung später gespeichert werden soll.<br />
<br />
<br />
'''Scriptausführung mittels "autorun"'''<br />
<br />
Eine weitere Möglichkeit der Scriptausführung bietet die Verwendung von "autorun", welches angeschlossene USB-/SATA-Datenträger automatisch erkennt und ein darauf liegendes Script Namens "autorun" ausführt, sollte es im Wurzel- bzw. Hauptverzeichnis des externen Datenträgers lokalisiert werden. Dieses Verhalten machen wir uns zunutze, indem wir entweder den Inhalt unseres Ausführungs-Scriptes per Copy & Paste mit dem des "autorun" Scripts überschreiben, oder wir legen uns eine neue Datei namens "autorun" an bzw. benennen unser Script einfach nach "autorun" um und legen es auf dem externen Datenträger ab. Somit erhält man die Möglichkeit durch einfaches anstecken des USB-Sticks eine lokale, interne oder externe Datensicherung auszuführen. Ein weiterer Vorteil von "autorun" ist der Tatsache geschuldet, das sich evtl. benötigte Key-Files (also der Exportschlüssel) für das Einhängen verschlüsselter gemeinsamer Ordner am Speicherort des Ausführungs-Scripts befinden müssen. Wird der USB-Stick demnach nur für die Zeit der Datensicherung verwendet und ansonsten an einem sicheren Ort aufbewahrt, sind auch die Key-Files für diesen Zeitraum erstmal sicher. <br />
<br />
<br />
'''Arbeitsweise des Ausführungs-Script (start-rsync.sh)'''<br />
<br />
Das Ausführungs-Script führt neben einigen anderen Dingen die eigentliche Datensicherung aus, wobei mittels RSync sämtliche konfigurierte Quellen mit dem Ziel synchronisiert werden. Befindet sich unter den Quellen oder dem Ziel ein oder mehrere verschlüsselte gemeinsame Ordner, so können diese über das sogenanntes Key-File (der Exportschlüssel) automatisch ein- und nach dem Beenden der Datensicherung wieder automatisch ausgehangen werden. Dazu ist es jedoch erforderlich, das sich das Key-File am Speicherort des Ausführungs-Scripts befindet. Das Key-File selber wird einem beim erstellen eines verschlüsselten gemeinsamen Ordners im DSM unter Systemsteuerung/Gemeinsame Ordner zum Download angeboten, man kann sich dieses aber auch nachträglich erstellen lassen. Weiterhin muss der Benutzer im Vorfeld noch einige Parameter innerhalb des Ausführungs-Scripts definieren, dessen Funktionen durch zusätzliche Kommentare näher beschrieben werden.<br />
<br />
Um dem Benutzer ein Feedback über Erfolg und Misserfolg der Datensicherung geben zu können wird ein Systemprotokoll erstellt, welches in einem Ordner Namens /@Logfiles abgelegt wird. Dieser Ordner liegt hierbei immer im Speicherort des Ausführungs-Scriptes. Weiterhin werden gelöschte Daten einer Quelle, im Ziel bei Bedarf in den Ordner /@Recycle verschoben, welcher sich auch im Speicherort der Datensicherung befindet. Ebenso wird hier bei Bedarf ein weiterer Ordner mit dem Namen @/DSMConfig angelegt, worin die Sicherungen der DSM-Systemkonfiguration des Systems aufbewahrt werden, von dem auch die Quellen stammen. Die Inhalte der Ordner /@Logfiles, /@Recycle sowie /@DSMConfig können nach der Angabe einer Individuellen Zeitvorgabe (in Tagen) vom System automatisch gelöscht werden um einen Speicherüberlauf zu verhindern und um die Übersicht zu bewahren.<br />
<br />
Bei der eigentlichen Datensicherung über RSync werden die Ordnerpfade relativ, nach dem jeweiligen Volume (1,2,3,4….) in das entsprechende Unterverzeichnis gespeichert. Systemorder wie z.B. /@eaDIR, /#recycle, /#snapshot und /.DS_Store werden von der Synchronisation ausgeschlossen. Alle ausgeführten Schritte sowie Fehlermeldungen als auch Abbrüche werden protokolliert und teilweise über sogenannte Exit-Codes als Zahlenwert ausgegeben. Diese Exit-Codes geben weitere Auskunft über mögliche Fehlerquellen. Im Anhang unten findet man ein entsprechender Link zur Auswertung. Das Protokoll wird im oben beschriebenen Ordner /@Logfiles abgelegt und kann bei Bedarf auch als E-Mail zugestellt werden. <br />
<br />
Weitere Einstellmöglichkeiten werden innerhalb des Scripts beschrieben und hier nicht weiter ausgeführt.<br />
<br />
=Hinweise zum Erstellen und ausführen der Scripte=<br />
Die hier verwendeten Script-Dateinamen dienen nur der Veranschaulichung und können, unter Beachtung einiger Rahmenbedingungen nach Belieben verändert werden.<br />
Für die Erstellung der Scripte wurde im DSM unter dem Benutzer "admin" der DSM eigene Text-Editor, der evtl. noch über das Paketzentrum installiert werden muss, verwendet. Wichtig ist das im Editor unter "Voreinstellungen" im Reiter "Bearbeiten" als Standardcodierung "Unicode (UTF-8)" ausgewählt wird.<br />
<br />
Nachdem das jeweilige Script aus dem Wiki in die Zwischenablage kopiert und im Text-Editor eingefügt wurde, kann die entsprechende Datei über "Speichern unter..." am gewünschten Ort abgespeichert werden. Scripte die später über den Aufgabenplaner ausgeführt werden, müssen noch die entsprechenden Berechtigungen erhalten um das jeweilige Script "ausführbar" zu machen. Dazu muss man in der FileStation mit einem rechtsklick auf die betreffenden Datei gehen und im Kontextmenü den Menüpunkt "Eigenschaften" auswählen. Dort angekommen wechselt man zum Reiter "Genehmigung" und weiter auf die Schaltfläche "Erweiterte Optionen" um darauffolgend den Punkt "Übernommene Genehmigungen einschließen" auszuwählen. Zum Schluss bestätigt man das Ganze mit der Schaltfläche "OK" (Die Datei sollte jetzt die Berechtigung rwxrw-rw, bzw. 766 haben)<br />
<br />
Nachdem die Privilegien richtig gesetzt wurden, kann das Script unter Hauptmenü/Systemsteuerung in den Aufgabenplaner aufgenommen werden, ohne die Aufgabe jedoch vorerst auszuführen. Dazu wählt man unter DSM 6 "Erstellen" --> "Geplante Aufgabe" --> "Benutzerdefiniertes Script". Im Reiter "Allgemein" kann man unter "Vorgang" einen individuellen Namen für die Aufgabe vergeben und als Benutzer sollte "root" ausgewählt werden. Bei einer Netzwerksicherung über eine SSH-Verbindung muss hier der Benutzer angegeben werden, auf dem der RSA-Key ausgestellt wurde, in unserem Fall (siehe Anleitung unten) ist das der Benutzer "root". (Nur unter dem Benutzer "root" funktioniert die Signaausgabe sowie die Sicherung der DSM-Konfiguration) Die Checkbox "Aktiviert" wird nur benötigt, sollte das Script automatisiert, also Zeitgesteuert gestartet werden. Dazu wäre dann im nächsten Schritt unter dem Reiter der "Zeitplan" zu definieren. Im Reiter "Aufgabeneinstellungen" muss jetzt noch unter dem Punkt "Befehl ausführen" der Pfad zum "Benutzerdefinierten Script" angegeben werden, also z.B. /volume1/ScriptStuff/search-rsync.sh. Nach dem Bestätigen mit "OK" wird die Aufgabe dem Aufgabenplaner hinzugefügt und kann später, falls gewünscht, nach dem Markieren der Aufgabe, über die Schaltfläche "Ausführen" manuell ausgeführt werden.<br />
<br />
=Script 1: Das Such-Script "search-rsync.sh"=<br />
<br />
Da es mehrere Ansätze für die Suche gibt, kann man sich hier [[Dateibasierte RSync-Datensicherung auf externen Datenträger oder RSync kompatiblen Server/Suchscriptvarianten|Weitere Suchscriptvarianten]] anschauen und sich die für sich passenden Möglichkeit auswählen.<br />
<br />
'''search-rsync.sh'''<br />
<pre><br />
#!/bin/sh<br />
<br />
# Zeichenkette für Script-Dateinamen definieren<br />
# ------------------------------------------------------------------------<br />
# Es ist nicht erforderlich, den kompletten Script-Dateinamen anzugeben. |<br />
# Es reicht die Eingabe einer Zeichenkette, die in jedem auszuführenden |<br />
# Script-Dateinamen enthalten sein muss. |<br />
# Beispiele für die Zeichenkette: "local" = local_Backup_Filme.sh |<br />
# local_Filme.sh oder auch Filme_local_sichern.sh |<br />
#-------------------------------------------------------------------------<br />
SCRIPT_STRING="start"<br />
<br />
# ------------------------------------------------------------------------<br />
# Ab hier bitte nichts mehr ändern |<br />
# ------------------------------------------------------------------------<br />
<br />
for SCRIPT in /volume*/*share/*$SCRIPT_STRING*.sh<br />
do<br />
if [ -f $SCRIPT ]; then<br />
sh $SCRIPT<br />
fi<br />
done<br />
</pre><br />
<br />
=Script 2: Das Ausführungs-Script "start-rsync.sh"=<br />
Das Script mit dem beispielhaften Script-Dateinamen "start-rsync.sh", wird entweder auf den entsprechenden externen USB- oder SATA-Datenträger in dessen Wurzelverzeichnis oder aber in einen "gemeinsamen Ordner" auf der Diskstation abgelegt, auf dem die Datensicherung abgelegt werden soll. <br />
<br />
'''start-rsync.sh'''<br />
<pre><br />
#!/bin/sh<br />
# E-Mail Adresse<br />
# -------------------------------------------------------------------------<br />
# Die E-Mail Adresse muss mit der bereits im DSM unter "Benachrichtigung" |<br />
# hinterlegten E-Mail-Adresse identisch sein. |<br />
# -------------------------------------------------------------------------<br />
EMAIL="" # E-Mail für Zustellung des Sicherungsprotokolls<br />
EMAILFAIL="0" # "0" = Sicherungsprotokoll immer senden<br />
# "1" = Sicherungsprotokoll nur bei Problemen senden<br />
# SSH - Verbindungsdaten<br />
# -------------------------------------------------------------------------<br />
# Werden keine Verbindungsdaten angegeben, wird eine lokale Datensicherung|<br />
# durchgeführt. |<br />
# -------------------------------------------------------------------------<br />
SSH_USER="" # Benutzername<br />
SSH_FROM="" # IP-, Host- oder Domain VON entfernter Quelle AUF lokales Ziel<br />
SSH_TO="" # IP-, Host- oder Domain VON lokaler Quelle AUF entferntes Ziel<br />
SSH_PORT="" # Leer = Port 22 ansonsten gewünschten Port angeben<br />
RSYNC_PORT="" # Alternativer Rsync Port kann hier eingetragen werden<br />
MAC="" # Leer = WOL wird nicht genutzt<br />
SLEEP="300" # Wartezeit in Sekunden bis Remoteserver gebootet ist<br />
# MAC Adresse eintragen = Server wird hochgefahren, wenn dieser ausgeschaltet ist<br />
SHUTDOWN="0" # "0" = Entfernter Server wird nicht heruntergefahren<br />
# "1" = Entfernter Server wird heruntergefahren wenn das Backup erfolgreich war<br />
<br />
# Umgang mit verschlüsselten Ordnern<br />
# ------------------------------------------------------------------------<br />
# Angeben, ob eingehangene verschlüsselte Ordner nach der Datensicherung |<br />
# wieder ausgehangen werden sollen. |<br />
# ------------------------------------------------------------------------<br />
UNMOUNT="0" # "0" = Eingehangene Ordner werden nicht ausgehängt<br />
# "1" = Quelle und Ziel werden ausgehängt<br />
# "2" = Quelle wird ausgehängt<br />
# "3" = Ziel wird ausgehängt<br />
<br />
# Backup - Quellen<br />
# ------------------------------------------------------------------------<br />
# Hier können beliebige, unverschlüsselte sowie verschlüsselte |<br />
# Backup-Quellen einer lokalen oder entfernten DS eingetragen werden. |<br />
# Zu beachten ist, das immer der vollständige Pfad ohne Angabe des |<br />
# entsprechenden Volume anzugeben ist. Weiterhin ist auf die |<br />
# Schreibweise im Beispiel zu achten, pro Zeile je eine Backupquelle. |<br />
# ------------------------------------------------------------------------<br />
SOURCES="/homes/admin<br />
/ordner mit leerzeichen<br />
/verschlüsselter ordner"<br />
<br />
# Backup - Ziel<br />
# ------------------------------------------------------------------------<br />
# Wenn NOTTOSCRIPT="0" |<br />
# - dann entspricht TARGET einem "Unterverzeichnis" am Speicherort des |<br />
# Scripts. Beisp.: volume[x]/share/[TARGET] oder bei einem |<br />
# angeschlossenen USB-Datenträger: volumeUSB[x]/usbshare/[TARGET] |<br />
# - Ist zusätzlich HOSTNAME="1" gesetzt, wird der Netzwerkname dem |<br />
# Speicherort hinzugefügt. Beisp.: volume[x]/Share/[TARGET]/[HOSTNAME]|<br />
# |<br />
# Wenn NOTTOSCRIPT="1" und Ziel ist eine Diskstation |<br />
# - dann entspricht TARGET einem "gemeinsamen Ordner" (Share) am |<br />
# Speicherort des Ziel's. Beisp.: volume[x]/[TARGET] |<br />
# - Ist zusätzlich HOSTNAME="1" gesetzt, wird der Netzwerkname dem |<br />
# Speicherort hinzugefügt. Beisp.: volume[x]/[TARGET]/[HOSTNAME] |<br />
# |<br />
# Wenn NOTTOSCRIPT="1" und Ziel ist ein RSync-kompatibler Server |<br />
# - dann entspricht TARGET einem Ordner (Share) am Speicherort des |<br />
# Ziel's. Beisp.: /[TARGET] |<br />
# - Ist zusätzlich HOSTNAME="1" gesetzt, wird der Netzwerkname dem |<br />
# Speicherort hinzugefügt. Beisp.: /[TARGET]/[HOSTNAME] |<br />
#-------------------------------------------------------------------------<br />
TARGET="/RSync Backup"<br />
<br />
FROMTHISDEVICE="0" # "0" = Quelle ist ein gemeinsamer Ordner<br />
# "1" = Quelle liegt auf externen USB/SATA-Speicher neben Script<br />
NOTTOSCRIPT="0" # "0" = Sicherungsziel liegt beim Script<br />
# "1" = Sicherungsziel liegt im geinsamen Ordner<br />
HOSTNAME="0" # "0" = Sicherungsziel entspricht TARGET<br />
# "1" = Sicherungsziel entspricht TARGET/HOSTNAME<br />
AUTORUN="0" # "0" = autorun wirft USB-Stick nicht aus<br />
# "1" = autorun wirft USB-Stick aus<br />
<br />
# Optische- sowie akustische Signalausgabe<br />
#-------------------------------------------------------------------------<br />
# Start : Status-LED wechselt von grün nach orange. Ein Signalton ertönt|<br />
# Ende : Status-LED wechselt von orange nach grün. Ein Signalton ertönt|<br />
# Fehler : Status-LED wechselt von orange nach grün. 3x Signalton ertönt |<br />
#-------------------------------------------------------------------------<br />
SIGNAL="0" # "0" = Optische- sowie akustische Signalausgabe aus<br />
# "1" = Optische- sowie akustische Signalausgabe an<br />
<br />
# Exportieren der DSM-Systemkonfiguration (.dss)<br />
#-------------------------------------------------------------------------<br />
# Die DSM-Systemkonfigurartion (.dss) wird in den Systemordner |<br />
# /@DSMConfig exportiert. |<br />
#-------------------------------------------------------------------------<br />
DSM_EXPORT="0" # "0" = DSM-Systemkonfiguration wird NICHT exportiert<br />
# "1" = DSM-Systemkonfiguration wird exportiert<br />
<br />
# Rotationszyklus für das Löschen von @Recycle und @Logfiles<br />
#-------------------------------------------------------------------------<br />
# Zeitangabe, wann Ordner bzw. Dateien in den System-Ordnern endgültig |<br />
# gelöscht werden sollen, die älter als x Tage sind. |<br />
# ------------------------------------------------------------------------<br />
RECYCLE_ROTATE="90" # @Recycle-Daten die älter als "x" Tage sind, löschen<br />
LOGFILES_ROTATE="60" # @Logfiles-Daten die älter als "x" Tage sind, löschen<br />
DSMCONFIG_ROTATE="30" # @DSMConfig-Daten die älter als "x" Tage sind, löschen<br />
<br />
# ------------------------------------------------------------------------<br />
# Ab hier bitte nichts mehr ändern, wenn man nicht weiß was man tut !!! |<br />
# ------------------------------------------------------------------------<br />
SCRIPTFILE="${0##*/}"<br />
SCRIPTNAME="${SCRIPTFILE%.*}"<br />
DATE=`date +%Y-%m-%d_%Hh%M`<br />
# RSync Optionen konfigurieren<br />
#-------------------------------------------------------------------------<br />
SYNCOPT="-ahR"<br />
LOGSTAT="--stats"<br />
EXCLUDE="--exclude=@eaDir/*** --exclude=@Logfiles/*** --exclude=#recycle/*** --exclude=#snapshot/*** --exclude=.DS_Store/***"<br />
RECYCLE="--delete --backup --backup-dir=@Recycle/"$DATE"_$SCRIPTNAME"<br />
<br />
# Umgebungsvariablen definieren<br />
#-------------------------------------------------------------------------<br />
BACKIFS="$IFS"<br />
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/syno/bin:/usr/syno/sbin<br />
TARGET_EMPTY="/Backup_DS"<br />
if [[ ${TARGET:0:1} != \/ ]] && [ -n "$TARGET" ]; then<br />
TARGET="/$TARGET"<br />
fi<br />
DEST="${TARGET#*/}"<br />
TARGET_CUT="${TARGET#*/}"<br />
TARGET_DECRYPT="${TARGET_CUT%%/*}"<br />
TIMESTAMP=`date +%d.%m.%Y%t%H:%M:%S`<br />
LOKALHOST="$(hostname)"<br />
HR="------------------------------------------------------------------------------------------------"<br />
<br />
# Variablen je nach Verbindung festlegen<br />
#-------------------------------------------------------------------------<br />
# Wenn Verbindung AUF entfernten Server... (TOSSH)<br />
if [ -n "$SSH_FROM" ] && [ -z "$SSH_TO" ]; then<br />
if [ -n "$SSH_PORT" ]; then<br />
FROMSSH="ssh -p $SSH_PORT $SSH_USER@$SSH_FROM"<br />
SCP="scp -P $SSH_PORT"<br />
else<br />
FROMSSH="ssh $SSH_USER@$SSH_FROM"<br />
SCP="scp"<br />
fi<br />
if [ -n "$RSYNC_PORT" ]; then<br />
FROMRSYNC="ssh -p $RSYNC_PORT -l $SSH_USER"<br />
else<br />
FROMRSYNC="ssh -l $SSH_USER"<br />
fi<br />
REMOTEIP="$SSH_FROM"<br />
# Wenn Verbindung VON entfernten Server... (FROMSSH)<br />
elif [ -z "$SSH_FROM" ] && [ -n "$SSH_TO" ]; then<br />
if [ -n "$SSH_PORT" ]; then<br />
TOSSH="ssh -p $SSH_PORT $SSH_USER@$SSH_TO"<br />
SCP="scp -P $SSH_PORT"<br />
else<br />
TOSSH="ssh $SSH_USER@$SSH_TO"<br />
SCP="scp"<br />
fi<br />
if [ -n "$RSYNC_PORT" ]; then<br />
TORSYNC="ssh -p $RSYNC_PORT -l $SSH_USER"<br />
else<br />
TORSYNC="ssh -l $SSH_USER"<br />
fi<br />
REMOTEIP="$SSH_TO"<br />
# Wenn Verbindung lokal...<br />
elif [ -z "$SSH_FROM" ] && [ -z "$SSH_TO" ]; then<br />
FIND="find"<br />
SOURCE_TEST="test"<br />
TARGET_TEST="test"<br />
if [ $HOSTNAME -eq 1 ]; then<br />
NAME="$LOKALHOST"<br />
fi<br />
fi<br />
<br />
# DSM-Benachrichtigung: Script wird ausgeführt...<br />
#-------------------------------------------------------------------------<br />
synodsmnotify @administrators "Script: $SCRIPTNAME" "Wird ausgeführt.."<br />
<br />
# Speicherort des Logfiles festlegen<br />
#-------------------------------------------------------------------------<br />
mkdir -p `dirname $0`/@Logfiles<br />
LOG="`dirname $0`/@Logfiles/"$DATE"_$SCRIPTNAME.log"<br />
if test ! -d `dirname $0`/@Logfiles; then<br />
DSMNOTIFY="Es konnte kein @Logfiles Ordner erstellt werden!"<br />
fi<br />
if [ $SIGNAL -eq 1 ]; then<br />
echo 3 >/dev/ttyS1; echo : >/dev/ttyS1<br />
sleep 2<br />
fi<br />
<br />
# Ordner/Datei für das Protokoll anlegen und Kopfdaten generieren<br />
#-------------------------------------------------------------------------<br />
# E-Mail-Kopf aufbauen...<br />
if [ -n "$EMAIL" ]; then<br />
echo "To: $EMAIL" > $LOG<br />
echo "From: $EMAIL" >> $LOG<br />
echo "Subject: Sicherungsprotokoll vom $TIMESTAMP Uhr" >> $LOG<br />
echo "" >> $LOG<br />
echo "Ausgefuehrtes RSync-Script: $SCRIPTFILE" >> $LOG<br />
echo "" >> $LOG; echo "$HR" >> $LOG<br />
# Protokoll-Kopf aufbauen...<br />
else<br />
echo "Sicherungsprotokoll vom $TIMESTAMP Uhr" >> $LOG<br />
echo "" >> $LOG<br />
echo "Ausgefuehrtes RSync-Script: $SCRIPTFILE" >> $LOG<br />
echo "" >> $LOG; echo "$HR" >> $LOG<br />
fi<br />
<br />
# Fehlererkennung<br />
#-------------------------------------------------------------------------<br />
if [ -z "$TARGET" ] && [ "$NOTTOSCRIPT" -eq 1 ]; then<br />
STOP="Bitte TARGET setzen oder NOTTOSCRIPT nicht setzen..." >> $LOG<br />
fi<br />
if [ -z "$STOP" ] && [ -n "$SSH_FROM" ] && [ -n "$SSH_TO" ]; then<br />
STOP="Bitte nur SSH_FROM oder SSH_TO setzen!" >> $LOG<br />
fi<br />
if [ -z "$STOP" ] && [ -n "$SSH_TO" ] && [ -z "$TARGET" ]; then<br />
STOP="Bei SSH_TO muss TARGET angegeben werden!"<br />
fi<br />
if [ -z "$STOP" ] && [ "$NOTTOSCRIPT" -eq 1 ] && [ -z "$TARGET" ]; then<br />
STOP="Bei NOTTOSCRIPT=1 muss TARGET angegeben werden!"<br />
fi<br />
if [ -z "$STOP" ] && [ $FROMTHISDEVICE -eq 1 ] && [ -n "$SSH_FROM" ]; then<br />
STOP="Nur FROMTHISDEVICE setzen oder SSH_FROM !"<br />
fi<br />
# Ping Test<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ]; then<br />
if [ -n "$SSH_FROM" ] || [ -n "$SSH_TO" ]; then<br />
ping $REMOTEIP -c 2<br />
ONLINE="$?"<br />
if [ $ONLINE -eq 0 ]; then<br />
echo "Remoteserver $REMOTEIP ist online." >> $LOG<br />
else<br />
if [ -z "$MAC" ]; then<br />
STOP="Remoteserver $REMOTEIP ist offline!" >> $LOG<br />
else<br />
echo "Remoteserver $REMOTEIP ist offline!" >> $LOG<br />
fi<br />
fi<br />
if [ -z "$SSH_USER" ]; then<br />
STOP="Bei der Netzwerksicherung bitte SSH_USER angeben." >> $LOG<br />
fi<br />
fi<br />
fi<br />
<br />
# WOL<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ] && [ -n "$MAC" ] && [ $ONLINE -eq 1 ]; then<br />
echo "Remoteserver $REMOTEIP wird geweckt." >> $LOG<br />
if test -f /usr/bin/ether-wake; then<br />
/usr/bin/ether-wake $MAC<br />
elif test -f /usr/syno/sbin/synonet; then<br />
/usr/syno/sbin/synonet --wake $MAC eth0<br />
fi<br />
sleep $SLEEP<br />
ping $REMOTEIP -c 2<br />
ONLINE="$?"<br />
if [ $ONLINE -eq 0 ]; then<br />
echo "Remoteserver $REMOTEIP wurde hochgefahren." >> $LOG<br />
else<br />
if [ -z "$STOP" ]; then<br />
STOP="Remoteserver $REMOTEIP konnte nicht hochgefahren werden." >> $LOG<br />
fi<br />
fi<br />
fi<br />
<br />
# Verbindungstest (SSH_FROM)<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ] && [ -n "$SSH_FROM" ] && [ -z "$SSH_TO" ]; then<br />
if [ ! "$FROMSSH" ]; then<br />
STOP="Es konnte keine SSH-Verbindung zu $SSH_FROM aufgebaut werden." >> $LOG<br />
elif [ "$FROMSSH" ]; then<br />
REMOTEHOST=$($FROMSSH "echo \`hostname\`")<br />
echo "SSH-Verbindung zu $REMOTEHOST aufgebaut." >> $LOG<br />
SYNOSHARE_SOURCE="$FROMSSH"<br />
FIND="$FROMSSH find"<br />
SOURCE_TEST="$FROMSSH test"<br />
TARGET_TEST="test"<br />
if [ $HOSTNAME -eq 1 ]; then<br />
NAME="$REMOTEHOST"<br />
fi<br />
fi<br />
fi<br />
<br />
# Verbindungstest (SSH_TO)<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ] && [ -z "$SSH_FROM" ] && [ -n "$SSH_TO" ]; then<br />
if [ ! "$TOSSH" ]; then<br />
STOP="Es konnte keine SSH-Verbindung zu $SSH_TO aufgebaut werden." >> $LOG<br />
elif [ "$TOSSH" ]; then<br />
REMOTEHOST=$($TOSSH "echo \`hostname\`")<br />
echo "SSH-Verbindung zu $REMOTEHOST aufgebaut." >> $LOG<br />
SYNOSHARE_TARGET="$TOSSH"<br />
FIND="$TOSSH find"<br />
SOURCE_TEST="test"<br />
TARGET_TEST="$TOSSH test"<br />
if [ $HOSTNAME -eq 1 ]; then<br />
NAME="$LOKALHOST"<br />
fi<br />
fi<br />
fi<br />
<br />
# Verbindungstest ob Quelle bzw. Ziel eine Diskstation ist oder nicht<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ] && [ -n "$SSH_FROM" ] || [ -n "$SSH_TO" ]; then<br />
if $SOURCE_TEST -d /usr/syno/synoman; then<br />
SOURCE_PATH="/volume*"<br />
SOURCEDS="1"<br />
echo "Quellserver ist eine DS" >> $LOG<br />
elif $SOURCE_TEST ! -d /usr/syno/synoman; then<br />
SOURCEDS="0"<br />
echo "Quellserver ist keine DS" >> $LOG<br />
fi<br />
<br />
if $TARGET_TEST -d /usr/syno/synoman; then<br />
TARGET_PATH="/volume*"<br />
TARGETDS="1"<br />
echo "Zielserver ist eine DS" >> $LOG<br />
elif $TARGET_TEST ! -d /usr/syno/synoman; then<br />
TARGETDS="0"<br />
echo "Zielserver ist keine DS" >> $LOG<br />
fi<br />
<br />
elif [ -z "$STOP" ]; then<br />
SOURCE_PATH="/volume*"<br />
TARGET_PATH="/volume*"<br />
SOURCEDS="1"<br />
TARGETDS="1"<br />
fi<br />
<br />
if [ $FROMTHISDEVICE -eq 1 ]; then<br />
SOURCE_PATH="/volume*/*share"<br />
fi<br />
<br />
# Zielordner checken<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ]; then<br />
IFS="<br />
"<br />
TARGET_ESCAPE=$(echo $TARGET | sed -e 's/ /\\ /g')<br />
TARGET_DECRYPT_ESCAPE=$(echo $TARGET_DECRYPT | sed -e 's/ /\\ /g')<br />
IFS="$BACKIFS"<br />
if [ -n "$SSH_TO" ]; then<br />
DEST_DECRYPT="$TARGET_DECRYPT_ESCAPE"<br />
else<br />
DEST_DECRYPT="$TARGET_DECRYPT"<br />
fi<br />
if [ "$NOTTOSCRIPT" -eq 1 ] || [ -n "$SSH_TO" ]; then<br />
if $TARGET_TEST ! -d $TARGET_PATH/@"$DEST_DECRYPT"@ && $TARGET_TEST -d $TARGET_PATH/"$DEST_DECRYPT"; then<br />
echo "Zielordner $TARGET_DECRYPT wurde lokalisiert..." >> $LOG<br />
elif $TARGET_TEST -d $TARGET_PATH/@"$DEST_DECRYPT"@ && $TARGET_TEST -d $TARGET_PATH/"$DEST_DECRYPT"; then<br />
echo "Verschluesselter Zielordner $TARGET_DECRYPT bereits eingehangen..." >> $LOG<br />
elif $TARGET_TEST -d $TARGET_PATH/@"$DEST_DECRYPT"@ && $TARGET_TEST ! -d $TARGET_PATH/"$DEST_DECRYPT"; then<br />
echo "Verschluesselter Zielordner $TARGET_DECRYPT nicht eingehangen..." >> $LOG<br />
# Anhand des Key-Files versuchen einen verschluesselten Zielordner einbinden<br />
if test -f `dirname $0`/"$TARGET_DECRYPT".key; then<br />
echo "$TARGET_DECRYPT.key gefunden" >> $LOG<br />
echo "Verschluesselter Zielordner $TARGET_DECRYPT wird eingehangen..." >> $LOG<br />
KEYFILEDEST=$(ecryptfs-unwrap-passphrase `dirname $0`/"$TARGET_DECRYPT".key "\$1\$5YN01o9y")<br />
$SYNOSHARE_TARGET /usr/syno/sbin/synoshare --enc_mount "$DEST_DECRYPT" "$KEYFILEDEST" >> $LOG<br />
sleep 20<br />
if $TARGET_TEST -d $TARGET_PATH/@"$DEST_DECRYPT"@ && $TARGET_TEST -d $TARGET_PATH/"$DEST_DECRYPT"; then<br />
echo "Verschluesselter Zielordner $TARGET_DECRYPT wurde eingehangen..." >> $LOG<br />
elif $TARGET_TEST -d $TARGET_PATH/@"$DEST_DECRYPT"@ && $TARGET_TEST ! -d $TARGET_PATH/"$DEST_DECRYPT"; then<br />
echo "Verschluesselter Zielordner $TARGET_DECRYPT konnte nicht eingehangen werden..." >> $LOG<br />
fi<br />
else<br />
echo "Kein Keyfile fuer $TARGET_DECRYPT gefunden! Verschluesselte Ordner muessen eingehangen werden!"<br />
fi<br />
fi<br />
if $TARGET_TEST ! -d $TARGET_PATH/"$DEST_DECRYPT"; then<br />
if [ -z "$STOP" ]; then<br />
STOP="Zielordner /$TARGET_DECRYPT nicht gefunden!"<br />
fi<br />
fi<br />
fi<br />
fi<br />
<br />
# Quellordner checken<br />
#-------------------------------------------------------------------------<br />
IFS="<br />
"<br />
for SHARE in $SOURCES; do<br />
if [[ ${SHARE:0:1} != \/ ]] ; then<br />
SHARE="/$SHARE"<br />
fi<br />
SHARE_ESCAPE=$(echo $SHARE | sed -e 's/ /\\ /g')<br />
SHARE_CUT="${SHARE#*/}"<br />
SHARE_DECRYPT="${SHARE_CUT%%/*}"<br />
SHARE_DECRYPT_ESCAPE=$(echo $SHARE_DECRYPT | sed -e 's/ /\\ /g')<br />
IFS="$BACKIFS"<br />
if [ -n "$SSH_FROM" ]; then<br />
SOURCE_DECRYPT="$SHARE_DECRYPT_ESCAPE"<br />
else<br />
SOURCE_DECRYPT="$SHARE_DECRYPT"<br />
fi<br />
if $SOURCE_TEST ! -d $SOURCE_PATH/@"$SOURCE_DECRYPT"@ && $SOURCE_TEST -d $SOURCE_PATH/"$SOURCE_DECRYPT"; then<br />
echo "Quellordner $SHARE_DECRYPT wurde lokalisiert..." >> $LOG<br />
elif $SOURCE_TEST -d $SOURCE_PATH/@"$SOURCE_DECRYPT"@ && $SOURCE_TEST -d $SOURCE_PATH/"$SOURCE_DECRYPT"; then<br />
echo "Verschluesselter Quellordner $SHARE_DECRYPT bereits eingehangen..." >> $LOG<br />
elif $SOURCE_TEST -d $SOURCE_PATH/@"$SOURCE_DECRYPT"@ && $SOURCE_TEST ! -d $SOURCE_PATH/"$SOURCE_DECRYPT"; then<br />
echo "Verschluesselter Quellordner $SHARE_DECRYPT nicht eingehangen..." >> $LOG<br />
# Anhand des Key-Files versuchen einen verschluesselten Quellordner einbinden<br />
if test -f `dirname $0`/"$SHARE_DECRYPT".key; then<br />
echo "$SHARE_DECRYPT.key gefunden" >> $LOG<br />
echo "Verschluesselter Quellordner $SHARE_DECRYPT wird eingehangen..." >> $LOG<br />
KEYFILESHARE=$(ecryptfs-unwrap-passphrase `dirname $0`/"$SHARE_DECRYPT".key "\$1\$5YN01o9y")<br />
$SYNOSHARE_SOURCE /usr/syno/sbin/synoshare --enc_mount "$SHARE_DECRYPT" "$KEYFILESHARE" >> $LOG<br />
sleep 20<br />
if $SOURCE_TEST -d $SOURCE_PATH/@"$SOURCE_DECRYPT"@ && $SOURCE_TEST -d $SOURCE_PATH/"$SOURCE_DECRYPT"; then<br />
echo "Verschluesselter Quellordner $SHARE_DECRYPT wurde eingehangen..." >> $LOG<br />
elif $SOURCE_TEST -d $SOURCE_PATH/@"$SOURCE_DECRYPT"@ && $SOURCE_TEST ! -d $SOURCE_PATH/"$SOURCE_DECRYPT"; then<br />
echo "Verschluesselter Quellordner $SHARE_DECRYPT konnte nicht eingehangen werden..." >> $LOG<br />
fi<br />
else<br />
STOP="Kein Keyfile fuer $SHARE_DECRYPT gefunden! Verschluesselte Ordner muessen eingehangen werden! Datensicherung ABGEBROCHEN..."<br />
fi<br />
fi<br />
done<br />
<br />
# Ziel definieren<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ]; then<br />
if [ -n "$SSH_TO" ] && [ -n "$TARGET" ]; then<br />
DEST_FULL=$($TOSSH "echo $TARGET_PATH/$TARGET_DECRYPT_ESCAPE")<br />
DEST_CUT="${DEST_FULL#*/}"<br />
DEST_VOL="${DEST_CUT%%/*}"<br />
if [ $TARGETDS -eq 1 ]; then<br />
DESTTARGET="/$DEST_VOL$TARGET_ESCAPE"<br />
else<br />
DESTTARGET="$TARGET_ESCAPE"<br />
fi<br />
if [ $HOSTNAME -eq 1 ]; then<br />
DESTINATION="$DESTTARGET/$NAME"<br />
else<br />
DESTINATION="$DESTTARGET"<br />
fi<br />
elif [ -z "$SSH_TO" ] && [ "$NOTTOSCRIPT" -eq 0 ] && [ -z "$TARGET" ]; then<br />
if [ $HOSTNAME -eq 1 ]; then<br />
DESTINATION="`dirname $0`$TARGET_EMPTY/$NAME"<br />
else<br />
DESTINATION="`dirname $0`$TARGET_EMPTY"<br />
fi<br />
elif [ -z "$SSH_TO" ] && [ "$NOTTOSCRIPT" -eq 1 ] && [ -n "$TARGET" ]; then<br />
DEST_FULL=$(echo $TARGET_PATH/"$TARGET_DECRYPT")<br />
DEST_CUT="${DEST_FULL#*/}"<br />
DEST_VOL="${DEST_CUT%%/*}"<br />
if [ -n "$TARGETDS" ]; then<br />
DESTTARGET="/$DEST_VOL$TARGET"<br />
else<br />
DESTTARGET="$TARGET"<br />
fi<br />
if [ $HOSTNAME -eq 1 ]; then<br />
DESTINATION="$DESTTARGET/$NAME"<br />
else<br />
DESTINATION="$DESTTARGET"<br />
fi<br />
elif [ -z "$SSH_TO" ] && [ "$NOTTOSCRIPT" -eq 0 ]; then<br />
if [ $HOSTNAME -eq 1 ]; then<br />
DESTINATION="`dirname $0`$TARGET/$NAME"<br />
else<br />
DESTINATION="`dirname $0`$TARGET"<br />
fi<br />
fi<br />
mkdir -p "$DESTINATION"<br />
if [ -n "$SSH_TO" ] && [ "$NOTTOSCRIPT" -eq 0 ]; then<br />
STOP="Bei SSH_TO muss NOTTOSCRIPT gesetzt werden!" >> $LOG<br />
elif [ -n "$SSH_TO" ] && [ "$NOTTOSCRIPT" -eq 1 ] && [ -n "$TARGET" ]; then<br />
if $TARGET_TEST -d $TARGET_PATH/$TARGET_DECRYPT_ESCAPE; then<br />
$TOSSH mkdir -p "$DESTINATION"<br />
fi<br />
fi<br />
fi<br />
<br />
# Check ob Zielordner erstellt wurde bzw. vorhanden war.<br />
if $TARGET_TEST ! -d "$DESTINATION"; then<br />
if [ -z "$STOP" ]; then<br />
STOP="Zielordner $TARGET konnte nicht erstellt werden bzw. ist nicht vorhanden !"<br />
fi<br />
fi<br />
<br />
echo "" >> $LOG<br />
echo "$HR" >> $LOG<br />
echo "" >> $LOG<br />
# Beginn der RSync-Datensicherung<br />
#--------------------------------------------------------------------------<br />
IFS="<br />
"<br />
for SHARE in $SOURCES; do<br />
if [ -z "$STOP" ]; then<br />
echo "" >> $LOG<br />
if [[ ${SHARE:0:1} != \/ ]] ; then<br />
SHARE="/$SHARE"<br />
fi<br />
SHARE_ESCAPE=$(echo $SHARE | sed -e 's/ /\\ /g')<br />
SHARE_CUT="${SHARE#*/}"<br />
SHARE_DECRYPT="${SHARE_CUT%%/*}"<br />
IFS="$BACKIFS"<br />
unset FORERROR<br />
if [ -n "$SSH_FROM" ]; then<br />
SOURCE="$SHARE_ESCAPE"<br />
else<br />
SOURCE="$SHARE"<br />
fi<br />
<br />
if $SOURCE_TEST ! -d $SOURCE_PATH"$SOURCE"; then<br />
ERROR="Quellordner $SHARE nicht erreichbar..." >> $LOG<br />
FORERROR="1"<br />
elif $SOURCE_TEST -d $SOURCE_PATH"$SOURCE"; then<br />
echo "Quellordner $SHARE erreichbar." >> $LOG<br />
fi<br />
if [ $FROMTHISDEVICE -eq 1 ] && [ -z "$SSH_FROM" ]; then<br />
SOURCE="`dirname $0`$SHARE"<br />
elif [ $FROMTHISDEVICE -eq 0 ] && [ -z "$SSH_FROM" ]; then<br />
SOURCE="$SHARE"<br />
fi<br />
<br />
if [ -z "$STOP" ] && [ -z "$FORERROR" ]; then<br />
# SSH-SSH_FROM RSync-Datensicherung VON einer entfernten DS oder komp. Server<br />
#--------------------------------------------------------------------------<br />
if [ -n "$SSH_FROM" ] && [ -z "$SSH_TO" ] && [ -n "$DESTINATION" ]; then<br />
echo "$HR" >> $LOG<br />
echo "Starte Datensicherung: $REMOTEHOST$SHARE nach $DESTINATION" >> $LOG<br />
echo "$HR" >> $LOG<br />
if [ $SOURCEDS -eq 1 ]; then<br />
rsync -e "$FROMRSYNC" $SYNCOPT $SSH_FROM:/volume*"$SOURCE" $LOGSTAT $EXCLUDE $RECYCLE "$DESTINATION" >> $LOG<br />
RSYNC_EXIT="$?"<br />
elif [ $SOURCEDS -ne 1 ]; then<br />
rsync -e "$FROMRSYNC" $SYNCOPT $SSH_FROM:"$SOURCE" $LOGSTAT $EXCLUDE $RECYCLE "$DESTINATION" >> $LOG<br />
RSYNC_EXIT="$?"<br />
fi<br />
# SSH-SSH_TO RSync-Datensicherung AUF eine entfernte DS oder komp. Server<br />
#--------------------------------------------------------------------------<br />
elif [ -n "$SSH_TO" ] && [ -z "$SSH_FROM" ] && [ -n "$DESTINATION" ]; then<br />
echo "$HR" >> $LOG<br />
echo "Starte Datensicherung: $LOKALHOST$SHARE nach $DESTINATION" >> $LOG<br />
echo "$HR" >> $LOG<br />
if [ $SOURCEDS -eq 1 ] && [ $FROMTHISDEVICE -ne 1 ]; then<br />
rsync -e "$TORSYNC" $SYNCOPT /volume*"$SOURCE" $LOGSTAT $EXCLUDE $RECYCLE $SSH_TO:"$DESTINATION" >> $LOG<br />
RSYNC_EXIT="$?"<br />
elif [ $SOURCEDS -ne 1 ] || [ $FROMTHISDEVICE -eq 1 ]; then<br />
rsync -e "$TORSYNC" $SYNCOPT "$SOURCE" $LOGSTAT $EXCLUDE $RECYCLE $SSH_TO:"$DESTINATION" >> $LOG<br />
RSYNC_EXIT="$?"<br />
fi<br />
# RSync- Lokale Datensicherung auf Volume, USB- oder SATA-Datentr�ger<br />
#-------------------------------------------------------------------------<br />
elif [ -z "$SSH_TO" ] && [ -z "$SSH_FROM" ] && [ -n "$DESTINATION" ]; then<br />
echo "$HR" >> $LOG<br />
echo "Starte Datensicherung: $REMOTEHOST$SHARE nach $DESTINATION" >> $LOG<br />
echo "$HR" >> $LOG<br />
if [ $SOURCEDS -eq 1 ] && [ $FROMTHISDEVICE -ne 1 ]; then<br />
rsync $SYNCOPT /volume*"$SOURCE" $LOGSTAT $EXCLUDE $RECYCLE "$DESTINATION" >> $LOG<br />
RSYNC_EXIT="$?"<br />
elif [ $SOURCEDS -ne 1 ] || [ $FROMTHISDEVICE -eq 1 ]; then<br />
rsync $SYNCOPT "$SOURCE" $LOGSTAT $EXCLUDE $RECYCLE "$DESTINATION" >> $LOG<br />
RSYNC_EXIT="$?"<br />
fi<br />
fi<br />
echo "" >> $LOG<br />
if [ $RSYNC_EXIT -ne 0 ]; then<br />
RSYNC_CODE="$RSYNC_EXIT"<br />
fi<br />
fi<br />
fi<br />
done<br />
<br />
# RSync Exit-Code = Fehlermeldung<br />
#-------------------------------------------------------------------------<br />
# Exit-Code: Entfernter Server ausgeschaltet?<br />
if [ $RSYNC_CODE -eq 43 ]; then<br />
echo "Entfernte DS oder RSync komp. Server nicht Online? Bitte RSYNC Port kontrollieren!" >> $LOG<br />
# Exit-Code: DSL-Verbindung getrennt?<br />
elif [ $RSYNC_CODE -eq 255 ]; then<br />
echo "Bitte Internetverbindung oder RSYNC Port kontrollieren!" >> $LOG<br />
# Exit-Code ausgeben...<br />
elif [ $RSYNC_CODE -ne 0 ]; then<br />
echo "RSync Fehlermeldung (Exit Code): $RSYNC_CODE" >> $LOG<br />
fi<br />
<br />
# RSync Exit-Code = Erfolgreich bzw. Unvollständig<br />
#-------------------------------------------------------------------------<br />
if [ -z "$RSYNC_CODE" ] && [ -z "$STOP" ] && [ -z "$ERROR" ]; then<br />
echo "$HR" >> $LOG<br />
echo "RSync-Datensicherung erfolgreich. Sicherungsziel: $DESTINATION" >> $LOG<br />
if [ -z "$DSMNOTIFY" ]; then<br />
DSMNOTIFY="RSync-Datensicherung erfolgreich. Sicherungsziel: $DESTINATION"<br />
fi<br />
# Signalausgabe - Datensicherung erfolgreich<br />
if [ $SIGNAL -eq 1 ]; then<br />
echo 3 >/dev/ttyS1; echo 8 >/dev/ttyS1<br />
sleep 2<br />
fi<br />
# RSync Exit-Code = Fehlermeldung<br />
elif [ $RSYNC_CODE -ne 0 ] || [ -n "$STOP" ] || [ -n "$ERROR" ]; then<br />
echo "$HR" >> $LOG<br />
echo "RSync-Datensicherung unvollstaendig oder fehlgeschlagen - Sicherungsziel: $DESTINATION" >> $LOG<br />
if [ -z "$DSMNOTIFY" ]; then<br />
DSMNOTIFY="RSync-Datensicherung unvollstaendig oder fehlgeschlagen - Bitte Protokoll prüfen!"<br />
fi<br />
fi<br />
echo "$HR" >> $LOG; echo "" >> $LOG<br />
if [ -n "$STOP" ]; then<br />
echo "FEHLER: $STOP" >> $LOG<br />
fi<br />
if [ -n "$ERROR" ]; then<br />
echo "FEHLER: $ERROR" >> $LOG<br />
fi<br />
<br />
# DSM-Systemkonfiguration exportieren<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ] && [ "$DSM_EXPORT" -eq 1 ] && [ -z "$RSYNC_CODE" ]; then<br />
if [ -n "$SSH_FROM" ] && [ -z "$SSH_TO" ] && [ -n "$SOURCEDS" ]; then<br />
$FROMSSH /usr/syno/bin/synoconfbkp export --filepath DSMConfig_TEMP.dss<br />
mkdir -p "$DESTINATION"/@DSMConfig<br />
$SCP -r $SSH_USER@$SSH_FROM:DSMConfig_TEMP.dss "$DESTINATION"/@DSMConfig/DSMConfig_"$DATE"_$REMOTEHOST.dss<br />
$FROMSSH rm -rf DSMConfig_TEMP.dss<br />
echo "Sicherung der DSM-Systemkonfiguration von $REMOTEHOST erfolgreich zu $LOKALHOST kopiert.." >> $LOG<br />
echo "" >> $LOG<br />
elif [ -z "$SSH_FROM" ] && [ -n "$SSH_TO" ]; then<br />
synoconfbkp export --filepath `dirname $0`/@DSMConfig/DSMConfig_"$DATE"_$LOKALHOST.dss<br />
$TOSSH mkdir -p "$DESTINATION"/@DSMConfig<br />
$SCP -r `dirname $0`/@DSMConfig/*.dss $SSH_USER@$SSH_TO:"$DESTINATION"/@DSMConfig/<br />
rm -rf `dirname $0`/@DSMConfig<br />
echo "Sicherung der DSM-Systemkonfiguration von $LOKALHOST erfolgreich zu $REMOTEHOST kopiert.." >> $LOG<br />
echo "" >> $LOG<br />
elif [ -z "$SSH_FROM" ] && [ -z "$SSH_TO" ]; then<br />
mkdir -p "$DESTINATION"/@DSMConfig<br />
synoconfbkp export --filepath "$DESTINATION"/@DSMConfig/DSMConfig_"$DATE"_$LOKALHOST.dss<br />
echo "Lokale Sicherung der DSM-Systemkonfiguration erfolgreich." >> $LOG<br />
echo "" >> $LOG<br />
fi<br />
fi<br />
<br />
# Rotationszyklus für das Löschen von @Recycle, @Logfiles und @DSMConfig<br />
#-------------------------------------------------------------------------<br />
# Dateien im Ordner @Recycle die älter als x Tage sind, löschen.<br />
if $TARGET_TEST -d "$DESTINATION"/@Recycle/; then<br />
if [ -z "$STOP" ] && [ -n "$RECYCLE_ROTATE" ] && [ -z "$ERROR" ]; then<br />
$FIND "$DESTINATION"/@Recycle/* -type d -mtime +$RECYCLE_ROTATE -exec rm -rf {} \;<br />
echo "HINWEIS: Daten aus dem Ordner /@Recycle, die mehr als $RECYCLE_ROTATE Tage alt waren, wurden geloescht." >> $LOG<br />
echo "" >> $LOG<br />
fi<br />
fi<br />
# Dateien im Ordner @Logfiles die älter als x Tage sind, löschen.<br />
if $TARGET_TEST -d `dirname $0`/@Logfiles/; then<br />
if [ -z "$STOP" ] && [ -n "$LOGFILES_ROTATE" ] && [ -z "$ERROR" ]; then<br />
find `dirname $0`/@Logfiles -name "*.log" -type f -mtime +$LOGFILES_ROTATE -exec rm {} \;<br />
echo "HINWEIS: Daten aus dem Ordner /@Logfiles, die mehr als $LOGFILES_ROTATE Tage alt waren, wurden geloescht." >> $LOG<br />
echo "" >> $LOG<br />
fi<br />
fi<br />
# Dateien im Ordner @DSMConfig die älter als x Tage sind, löschen.<br />
if $TARGET_TEST -d "$DESTINATION"/@DSMConfig/; then<br />
if [ -z "$STOP" ] && [ -n "$DSMCONFIG_ROTATE" ] && [ -z "$ERROR" ]; then<br />
$FIND "$DESTINATION"/@DSMConfig -name "*.dss" -type f -mtime +$DSMCONFIG_ROTATE -exec rm {} \;<br />
echo "HINWEIS: Daten aus dem Ordner /@DSMConfig, die mehr als $DSMCONFIG_ROTATE Tage alt waren, wurden geloescht." >> $LOG<br />
echo "" >> $LOG<br />
fi<br />
fi<br />
<br />
# Verschlüsselte Shares wieder aushängen..<br />
#-------------------------------------------------------------------------<br />
if [ $UNMOUNT -ne 0 ] && [ -n "$TARGETDS" ]; then<br />
if [ $UNMOUNT -ne 2 ]; then<br />
IFS="<br />
"<br />
TARGET_ESCAPE=$(echo $TARGET | sed -e 's/ /\\ /g')<br />
TARGET_DECRYPT_ESCAPE=$(echo $TARGET_DECRYPT | sed -e 's/ /\\ /g')<br />
IFS="$BACKIFS"<br />
if [ -n "$SSH_TO" ]; then<br />
DEST_DECRYPT="$TARGET_DECRYPT_ESCAPE"<br />
else<br />
DEST_DECRYPT="$TARGET_DECRYPT"<br />
fi<br />
if $TARGET_TEST -d /volume*/@"$DEST_DECRYPT"@ && $TARGET_TEST -d /volume*/"$DEST_DECRYPT"; then<br />
echo "Ziel: $TARGET_DECRYPT wurde ausgehangen" >> $LOG<br />
$SYNOSHARE_TARGET /usr/syno/sbin/synoshare --enc_unmount "$DEST_DECRYPT" >> $LOG<br />
sleep 10<br />
fi<br />
fi<br />
fi<br />
if [ $UNMOUNT -ne 0 ] && [ -n "$SOURCEDS" ]; then<br />
if [ $UNMOUNT -ne 3 ]; then<br />
IFS="<br />
"<br />
for SHARE in $SOURCES; do<br />
SHARE_ESCAPE=$(echo $SHARE | sed -e 's/ /\\ /g')<br />
SHARE_CUT="${SHARE#*/}"<br />
SHARE_DECRYPT="${SHARE_CUT%%/*}"<br />
SHARE_DECRYPT_ESCAPE=$(echo $SHARE_DECRYPT | sed -e 's/ /\\ /g')<br />
IFS="$BACKIFS"<br />
if [ -n "$SSH_FROM" ]; then<br />
SOURCE_DECRYPT="$SHARE_DECRYPT_ESCAPE"<br />
else<br />
SOURCE_DECRYPT="$SHARE_DECRYPT"<br />
fi<br />
if $SOURCE_TEST -d /volume*/@"$SOURCE_DECRYPT"@ && $SOURCE_TEST -d /volume*/"$SOURCE_DECRYPT"; then<br />
echo "Quelle: $SHARE_DECRYPT wurde ausgehangen" >> $LOG<br />
$SYNOSHARE_SOURCE /usr/syno/sbin/synoshare --enc_unmount "$SHARE_DECRYPT" >> $LOG<br />
sleep 10<br />
fi<br />
done<br />
fi<br />
fi<br />
unset KEYFILEPW<br />
<br />
# Entfernten Server herunterfahren<br />
#-------------------------------------------------------------------------<br />
if [ $SHUTDOWN -ne 0 ] && [ -z "$RSYNC_CODE" ] && [ -z "$STOP" ] && [ -z "$ERROR" ]; then<br />
if [ -n "$SSH_FROM" ]; then<br />
$FROMSSH poweroff<br />
echo "Remoteserver $SSH_FROM wird heruntergefahren." >> $LOG<br />
elif [ -n "$SSH_TO" ]; then<br />
$TOSSH poweroff<br />
echo "Remoteserver $SSH_TO wird heruntergefahren." >> $LOG<br />
fi<br />
fi<br />
<br />
# Benachrichtigung an die DSM-Administratorengruppe sowie E-Mail senden<br />
#-------------------------------------------------------------------------<br />
if [ -n "$DSMNOTIFY" ]; then<br />
synodsmnotify @administrators "Script: $SCRIPTNAME" "$DSMNOTIFY"<br />
fi<br />
if [ -n "$EMAIL" ]; then<br />
if [ "$EMAILFAIL" -eq 1 ] && [ -z "$RSYNC_CODE" ] || [ -n "$STOP" ] || [ -n "$ERROR" ]; then<br />
ssmtp $EMAIL < $LOG<br />
elif [ "$EMAILFAIL" -eq 0 ]; then<br />
ssmtp $EMAIL < $LOG<br />
fi<br />
fi<br />
<br />
# Script beenden...<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ] && [ -z "$RSYNC_CODE" ] && [ -z "$ERROR" ] && [ "$AUTORUN" -eq 1 ]; then<br />
exit 100<br />
else<br />
exit $?<br />
fi<br />
<br />
</pre><br />
<br />
=Erstellen eines RSA-Keys für den Aufbau einer SSH-Verbindung=<br />
Es soll eine dateibasierte Datensicherung mittels RSync von Diskstation "A" (Produktivsystem) auf Diskstation "B" (Backupsystem) angelegt werden. Dabei übernimmt das Backupsystem die Aufgabe des Servers, worüber der Verbindungsaufbau und der eigentliche Sicherungsvorgang initiiert wird. Das Produktivsystem übernimmt somit die Aufgabe des Client und muß dem ganzen Vorgang nur zustimmen. Um dies zu ermöglichen muß im Vorfeld ein RSA-Schlüssel auf dem Backupsystem erzeugt und dem Produktivsystem der öffentliche Schlüssel mitgeteilt werden, um so den automatischen Verbindungsaufbau per SSH zu ermöglichen. Nachdem die SSH-Verbindung erfolgreich aufgebaut wurde, wird der eigentliche rsync-Befehl abgesetzt und somit die Datensicherung ausgelöst. Um auch in die Gegenrichtung sichern zu können, muss die RSA-Key Einrichtung dementsprechend gedreht werden, so das am Ende sowohl Diskstation "A" als auch Diskstation "B" Quelle als auch Ziel der Datensicherung darstellen können.<br />
<br />
Im folgenden werden alle Einstellungen für den Benutzer '''root''' getroffen, da nur unter diesem Benutzer die Signalausgabe als auch das Sichern der DSM-Konfiguration funktioniert. Wer hier lieber als "admin" oder vielleicht sogar als eingeschränkter Benutzer "rsync" arbeiten möchte, muss nachfolgend an den entsprechenden Stellen den gewünschten Benutzernamen einsetzen. Das hier verwendete Homeverzeichnis des Benutzer "root" wird im folgenden nur in dessen Kurzform mit ~/ angesprochen, wobei hier immer auf /root verwiesen wird. Alle anderen Benutzerkonten befinden sich im Homeverzeichnis /home/[BENUTZERNAME] bzw. richtigerweise unter /var/services/homes/[BENUTZERNAME].<br />
<br />
(Nachfolgend symbolisiert das Zeichen "$" nur den Zeilenanfang und wird nicht mit geschrieben)<br />
<br />
<br />
'''Hinweis zum Loginvorgang bis DSM 5.2 für den Benutzer "root"'''<br />
<pre><br />
Login als Benutzer "root" mit dem Passwort des DSM-Benutzer "admin"<br />
</pre><br />
<br />
'''Hinweis zum Loginvorgang ab DSM 6 für den Benutzer "root"'''<br />
<pre><br />
Login als Benutzer "admin" mit dem Passwort des DSM-Benutzer "admin"<br />
<br />
"root"-Zugriff erhält man dann über die Eingabe von...<br />
<br />
$ sudo -i<br />
<br />
...und gibt abermals das Password des DSM-Benutzer "admin" ein.<br />
</pre> <br />
<br />
<br />
'''Beginnen wir auf dem Server der "Diskstation B" oder besser gesagt, dem Backupsystem'''<br />
<br />
Auf der Konsole der DS als Benutzer "root" einloggen. <br />
Erstellen des RSA-Schlüssels mit...<br />
<br />
<pre>$ ssh-keygen -t rsa</pre><br />
<br />
Bei der Erstellung wird man nach Speicherort und Passphrase gefragt...<br />
<br />
<pre><br />
Enter file in which to save the key (/root/.ssh/id_rsa):<br />
Enter passphrase (empty for no oassphrase):<br />
Enter same passphrase again:<br />
</pre><br />
<br />
... hier bitte nichts eintragen, sondern einfach nur mit der "Return-Taste" bestätigen. Nach der Ausführung werden im Homeverzeichnis des Benutzer "root" folgende Ordner und Dateien erstellt:<br />
<br />
<pre><br />
~/.ssh<br />
~/.ssh/id_rsa<br />
~/.ssh/id_rsa.pub<br />
</pre><br />
<br />
An dieser Stelle sollte man gleich noch die Ordner- und Dateirechte anpassen.<br />
<br />
<pre>$ chmod 0700 ~/.ssh<br />
$ chmod 0600 ~/.ssh/id_rsa*<br />
</pre><br />
<br />
Den Inhalt der Datei ~/.ssh/id_rsa.pub z.B. mit vi, nano oder dem AdminTool editieren und den Inhalt in die Zwischenablage kopieren.<br />
<br />
<pre>$ nano ~/.ssh/id_rsa.pub</pre><br />
<br />
Wichtig, wie hier im Beispiel gezeigt (RSA-Schlüssel wurde hier gekürzt) ist, das alles in einer Zeile steht...<br />
<br />
<pre>ssh-rsa AAAAB3NzaC1yc2..*gekürzt*...EAAAADAQABA3e root@Backupstation</pre><br />
<br />
'''Weiter gehts auf dem Client der "Diskstation A", also dem Produktivsystem.'''<br />
<br />
Auf der Konsole der DS als Benutzer "root" einloggen. Erstellen eines neuen Ornders<br />
<br />
<pre>$ mkdir ~/.ssh</pre><br />
<br />
Daraufhin wird unter ~/.ssh/ eine neue Datei namens "authorized_keys" erstellt...<br />
<br />
<pre>$ nano ~/.ssh/authorized_keys</pre><br />
<br />
...und der Inhalt aus der Zwischenablage, also der Inhalt aus der ~/.ssh/id_rsa.pub, die auf dem Backupsystem erstellt wurde, in die geöffnete Datei eingefügt. Nach dem Speichern und verlassen des Editors müssen auch hier noch die Ordner- und Dateirechte richtig gesetzt werden.<br />
<br />
<pre><br />
$ chmod 0700 ~/.ssh<br />
$ chmod 0600 ~/.ssh/authorized_keys<br />
</pre><br />
<br />
'''Zurück auf der Konsole der Backupstation.'''<br />
<br />
Als Benutzer "root" auf der DS einloggen und als Erstes die SSH-Verbindung prüfen mit...<br />
<br />
<pre>$ ssh root@IP-DER-DISKSTATION_A -p 22</pre><br />
<br />
Der Verbindungsaufbau möchte vom System nochmal mit "yes" bestätigt werden um anschließend auf der Konsole des Produktivsystemes zu landen. Diese Verbindung kann man durch die Eingabe eines...<br />
<br />
<pre>$ exit</pre><br />
<br />
... wieder beenden. Durch den Verbindungsaufbau wurde nun in der Datei ~/.ssh/known_hosts ein neuer Eintrag hinzugefügt, der die Zugangsdaten zur Diskstation beinhaltet. Kontrollieren kann man das mit...<br />
<br />
<pre>$ nano ~/.ssh/known_hosts</pre><br />
<br />
Nachdem alles gut verlaufen ist, wird die Konsole wieder geschlossen mit...<br />
<br />
<pre>$ exit</pre><br />
<br />
=Release Notes=<br />
<br />
'''Release Notes vom 10.05.2016'''<br />
(Knapp 150 Zeilen Script-Code wurden seit dem letzen Update hinzugefügt.)<br />
* Es wurde eine neue Variable (MAC) geschaffen um entfernte Server per WOL zu starten.<br />
* Es wurde eine neue Variable (SLEEP) geschaffen um dem entfernten Server ein Zeitfenster zum starten zu geben.<br />
* Es wurde eine neue Variable (SHUTDOWN) geschaffen um entfernte Server auszuschalten.<br />
* Anhand der drei grade genannten Variablen können demnach entfernte Server per WOL geweckt, die eigentliche Datensicherung ausgeführt werden um im Anschluss den entfernten Server bei Bedarf wieder auszuschalten. <br />
* Es wurde eine neue Variable (FROMTHISDEVICE) geschaffen um Inhalte eines USB/SATA-Datenräger auf eine Diskstation oder einem entfernten, RSync-kompatiblen Server zu sichern.<br />
* Quellen und Ziel können ab sofort auch Leerzeichen enthalten. <br />
<br />
'''Release Notes vom 01.05.2016'''<br />
* Es wurde eine neue Variable (SSH_PORT) geschaffen um einen abweichenden SSH-Port angeben zu können.<br />
* Es wurde eine neue Variable (RSYNC_PORT) geschaffen um einen abweichenden RSync-Port angeben zu können.<br />
* Es wurde eine neue Variable (EMAILFAIL) geschaffen um nur bei einer Störung per E-Mail benachrichtigt zu werden.<br />
* Alle "schaltbaren" Benutzer-Variablen wurden nach dem Schema "0" = aus / "1" = an umstrukturiert. Ursprünglich wurde der Wert bei Zustand "aus" einfach leer gelassen, also "". <br />
* Kommentare im Benutzer-Eingabebereich des Scripts wurden optimiert.<br />
* Neben der bereits funktionierenden Sicherung von und auf eine weitere Diskstation funktioniert jetzt auch das Sichern von und auf einen RSync-kompatible Server. Das Script erkennt hierbei automatisch ob es sich um eine Diskstation oder einen RSync-kompatiblen Server handelt und passt die Sicherungs-Pfade dementsprechend an. Diskstation arbeiten i.d.R. mit einem /volume[x], RSync-kompatible Server tun das in der Regel nicht.<br />
* Viele weitere Detailverbesserungen, die hier nicht alle aufgeführt werden können. Nur so viel... das Script ist um weitere 100 Zeilen Scipt-Code gewachsen.<br />
<br />
=Externe Links=<br />
*[http://www.synology-forum.de/showthread.html?72786-Projekt-rsync-Alternative-dateibasierte-Datensicherung Forum Post]<br />
*[http://wpkg.org/Rsync_exit_codes rsync Exit Codes]<br />
*[http://www.synology-wiki.de/index.php/LEDs_und_Buttons LEDs und Buttons (zur Signalsteuerung)]</div>Itommeshttps://www.synology-wiki.de/index.php?title=Dateibasierte_RSync-Datensicherung_auf_externen_Datentr%C3%A4ger_oder_RSync_kompatiblen_Server&diff=7076Dateibasierte RSync-Datensicherung auf externen Datenträger oder RSync kompatiblen Server2016-05-10T19:25:19Z<p>Itommes: /* Release Notes */</p>
<hr />
<div>=Einleitung=<br />
<br />
'''Diese Anleitung zur dateibasierten RSync-Datensicherung bietet folgende Möglichkeiten...'''<br />
<br />
* Quelle(n) und/oder Ziel können unverschlüsselt sein<br />
* Quelle(n) und/oder Ziel können verschlüsselt sein <br />
* Sicherung innerhalb eines /volume<br />
* Sicherung zwischen internen /volumes<br />
* Sicherung auf lokal angeschlossene USB-/SATA-Datenträger sowie eingebundene Remote-Shares (nur unverschlüsselt)<br />
* Sicherung von einer entfernten DS oder RSync-kompatilben Server<br />
* Sicherung auf eine entfernte DS oder RSync-kompatilben Server<br />
* (weitere Konstellationen sind möglich, wurden jedoch nicht getestet) <br />
<br />
'''Hinweis:''' Die Verschlüsselung beruht hierbei auf der von Synology verwendeten Ordnerverschlüsselung (eCryptfs). Um verschlüsselte gemeinsame Ordner einbinden zu können, wird das Key-File also der Exportschlüssel benötigt. Diesen erhält man über die DSM-Systemsteuerung/Gemeinsame Ordner.<br />
<br />
=Anmerkung=<br />
Bevor ihr anfangt, nehmt bitte noch den Artikel "[[Wichtige Informationen zum Modden der Synology Stations]]" zur Kenntnis. <br />
<br />
Auch wenn dieses Script intensiv auf einwandfreie Funktion hin getestet wurde, so kann eine Fehlfunktion und demzufolge ein möglicher Datenverlust nicht ausgeschlossen werden. Aus diesem Grund solltet ihr das System erstmal mit unwichtigen Testdaten auf Herz und Nieren prüfen und sich mit der Arbeitsweise des Scripts und dessen Funktionen vertraut machen bevor ihr das ganze "produktiv" einsetzt. '''Ihr verwendet dieses Script auf eigene Gefahr.'''<br />
<br />
=Voraussetzungen=<br />
* Umgang mit dem DSM Aufgabenplaner <br />
* Umgang mit einem Editor seiner Wahl (z.B. Notepad++ oder dem DSM Text-Editor)<br />
* Grundkenntnisse im Umgang mit Shell-Scripten<br />
* Umgang mit der Konsole (bei Verwendung des SSH-Zuganges)<br />
* Zum versenden einer E-Mail muss im DSM unter Hauptmenü/Systemsteuerung/Benachrichtigung eine E-Mail Adresse hinterlegt sein.<br />
* Ein externer USB- oder SATA-Datenträger, eine weitere Synology Diskstation oder einen rsync-kompatiblen Server im Netzwerk.<br />
* Optional: autorun für externe Datenträger (Version 1.7)<br />
<br />
=Erläuterungen zur Funktion und Arbeitsweise=<br />
<br />
<pre><br />
Diskstation<br />
| |<br />
| '--> Aufgabenplaner ------------------------------<br />
| | |<br />
| '--> Such-Script -----> USB/SATA-Share ---> Ausführungs-<br />
| | Script<br />
'----------------> USB/SATA-Share --> autorun -------- (Key-Files)<br />
|<br />
.---------------------------'<br />
|<br />
V<br />
.---------- Quelle <--- definiere ---> Ziel----------.<br />
| | | |<br />
V '-- lokale/intern/extern --' V<br />
lokalisiere Quelle(n) lokalisiere Ziel<br />
| | <br />
| Protokoll/E-Mail |<br />
|--> Verschlüsselte | Verschlüsseltes <--|<br />
| Quelle(n) anhand der | Ziel anhand der |<br />
| Key-Files einhängen <--- aushängen ---> Key-Files einhängen |<br />
| | | | |<br />
| V | V |<br />
'--------------------->> !! DATENSICHERUNG !! >>---------------------'<br />
| |<br />
'-- lokale/intern/extern -'<br />
<br />
</pre><br />
<br />
<br />
'''Scriptausführung über den DSM-Aufgabenplaner'''<br />
<br />
Das manuelle oder automatisierte Aufrufen von Such- oder Ausführungs-Script wird komfortabel über den DSM - Aufgabenplaner gesteuert. Das Such-Script hat dabei die Aufgabe, das Ausführungs-Script zu lokalisieren und starten. Es wird jedoch nur bei der Verwendung einer lokalen Datensicherung auf einem angeschlossenen USB-/SATA-Datenträger eingesetzt, da sich hier die Datenträgerbezeichnungen durchaus mal ändern können. Für alle andern Aufgaben wird das Such-Script nicht benötigt weshalb man das Ausführungs-Script auch direkt über den DSM-Aufgabenplaner ansprechen kann, um es manuell oder automatisiert auszuführen. Dabei befindet sich das Ausführungs-Script innerhalb eines "gemeinsamen Ordners" auf der DS, also z.B. dort, wo die interne oder externe Datensicherung später gespeichert werden soll.<br />
<br />
<br />
'''Scriptausführung mittels "autorun"'''<br />
<br />
Eine weitere Möglichkeit der Scriptausführung bietet die Verwendung von "autorun", welches angeschlossene USB-/SATA-Datenträger automatisch erkennt und ein darauf liegendes Script Namens "autorun" ausführt, sollte es im Wurzel- bzw. Hauptverzeichnis des externen Datenträgers lokalisiert werden. Dieses Verhalten machen wir uns zunutze, indem wir entweder den Inhalt unseres Ausführungs-Scriptes per Copy & Paste mit dem des "autorun" Scripts überschreiben, oder wir legen uns eine neue Datei namens "autorun" an bzw. benennen unser Script einfach nach "autorun" um und legen es auf dem externen Datenträger ab. Somit erhält man die Möglichkeit durch einfaches anstecken des USB-Sticks eine lokale, interne oder externe Datensicherung auszuführen. Ein weiterer Vorteil von "autorun" ist der Tatsache geschuldet, das sich evtl. benötigte Key-Files (also der Exportschlüssel) für das Einhängen verschlüsselter gemeinsamer Ordner am Speicherort des Ausführungs-Scripts befinden müssen. Wird der USB-Stick demnach nur für die Zeit der Datensicherung verwendet und ansonsten an einem sicheren Ort aufbewahrt, sind auch die Key-Files für diesen Zeitraum erstmal sicher. <br />
<br />
<br />
'''Arbeitsweise des Ausführungs-Script (start-rsync.sh)'''<br />
<br />
Das Ausführungs-Script führt neben einigen anderen Dingen die eigentliche Datensicherung aus, wobei mittels RSync sämtliche konfigurierte Quellen mit dem Ziel synchronisiert werden. Befindet sich unter den Quellen oder dem Ziel ein oder mehrere verschlüsselte gemeinsame Ordner, so können diese über das sogenanntes Key-File (der Exportschlüssel) automatisch ein- und nach dem Beenden der Datensicherung wieder automatisch ausgehangen werden. Dazu ist es jedoch erforderlich, das sich das Key-File am Speicherort des Ausführungs-Scripts befindet. Das Key-File selber wird einem beim erstellen eines verschlüsselten gemeinsamen Ordners im DSM unter Systemsteuerung/Gemeinsame Ordner zum Download angeboten, man kann sich dieses aber auch nachträglich erstellen lassen. Weiterhin muss der Benutzer im Vorfeld noch einige Parameter innerhalb des Ausführungs-Scripts definieren, dessen Funktionen durch zusätzliche Kommentare näher beschrieben werden.<br />
<br />
Um dem Benutzer ein Feedback über Erfolg und Misserfolg der Datensicherung geben zu können wird ein Systemprotokoll erstellt, welches in einem Ordner Namens /@Logfiles abgelegt wird. Dieser Ordner liegt hierbei immer im Speicherort des Ausführungs-Scriptes. Weiterhin werden gelöschte Daten einer Quelle, im Ziel bei Bedarf in den Ordner /@Recycle verschoben, welcher sich auch im Speicherort der Datensicherung befindet. Ebenso wird hier bei Bedarf ein weiterer Ordner mit dem Namen @/DSMConfig angelegt, worin die Sicherungen der DSM-Systemkonfiguration des Systems aufbewahrt werden, von dem auch die Quellen stammen. Die Inhalte der Ordner /@Logfiles, /@Recycle sowie /@DSMConfig können nach der Angabe einer Individuellen Zeitvorgabe (in Tagen) vom System automatisch gelöscht werden um einen Speicherüberlauf zu verhindern und um die Übersicht zu bewahren.<br />
<br />
Bei der eigentlichen Datensicherung über RSync werden die Ordnerpfade relativ, nach dem jeweiligen Volume (1,2,3,4….) in das entsprechende Unterverzeichnis gespeichert. Systemorder wie z.B. /@eaDIR, /#recycle, /#snapshot und /.DS_Store werden von der Synchronisation ausgeschlossen. Alle ausgeführten Schritte sowie Fehlermeldungen als auch Abbrüche werden protokolliert und teilweise über sogenannte Exit-Codes als Zahlenwert ausgegeben. Diese Exit-Codes geben weitere Auskunft über mögliche Fehlerquellen. Im Anhang unten findet man ein entsprechender Link zur Auswertung. Das Protokoll wird im oben beschriebenen Ordner /@Logfiles abgelegt und kann bei Bedarf auch als E-Mail zugestellt werden. <br />
<br />
Weitere Einstellmöglichkeiten werden innerhalb des Scripts beschrieben und hier nicht weiter ausgeführt.<br />
<br />
=Hinweise zum Erstellen und ausführen der Scripte=<br />
Die hier verwendeten Script-Dateinamen dienen nur der Veranschaulichung und können, unter Beachtung einiger Rahmenbedingungen nach Belieben verändert werden.<br />
Für die Erstellung der Scripte wurde im DSM unter dem Benutzer "admin" der DSM eigene Text-Editor, der evtl. noch über das Paketzentrum installiert werden muss, verwendet. Wichtig ist das im Editor unter "Voreinstellungen" im Reiter "Bearbeiten" als Standardcodierung "Unicode (UTF-8)" ausgewählt wird.<br />
<br />
Nachdem das jeweilige Script aus dem Wiki in die Zwischenablage kopiert und im Text-Editor eingefügt wurde, kann die entsprechende Datei über "Speichern unter..." am gewünschten Ort abgespeichert werden. Scripte die später über den Aufgabenplaner ausgeführt werden, müssen noch die entsprechenden Berechtigungen erhalten um das jeweilige Script "ausführbar" zu machen. Dazu muss man in der FileStation mit einem rechtsklick auf die betreffenden Datei gehen und im Kontextmenü den Menüpunkt "Eigenschaften" auswählen. Dort angekommen wechselt man zum Reiter "Genehmigung" und weiter auf die Schaltfläche "Erweiterte Optionen" um darauffolgend den Punkt "Übernommene Genehmigungen einschließen" auszuwählen. Zum Schluss bestätigt man das Ganze mit der Schaltfläche "OK" (Die Datei sollte jetzt die Berechtigung rwxrw-rw, bzw. 766 haben)<br />
<br />
Nachdem die Privilegien richtig gesetzt wurden, kann das Script unter Hauptmenü/Systemsteuerung in den Aufgabenplaner aufgenommen werden, ohne die Aufgabe jedoch vorerst auszuführen. Dazu wählt man unter DSM 6 "Erstellen" --> "Geplante Aufgabe" --> "Benutzerdefiniertes Script". Im Reiter "Allgemein" kann man unter "Vorgang" einen individuellen Namen für die Aufgabe vergeben und als Benutzer sollte "root" ausgewählt werden. Bei einer Netzwerksicherung über eine SSH-Verbindung muss hier der Benutzer angegeben werden, auf dem der RSA-Key ausgestellt wurde, in unserem Fall (siehe Anleitung unten) ist das der Benutzer "root". (Nur unter dem Benutzer "root" funktioniert die Signaausgabe sowie die Sicherung der DSM-Konfiguration) Die Checkbox "Aktiviert" wird nur benötigt, sollte das Script automatisiert, also Zeitgesteuert gestartet werden. Dazu wäre dann im nächsten Schritt unter dem Reiter der "Zeitplan" zu definieren. Im Reiter "Aufgabeneinstellungen" muss jetzt noch unter dem Punkt "Befehl ausführen" der Pfad zum "Benutzerdefinierten Script" angegeben werden, also z.B. /volume1/ScriptStuff/search-rsync.sh. Nach dem Bestätigen mit "OK" wird die Aufgabe dem Aufgabenplaner hinzugefügt und kann später, falls gewünscht, nach dem Markieren der Aufgabe, über die Schaltfläche "Ausführen" manuell ausgeführt werden.<br />
<br />
=Script 1: Das Such-Script "search-rsync.sh"=<br />
<br />
Da es mehrere Ansätze für die Suche gibt, kann man sich hier [[Dateibasierte RSync-Datensicherung auf externen Datenträger oder RSync kompatiblen Server/Suchscriptvarianten|Weitere Suchscriptvarianten]] anschauen und sich die für sich passenden Möglichkeit auswählen.<br />
<br />
'''search-rsync.sh'''<br />
<pre><br />
#!/bin/sh<br />
<br />
# Zeichenkette für Script-Dateinamen definieren<br />
# ------------------------------------------------------------------------<br />
# Es ist nicht erforderlich, den kompletten Script-Dateinamen anzugeben. |<br />
# Es reicht die Eingabe einer Zeichenkette, die in jedem auszuführenden |<br />
# Script-Dateinamen enthalten sein muss. |<br />
# Beispiele für die Zeichenkette: "local" = local_Backup_Filme.sh |<br />
# local_Filme.sh oder auch Filme_local_sichern.sh |<br />
#-------------------------------------------------------------------------<br />
SCRIPT_STRING="start"<br />
<br />
# ------------------------------------------------------------------------<br />
# Ab hier bitte nichts mehr ändern |<br />
# ------------------------------------------------------------------------<br />
<br />
for SCRIPT in /volume*/*share/*$SCRIPT_STRING*.sh<br />
do<br />
if [ -f $SCRIPT ]; then<br />
sh $SCRIPT<br />
fi<br />
done<br />
</pre><br />
<br />
=Script 2: Das Ausführungs-Script "start-rsync.sh"=<br />
Das Script mit dem beispielhaften Script-Dateinamen "start-rsync.sh", wird entweder auf den entsprechenden externen USB- oder SATA-Datenträger in dessen Wurzelverzeichnis oder aber in einen "gemeinsamen Ordner" auf der Diskstation abgelegt, auf dem die Datensicherung abgelegt werden soll. <br />
<br />
'''start-rsync.sh'''<br />
<pre><br />
#!/bin/sh<br />
# E-Mail Adresse<br />
# -------------------------------------------------------------------------<br />
# Die E-Mail Adresse muss mit der bereits im DSM unter "Benachrichtigung" |<br />
# hinterlegten E-Mail-Adresse identisch sein. |<br />
# -------------------------------------------------------------------------<br />
EMAIL="" # E-Mail für Zustellung des Sicherungsprotokolls<br />
EMAILFAIL="0" # "0" = Sicherungsprotokoll immer senden<br />
# "1" = Sicherungsprotokoll nur bei Problemen senden<br />
# SSH - Verbindungsdaten<br />
# -------------------------------------------------------------------------<br />
# Werden keine Verbindungsdaten angegeben, wird eine lokale Datensicherung|<br />
# durchgeführt. |<br />
# -------------------------------------------------------------------------<br />
SSH_USER="" # Benutzername<br />
SSH_FROM="" # IP-, Host- oder Domain VON entfernter Quelle AUF lokales Ziel<br />
SSH_TO="" # IP-, Host- oder Domain VON lokaler Quelle AUF entferntes Ziel<br />
SSH_PORT="" # Leer = Port 22 ansonsten gewünschten Port angeben<br />
RSYNC_PORT="" # Alternativer Rsync Port kann hier eingetragen werden<br />
MAC="" # Leer = WOL wird nicht genutzt<br />
SLEEP="300" # Wartezeit in Sekunden bis Remoteserver gebootet ist<br />
# MAC Adresse eintragen = Server wird hochgefahren, wenn dieser ausgeschaltet ist<br />
SHUTDOWN="0" # "0" = Entfernter Server wird nicht heruntergefahren<br />
# "1" = Entfernter Server wird heruntergefahren wenn das Backup erfolgreich war<br />
<br />
# Umgang mit verschlüsselten Ordnern<br />
# ------------------------------------------------------------------------<br />
# Angeben, ob eingehangene verschlüsselte Ordner nach der Datensicherung |<br />
# wieder ausgehangen werden sollen. |<br />
# ------------------------------------------------------------------------<br />
UNMOUNT="0" # "0" = Eingehangene Ordner werden nicht ausgehängt<br />
# "1" = Quelle und Ziel werden ausgehängt<br />
# "2" = Quelle wird ausgehängt<br />
# "3" = Ziel wird ausgehängt<br />
<br />
# Backup - Quellen<br />
# ------------------------------------------------------------------------<br />
# Hier können beliebige, unverschlüsselte sowie verschlüsselte |<br />
# Backup-Quellen einer lokalen oder entfernten DS eingetragen werden. |<br />
# Zu beachten ist, das immer der vollständige Pfad ohne Angabe des |<br />
# entsprechenden Volume anzugeben ist. Weiterhin ist auf die |<br />
# Schreibweise im Beispiel zu achten, pro Zeile je eine Backupquelle. |<br />
# ------------------------------------------------------------------------<br />
SOURCES="/homes/admin<br />
/ordner mit leerzeichen<br />
/verschlüsselter ordner"<br />
<br />
# Backup - Ziel<br />
# ------------------------------------------------------------------------<br />
# Wenn NOTTOSCRIPT="0" |<br />
# - dann entspricht TARGET einem "Unterverzeichnis" am Speicherort des |<br />
# Scripts. Beisp.: volume[x]/share/[TARGET] oder bei einem |<br />
# angeschlossenen USB-Datenträger: volumeUSB[x]/usbshare/[TARGET] |<br />
# - Ist zusätzlich HOSTNAME="1" gesetzt, wird der Netzwerkname dem |<br />
# Speicherort hinzugefügt. Beisp.: volume[x]/Share/[TARGET]/[HOSTNAME]|<br />
# |<br />
# Wenn NOTTOSCRIPT="1" und Ziel ist eine Diskstation |<br />
# - dann entspricht TARGET einem "gemeinsamen Ordner" (Share) am |<br />
# Speicherort des Ziel's. Beisp.: volume[x]/[TARGET] |<br />
# - Ist zusätzlich HOSTNAME="1" gesetzt, wird der Netzwerkname dem |<br />
# Speicherort hinzugefügt. Beisp.: volume[x]/[TARGET]/[HOSTNAME] |<br />
# |<br />
# Wenn NOTTOSCRIPT="1" und Ziel ist ein RSync-kompatibler Server |<br />
# - dann entspricht TARGET einem Ordner (Share) am Speicherort des |<br />
# Ziel's. Beisp.: /[TARGET] |<br />
# - Ist zusätzlich HOSTNAME="1" gesetzt, wird der Netzwerkname dem |<br />
# Speicherort hinzugefügt. Beisp.: /[TARGET]/[HOSTNAME] |<br />
#-------------------------------------------------------------------------<br />
TARGET="/RSync Backup"<br />
<br />
FROMTHISDEVICE="0" # "0" = Quelle ist ein gemeinsamer Ordner<br />
# "1" = Quelle liegt auf externen USB/SATA-Speicher neben Script<br />
NOTTOSCRIPT="0" # "0" = Sicherungsziel liegt beim Script<br />
# "1" = Sicherungsziel liegt im geinsamen Ordner<br />
HOSTNAME="0" # "0" = Sicherungsziel entspricht TARGET<br />
# "1" = Sicherungsziel entspricht TARGET/HOSTNAME<br />
AUTORUN="0" # "0" = autorun wirft USB-Stick nicht aus<br />
# "1" = autorun wirft USB-Stick aus<br />
<br />
# Optische- sowie akustische Signalausgabe<br />
#-------------------------------------------------------------------------<br />
# Start : Status-LED wechselt von grün nach orange. Ein Signalton ertönt|<br />
# Ende : Status-LED wechselt von orange nach grün. Ein Signalton ertönt|<br />
# Fehler : Status-LED wechselt von orange nach grün. 3x Signalton ertönt |<br />
#-------------------------------------------------------------------------<br />
SIGNAL="0" # "0" = Optische- sowie akustische Signalausgabe aus<br />
# "1" = Optische- sowie akustische Signalausgabe an<br />
<br />
# Exportieren der DSM-Systemkonfiguration (.dss)<br />
#-------------------------------------------------------------------------<br />
# Die DSM-Systemkonfigurartion (.dss) wird in den Systemordner |<br />
# /@DSMConfig exportiert. |<br />
#-------------------------------------------------------------------------<br />
DSM_EXPORT="0" # "0" = DSM-Systemkonfiguration wird NICHT exportiert<br />
# "1" = DSM-Systemkonfiguration wird exportiert<br />
<br />
# Rotationszyklus für das Löschen von @Recycle und @Logfiles<br />
#-------------------------------------------------------------------------<br />
# Zeitangabe, wann Ordner bzw. Dateien in den System-Ordnern endgültig |<br />
# gelöscht werden sollen, die älter als x Tage sind. |<br />
# ------------------------------------------------------------------------<br />
RECYCLE_ROTATE="90" # @Recycle-Daten die älter als "x" Tage sind, löschen<br />
LOGFILES_ROTATE="60" # @Logfiles-Daten die älter als "x" Tage sind, löschen<br />
DSMCONFIG_ROTATE="30" # @DSMConfig-Daten die älter als "x" Tage sind, löschen<br />
<br />
# ------------------------------------------------------------------------<br />
# Ab hier bitte nichts mehr ändern, wenn man nicht weiß was man tut !!! |<br />
# ------------------------------------------------------------------------<br />
SCRIPTFILE="${0##*/}"<br />
SCRIPTNAME="${SCRIPTFILE%.*}"<br />
DATE=`date +%Y-%m-%d_%Hh%M`<br />
# RSync Optionen konfigurieren<br />
#-------------------------------------------------------------------------<br />
SYNCOPT="-ahR"<br />
LOGSTAT="--stats"<br />
EXCLUDE="--exclude=@eaDir/*** --exclude=@Logfiles/*** --exclude=#recycle/*** --exclude=#snapshot/*** --exclude=.DS_Store/***"<br />
RECYCLE="--delete --backup --backup-dir=@Recycle/"$DATE"_$SCRIPTNAME"<br />
<br />
# Umgebungsvariablen definieren<br />
#-------------------------------------------------------------------------<br />
BACKIFS="$IFS"<br />
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/syno/bin:/usr/syno/sbin<br />
TARGET_EMPTY="/Backup_DS"<br />
if [[ ${TARGET:0:1} != \/ ]] && [ -n "$TARGET" ]; then<br />
TARGET="/$TARGET"<br />
fi<br />
DEST="${TARGET#*/}"<br />
TARGET_CUT="${TARGET#*/}"<br />
TARGET_DECRYPT="${TARGET_CUT%%/*}"<br />
TIMESTAMP=`date +%d.%m.%Y%t%H:%M:%S`<br />
LOKALHOST="$(hostname)"<br />
HR="------------------------------------------------------------------------------------------------"<br />
<br />
# Variablen je nach Verbindung festlegen<br />
#-------------------------------------------------------------------------<br />
# Wenn Verbindung AUF entfernten Server... (TOSSH)<br />
if [ -n "$SSH_FROM" ] && [ -z "$SSH_TO" ]; then<br />
if [ -n "$SSH_PORT" ]; then<br />
FROMSSH="ssh -p $SSH_PORT $SSH_USER@$SSH_FROM"<br />
SCP="scp -P $SSH_PORT"<br />
else<br />
FROMSSH="ssh $SSH_USER@$SSH_FROM"<br />
SCP="scp"<br />
fi<br />
if [ -n "$RSYNC_PORT" ]; then<br />
FROMRSYNC="ssh -p $RSYNC_PORT -l $SSH_USER"<br />
else<br />
FROMRSYNC="ssh -l $SSH_USER"<br />
fi<br />
REMOTEIP="$SSH_FROM"<br />
# Wenn Verbindung VON entfernten Server... (FROMSSH)<br />
elif [ -z "$SSH_FROM" ] && [ -n "$SSH_TO" ]; then<br />
if [ -n "$SSH_PORT" ]; then<br />
TOSSH="ssh -p $SSH_PORT $SSH_USER@$SSH_TO"<br />
SCP="scp -P $SSH_PORT"<br />
else<br />
TOSSH="ssh $SSH_USER@$SSH_TO"<br />
SCP="scp"<br />
fi<br />
if [ -n "$RSYNC_PORT" ]; then<br />
TORSYNC="ssh -p $RSYNC_PORT -l $SSH_USER"<br />
else<br />
TORSYNC="ssh -l $SSH_USER"<br />
fi<br />
REMOTEIP="$SSH_TO"<br />
# Wenn Verbindung lokal...<br />
elif [ -z "$SSH_FROM" ] && [ -z "$SSH_TO" ]; then<br />
FIND="find"<br />
SOURCE_TEST="test"<br />
TARGET_TEST="test"<br />
if [ $HOSTNAME -eq 1 ]; then<br />
NAME="$LOKALHOST"<br />
fi<br />
fi<br />
<br />
# DSM-Benachrichtigung: Script wird ausgeführt...<br />
#-------------------------------------------------------------------------<br />
synodsmnotify @administrators "Script: $SCRIPTNAME" "Wird ausgeführt.."<br />
<br />
# Speicherort des Logfiles festlegen<br />
#-------------------------------------------------------------------------<br />
mkdir -p `dirname $0`/@Logfiles<br />
LOG="`dirname $0`/@Logfiles/"$DATE"_$SCRIPTNAME.log"<br />
if test ! -d `dirname $0`/@Logfiles; then<br />
DSMNOTIFY="Es konnte kein @Logfiles Ordner erstellt werden!"<br />
fi<br />
if [ $SIGNAL -eq 1 ]; then<br />
echo 3 >/dev/ttyS1; echo : >/dev/ttyS1<br />
sleep 2<br />
fi<br />
<br />
# Ordner/Datei für das Protokoll anlegen und Kopfdaten generieren<br />
#-------------------------------------------------------------------------<br />
# E-Mail-Kopf aufbauen...<br />
if [ -n "$EMAIL" ]; then<br />
echo "To: $EMAIL" > $LOG<br />
echo "From: $EMAIL" >> $LOG<br />
echo "Subject: Sicherungsprotokoll vom $TIMESTAMP Uhr" >> $LOG<br />
echo "" >> $LOG<br />
echo "Ausgefuehrtes RSync-Script: $SCRIPTFILE" >> $LOG<br />
echo "" >> $LOG; echo "$HR" >> $LOG<br />
# Protokoll-Kopf aufbauen...<br />
else<br />
echo "Sicherungsprotokoll vom $TIMESTAMP Uhr" >> $LOG<br />
echo "" >> $LOG<br />
echo "Ausgefuehrtes RSync-Script: $SCRIPTFILE" >> $LOG<br />
echo "" >> $LOG; echo "$HR" >> $LOG<br />
fi<br />
<br />
# Fehlererkennung<br />
#-------------------------------------------------------------------------<br />
if [ -z "$TARGET" ] && [ "$NOTTOSCRIPT" -eq 1 ]; then<br />
STOP="Bitte TARGET setzen oder NOTTOSCRIPT nicht setzen..." >> $LOG<br />
fi<br />
if [ -z "$STOP" ] && [ -n "$SSH_FROM" ] && [ -n "$SSH_TO" ]; then<br />
STOP="Bitte nur SSH_FROM oder SSH_TO setzen!" >> $LOG<br />
fi<br />
if [ -z "$STOP" ] && [ -n "$SSH_TO" ] && [ -z "$TARGET" ]; then<br />
STOP="Bei SSH_TO muss TARGET angegeben werden!"<br />
fi<br />
if [ -z "$STOP" ] && [ "$NOTTOSCRIPT" -eq 1 ] && [ -z "$TARGET" ]; then<br />
STOP="Bei NOTTOSCRIPT=1 muss TARGET angegeben werden!"<br />
fi<br />
if [ -z "$STOP" ] && [ $FROMTHISDEVICE -eq 1 ] && [ -n "$SSH_FROM" ]; then<br />
STOP="Nur FROMTHISDEVICE setzen oder SSH_FROM !"<br />
fi<br />
# Ping Test<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ]; then<br />
if [ -n "$SSH_FROM" ] || [ -n "$SSH_TO" ]; then<br />
ping $REMOTEIP -c 2<br />
ONLINE="$?"<br />
if [ $ONLINE -eq 0 ]; then<br />
echo "Remoteserver $REMOTEIP ist online." >> $LOG<br />
else<br />
if [ -z "$MAC" ]; then<br />
STOP="Remoteserver $REMOTEIP ist offline!" >> $LOG<br />
else<br />
echo "Remoteserver $REMOTEIP ist offline!" >> $LOG<br />
fi<br />
fi<br />
if [ -z "$SSH_USER" ]; then<br />
STOP="Bei der Netzwerksicherung bitte SSH_USER angeben." >> $LOG<br />
fi<br />
fi<br />
fi<br />
<br />
# WOL<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ] && [ -n "$MAC" ] && [ $ONLINE -eq 1 ]; then<br />
echo "Remoteserver $REMOTEIP wird geweckt." >> $LOG<br />
if test -f /usr/bin/ether-wake; then<br />
/usr/bin/ether-wake $MAC<br />
elif test -f /usr/syno/sbin/synonet; then<br />
/usr/syno/sbin/synonet --wake $MAC eth0<br />
fi<br />
sleep $SLEEP<br />
ping $REMOTEIP -c 2<br />
ONLINE="$?"<br />
if [ $ONLINE -eq 0 ]; then<br />
echo "Remoteserver $REMOTEIP wurde hochgefahren." >> $LOG<br />
else<br />
if [ -z "$STOP" ]; then<br />
STOP="Remoteserver $REMOTEIP konnte nicht hochgefahren werden." >> $LOG<br />
fi<br />
fi<br />
fi<br />
<br />
# Verbindungstest (SSH_FROM)<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ] && [ -n "$SSH_FROM" ] && [ -z "$SSH_TO" ]; then<br />
if [ ! "$FROMSSH" ]; then<br />
STOP="Es konnte keine SSH-Verbindung zu $SSH_FROM aufgebaut werden." >> $LOG<br />
elif [ "$FROMSSH" ]; then<br />
REMOTEHOST=$($FROMSSH "echo \`hostname\`")<br />
echo "SSH-Verbindung zu $REMOTEHOST aufgebaut." >> $LOG<br />
SYNOSHARE_SOURCE="$FROMSSH"<br />
FIND="$FROMSSH find"<br />
SOURCE_TEST="$FROMSSH test"<br />
TARGET_TEST="test"<br />
if [ $HOSTNAME -eq 1 ]; then<br />
NAME="$REMOTEHOST"<br />
fi<br />
fi<br />
fi<br />
<br />
# Verbindungstest (SSH_TO)<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ] && [ -z "$SSH_FROM" ] && [ -n "$SSH_TO" ]; then<br />
if [ ! "$TOSSH" ]; then<br />
STOP="Es konnte keine SSH-Verbindung zu $SSH_TO aufgebaut werden." >> $LOG<br />
elif [ "$TOSSH" ]; then<br />
REMOTEHOST=$($TOSSH "echo \`hostname\`")<br />
echo "SSH-Verbindung zu $REMOTEHOST aufgebaut." >> $LOG<br />
SYNOSHARE_TARGET="$TOSSH"<br />
FIND="$TOSSH find"<br />
SOURCE_TEST="test"<br />
TARGET_TEST="$TOSSH test"<br />
if [ $HOSTNAME -eq 1 ]; then<br />
NAME="$LOKALHOST"<br />
fi<br />
fi<br />
fi<br />
<br />
# Verbindungstest ob Quelle bzw. Ziel eine Diskstation ist oder nicht<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ] && [ -n "$SSH_FROM" ] || [ -n "$SSH_TO" ]; then<br />
if $SOURCE_TEST -d /usr/syno/synoman; then<br />
SOURCE_PATH="/volume*"<br />
SOURCEDS="1"<br />
echo "Quellserver ist eine DS" >> $LOG<br />
elif $SOURCE_TEST ! -d /usr/syno/synoman; then<br />
SOURCEDS="0"<br />
echo "Quellserver ist keine DS" >> $LOG<br />
fi<br />
<br />
if $TARGET_TEST -d /usr/syno/synoman; then<br />
TARGET_PATH="/volume*"<br />
TARGETDS="1"<br />
echo "Zielserver ist eine DS" >> $LOG<br />
elif $TARGET_TEST ! -d /usr/syno/synoman; then<br />
TARGETDS="0"<br />
echo "Zielserver ist keine DS" >> $LOG<br />
fi<br />
<br />
elif [ -z "$STOP" ]; then<br />
SOURCE_PATH="/volume*"<br />
TARGET_PATH="/volume*"<br />
SOURCEDS="1"<br />
TARGETDS="1"<br />
fi<br />
<br />
if [ $FROMTHISDEVICE -eq 1 ]; then<br />
SOURCE_PATH="/volume*/*share"<br />
fi<br />
<br />
# Zielordner checken<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ]; then<br />
IFS="<br />
"<br />
TARGET_ESCAPE=$(echo $TARGET | sed -e 's/ /\\ /g')<br />
TARGET_DECRYPT_ESCAPE=$(echo $TARGET_DECRYPT | sed -e 's/ /\\ /g')<br />
IFS="$BACKIFS"<br />
if [ -n "$SSH_TO" ]; then<br />
DEST_DECRYPT="$TARGET_DECRYPT_ESCAPE"<br />
else<br />
DEST_DECRYPT="$TARGET_DECRYPT"<br />
fi<br />
if [ "$NOTTOSCRIPT" -eq 1 ] || [ -n "$SSH_TO" ]; then<br />
if $TARGET_TEST ! -d $TARGET_PATH/@"$DEST_DECRYPT"@ && $TARGET_TEST -d $TARGET_PATH/"$DEST_DECRYPT"; then<br />
echo "Zielordner $TARGET_DECRYPT wurde lokalisiert..." >> $LOG<br />
elif $TARGET_TEST -d $TARGET_PATH/@"$DEST_DECRYPT"@ && $TARGET_TEST -d $TARGET_PATH/"$DEST_DECRYPT"; then<br />
echo "Verschluesselter Zielordner $TARGET_DECRYPT bereits eingehangen..." >> $LOG<br />
elif $TARGET_TEST -d $TARGET_PATH/@"$DEST_DECRYPT"@ && $TARGET_TEST ! -d $TARGET_PATH/"$DEST_DECRYPT"; then<br />
echo "Verschluesselter Zielordner $TARGET_DECRYPT nicht eingehangen..." >> $LOG<br />
# Anhand des Key-Files versuchen einen verschluesselten Zielordner einbinden<br />
if test -f `dirname $0`/"$TARGET_DECRYPT".key; then<br />
echo "$TARGET_DECRYPT.key gefunden" >> $LOG<br />
echo "Verschluesselter Zielordner $TARGET_DECRYPT wird eingehangen..." >> $LOG<br />
KEYFILEDEST=$(ecryptfs-unwrap-passphrase `dirname $0`/"$TARGET_DECRYPT".key "\$1\$5YN01o9y")<br />
$SYNOSHARE_TARGET /usr/syno/sbin/synoshare --enc_mount "$DEST_DECRYPT" "$KEYFILEDEST" >> $LOG<br />
sleep 20<br />
if $TARGET_TEST -d $TARGET_PATH/@"$DEST_DECRYPT"@ && $TARGET_TEST -d $TARGET_PATH/"$DEST_DECRYPT"; then<br />
echo "Verschluesselter Zielordner $TARGET_DECRYPT wurde eingehangen..." >> $LOG<br />
elif $TARGET_TEST -d $TARGET_PATH/@"$DEST_DECRYPT"@ && $TARGET_TEST ! -d $TARGET_PATH/"$DEST_DECRYPT"; then<br />
echo "Verschluesselter Zielordner $TARGET_DECRYPT konnte nicht eingehangen werden..." >> $LOG<br />
fi<br />
else<br />
echo "Kein Keyfile fuer $TARGET_DECRYPT gefunden! Verschluesselte Ordner muessen eingehangen werden!"<br />
fi<br />
fi<br />
if $TARGET_TEST ! -d $TARGET_PATH/"$DEST_DECRYPT"; then<br />
if [ -z "$STOP" ]; then<br />
STOP="Zielordner /$TARGET_DECRYPT nicht gefunden!"<br />
fi<br />
fi<br />
fi<br />
fi<br />
<br />
# Quellordner checken<br />
#-------------------------------------------------------------------------<br />
IFS="<br />
"<br />
for SHARE in $SOURCES; do<br />
if [[ ${SHARE:0:1} != \/ ]] ; then<br />
SHARE="/$SHARE"<br />
fi<br />
SHARE_ESCAPE=$(echo $SHARE | sed -e 's/ /\\ /g')<br />
SHARE_CUT="${SHARE#*/}"<br />
SHARE_DECRYPT="${SHARE_CUT%%/*}"<br />
SHARE_DECRYPT_ESCAPE=$(echo $SHARE_DECRYPT | sed -e 's/ /\\ /g')<br />
IFS="$BACKIFS"<br />
if [ -n "$SSH_FROM" ]; then<br />
SOURCE_DECRYPT="$SHARE_DECRYPT_ESCAPE"<br />
else<br />
SOURCE_DECRYPT="$SHARE_DECRYPT"<br />
fi<br />
if $SOURCE_TEST ! -d $SOURCE_PATH/@"$SOURCE_DECRYPT"@ && $SOURCE_TEST -d $SOURCE_PATH/"$SOURCE_DECRYPT"; then<br />
echo "Quellordner $SHARE_DECRYPT wurde lokalisiert..." >> $LOG<br />
elif $SOURCE_TEST -d $SOURCE_PATH/@"$SOURCE_DECRYPT"@ && $SOURCE_TEST -d $SOURCE_PATH/"$SOURCE_DECRYPT"; then<br />
echo "Verschluesselter Quellordner $SHARE_DECRYPT bereits eingehangen..." >> $LOG<br />
elif $SOURCE_TEST -d $SOURCE_PATH/@"$SOURCE_DECRYPT"@ && $SOURCE_TEST ! -d $SOURCE_PATH/"$SOURCE_DECRYPT"; then<br />
echo "Verschluesselter Quellordner $SHARE_DECRYPT nicht eingehangen..." >> $LOG<br />
# Anhand des Key-Files versuchen einen verschluesselten Quellordner einbinden<br />
if test -f `dirname $0`/"$SHARE_DECRYPT".key; then<br />
echo "$SHARE_DECRYPT.key gefunden" >> $LOG<br />
echo "Verschluesselter Quellordner $SHARE_DECRYPT wird eingehangen..." >> $LOG<br />
KEYFILESHARE=$(ecryptfs-unwrap-passphrase `dirname $0`/"$SHARE_DECRYPT".key "\$1\$5YN01o9y")<br />
$SYNOSHARE_SOURCE /usr/syno/sbin/synoshare --enc_mount "$SHARE_DECRYPT" "$KEYFILESHARE" >> $LOG<br />
sleep 20<br />
if $SOURCE_TEST -d $SOURCE_PATH/@"$SOURCE_DECRYPT"@ && $SOURCE_TEST -d $SOURCE_PATH/"$SOURCE_DECRYPT"; then<br />
echo "Verschluesselter Quellordner $SHARE_DECRYPT wurde eingehangen..." >> $LOG<br />
elif $SOURCE_TEST -d $SOURCE_PATH/@"$SOURCE_DECRYPT"@ && $SOURCE_TEST ! -d $SOURCE_PATH/"$SOURCE_DECRYPT"; then<br />
echo "Verschluesselter Quellordner $SHARE_DECRYPT konnte nicht eingehangen werden..." >> $LOG<br />
fi<br />
else<br />
STOP="Kein Keyfile fuer $SHARE_DECRYPT gefunden! Verschluesselte Ordner muessen eingehangen werden! Datensicherung ABGEBROCHEN..."<br />
fi<br />
fi<br />
done<br />
<br />
# Ziel definieren<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ]; then<br />
if [ -n "$SSH_TO" ] && [ -n "$TARGET" ]; then<br />
DEST_FULL=$($TOSSH "echo $TARGET_PATH/$TARGET_DECRYPT_ESCAPE")<br />
DEST_CUT="${DEST_FULL#*/}"<br />
DEST_VOL="${DEST_CUT%%/*}"<br />
if [ $TARGETDS -eq 1 ]; then<br />
DESTTARGET="/$DEST_VOL$TARGET_ESCAPE"<br />
else<br />
DESTTARGET="$TARGET_ESCAPE"<br />
fi<br />
if [ $HOSTNAME -eq 1 ]; then<br />
DESTINATION="$DESTTARGET/$NAME"<br />
else<br />
DESTINATION="$DESTTARGET"<br />
fi<br />
elif [ -z "$SSH_TO" ] && [ "$NOTTOSCRIPT" -eq 0 ] && [ -z "$TARGET" ]; then<br />
if [ $HOSTNAME -eq 1 ]; then<br />
DESTINATION="`dirname $0`$TARGET_EMPTY/$NAME"<br />
else<br />
DESTINATION="`dirname $0`$TARGET_EMPTY"<br />
fi<br />
elif [ -z "$SSH_TO" ] && [ "$NOTTOSCRIPT" -eq 1 ] && [ -n "$TARGET" ]; then<br />
DEST_FULL=$(echo $TARGET_PATH/"$TARGET_DECRYPT")<br />
DEST_CUT="${DEST_FULL#*/}"<br />
DEST_VOL="${DEST_CUT%%/*}"<br />
if [ -n "$TARGETDS" ]; then<br />
DESTTARGET="/$DEST_VOL$TARGET"<br />
else<br />
DESTTARGET="$TARGET"<br />
fi<br />
if [ $HOSTNAME -eq 1 ]; then<br />
DESTINATION="$DESTTARGET/$NAME"<br />
else<br />
DESTINATION="$DESTTARGET"<br />
fi<br />
elif [ -z "$SSH_TO" ] && [ "$NOTTOSCRIPT" -eq 0 ]; then<br />
if [ $HOSTNAME -eq 1 ]; then<br />
DESTINATION="`dirname $0`$TARGET/$NAME"<br />
else<br />
DESTINATION="`dirname $0`$TARGET"<br />
fi<br />
fi<br />
mkdir -p "$DESTINATION"<br />
if [ -n "$SSH_TO" ] && [ "$NOTTOSCRIPT" -eq 0 ]; then<br />
STOP="Bei SSH_TO muss NOTTOSCRIPT gesetzt werden!" >> $LOG<br />
elif [ -n "$SSH_TO" ] && [ "$NOTTOSCRIPT" -eq 1 ] && [ -n "$TARGET" ]; then<br />
if $TARGET_TEST -d $TARGET_PATH/$TARGET_DECRYPT_ESCAPE; then<br />
$TOSSH mkdir -p "$DESTINATION"<br />
fi<br />
fi<br />
fi<br />
<br />
# Check ob Zielordner erstellt wurde bzw. vorhanden war.<br />
if $TARGET_TEST ! -d "$DESTINATION"; then<br />
if [ -z "$STOP" ]; then<br />
STOP="Zielordner $TARGET konnte nicht erstellt werden bzw. ist nicht vorhanden !"<br />
fi<br />
fi<br />
<br />
echo "" >> $LOG<br />
echo "$HR" >> $LOG<br />
echo "" >> $LOG<br />
# Beginn der RSync-Datensicherung<br />
#--------------------------------------------------------------------------<br />
IFS="<br />
"<br />
for SHARE in $SOURCES; do<br />
if [ -z "$STOP" ]; then<br />
echo "" >> $LOG<br />
if [[ ${SHARE:0:1} != \/ ]] ; then<br />
SHARE="/$SHARE"<br />
fi<br />
SHARE_ESCAPE=$(echo $SHARE | sed -e 's/ /\\ /g')<br />
SHARE_CUT="${SHARE#*/}"<br />
SHARE_DECRYPT="${SHARE_CUT%%/*}"<br />
IFS="$BACKIFS"<br />
unset FORERROR<br />
if [ -n "$SSH_FROM" ]; then<br />
SOURCE="$SHARE_ESCAPE"<br />
else<br />
SOURCE="$SHARE"<br />
fi<br />
<br />
if $SOURCE_TEST ! -d $SOURCE_PATH"$SOURCE"; then<br />
ERROR="Quellordner $SHARE nicht erreichbar..." >> $LOG<br />
FORERROR="1"<br />
elif $SOURCE_TEST -d $SOURCE_PATH"$SOURCE"; then<br />
echo "Quellordner $SHARE erreichbar." >> $LOG<br />
fi<br />
if [ $FROMTHISDEVICE -eq 1 ] && [ -z "$SSH_FROM" ]; then<br />
SOURCE="`dirname $0`$SHARE"<br />
elif [ $FROMTHISDEVICE -eq 0 ] && [ -z "$SSH_FROM" ]; then<br />
SOURCE="$SHARE"<br />
fi<br />
<br />
if [ -z "$STOP" ] && [ -z "$FORERROR" ]; then<br />
# SSH-SSH_FROM RSync-Datensicherung VON einer entfernten DS oder komp. Server<br />
#--------------------------------------------------------------------------<br />
if [ -n "$SSH_FROM" ] && [ -z "$SSH_TO" ] && [ -n "$DESTINATION" ]; then<br />
echo "$HR" >> $LOG<br />
echo "Starte Datensicherung: $REMOTEHOST$SHARE nach $DESTINATION" >> $LOG<br />
echo "$HR" >> $LOG<br />
if [ $SOURCEDS -eq 1 ]; then<br />
rsync -e "$FROMRSYNC" $SYNCOPT $SSH_FROM:/volume*"$SOURCE" $LOGSTAT $EXCLUDE $RECYCLE "$DESTINATION" >> $LOG<br />
RSYNC_EXIT="$?"<br />
elif [ $SOURCEDS -ne 1 ]; then<br />
rsync -e "$FROMRSYNC" $SYNCOPT $SSH_FROM:"$SOURCE" $LOGSTAT $EXCLUDE $RECYCLE "$DESTINATION" >> $LOG<br />
RSYNC_EXIT="$?"<br />
fi<br />
# SSH-SSH_TO RSync-Datensicherung AUF eine entfernte DS oder komp. Server<br />
#--------------------------------------------------------------------------<br />
elif [ -n "$SSH_TO" ] && [ -z "$SSH_FROM" ] && [ -n "$DESTINATION" ]; then<br />
echo "$HR" >> $LOG<br />
echo "Starte Datensicherung: $LOKALHOST$SHARE nach $DESTINATION" >> $LOG<br />
echo "$HR" >> $LOG<br />
if [ $SOURCEDS -eq 1 ] && [ $FROMTHISDEVICE -ne 1 ]; then<br />
rsync -e "$TORSYNC" $SYNCOPT /volume*"$SOURCE" $LOGSTAT $EXCLUDE $RECYCLE $SSH_TO:"$DESTINATION" >> $LOG<br />
RSYNC_EXIT="$?"<br />
elif [ $SOURCEDS -ne 1 ] || [ $FROMTHISDEVICE -eq 1 ]; then<br />
rsync -e "$TORSYNC" $SYNCOPT "$SOURCE" $LOGSTAT $EXCLUDE $RECYCLE $SSH_TO:"$DESTINATION" >> $LOG<br />
RSYNC_EXIT="$?"<br />
fi<br />
# RSync- Lokale Datensicherung auf Volume, USB- oder SATA-Datentr�ger<br />
#-------------------------------------------------------------------------<br />
elif [ -z "$SSH_TO" ] && [ -z "$SSH_FROM" ] && [ -n "$DESTINATION" ]; then<br />
echo "$HR" >> $LOG<br />
echo "Starte Datensicherung: $REMOTEHOST$SHARE nach $DESTINATION" >> $LOG<br />
echo "$HR" >> $LOG<br />
if [ $SOURCEDS -eq 1 ] && [ $FROMTHISDEVICE -ne 1 ]; then<br />
rsync $SYNCOPT /volume*"$SOURCE" $LOGSTAT $EXCLUDE $RECYCLE "$DESTINATION" >> $LOG<br />
RSYNC_EXIT="$?"<br />
elif [ $SOURCEDS -ne 1 ] || [ $FROMTHISDEVICE -eq 1 ]; then<br />
rsync $SYNCOPT "$SOURCE" $LOGSTAT $EXCLUDE $RECYCLE "$DESTINATION" >> $LOG<br />
RSYNC_EXIT="$?"<br />
fi<br />
fi<br />
echo "" >> $LOG<br />
if [ $RSYNC_EXIT -ne 0 ]; then<br />
RSYNC_CODE="$RSYNC_EXIT"<br />
fi<br />
fi<br />
fi<br />
done<br />
<br />
# RSync Exit-Code = Fehlermeldung<br />
#-------------------------------------------------------------------------<br />
# Exit-Code: Entfernter Server ausgeschaltet?<br />
if [ $RSYNC_CODE -eq 43 ]; then<br />
echo "Entfernte DS oder RSync komp. Server nicht Online? Bitte RSYNC Port kontrollieren!" >> $LOG<br />
# Exit-Code: DSL-Verbindung getrennt?<br />
elif [ $RSYNC_CODE -eq 255 ]; then<br />
echo "Bitte Internetverbindung oder RSYNC Port kontrollieren!" >> $LOG<br />
# Exit-Code ausgeben...<br />
elif [ $RSYNC_CODE -ne 0 ]; then<br />
echo "RSync Fehlermeldung (Exit Code): $RSYNC_CODE" >> $LOG<br />
fi<br />
<br />
# RSync Exit-Code = Erfolgreich bzw. Unvollständig<br />
#-------------------------------------------------------------------------<br />
if [ -z "$RSYNC_CODE" ] && [ -z "$STOP" ] && [ -z "$ERROR" ]; then<br />
echo "$HR" >> $LOG<br />
echo "RSync-Datensicherung erfolgreich. Sicherungsziel: $DESTINATION" >> $LOG<br />
if [ -z "$DSMNOTIFY" ]; then<br />
DSMNOTIFY="RSync-Datensicherung erfolgreich. Sicherungsziel: $DESTINATION"<br />
fi<br />
# Signalausgabe - Datensicherung erfolgreich<br />
if [ $SIGNAL -eq 1 ]; then<br />
echo 3 >/dev/ttyS1; echo 8 >/dev/ttyS1<br />
sleep 2<br />
fi<br />
# RSync Exit-Code = Fehlermeldung<br />
elif [ $RSYNC_CODE -ne 0 ] || [ -n "$STOP" ] || [ -n "$ERROR" ]; then<br />
echo "$HR" >> $LOG<br />
echo "RSync-Datensicherung unvollstaendig oder fehlgeschlagen - Sicherungsziel: $DESTINATION" >> $LOG<br />
if [ -z "$DSMNOTIFY" ]; then<br />
DSMNOTIFY="RSync-Datensicherung unvollstaendig oder fehlgeschlagen - Bitte Protokoll prüfen!"<br />
fi<br />
fi<br />
echo "$HR" >> $LOG; echo "" >> $LOG<br />
if [ -n "$STOP" ]; then<br />
echo "FEHLER: $STOP" >> $LOG<br />
fi<br />
if [ -n "$ERROR" ]; then<br />
echo "FEHLER: $ERROR" >> $LOG<br />
fi<br />
<br />
# DSM-Systemkonfiguration exportieren<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ] && [ "$DSM_EXPORT" -eq 1 ] && [ -z "$RSYNC_CODE" ]; then<br />
if [ -n "$SSH_FROM" ] && [ -z "$SSH_TO" ] && [ -n "$SOURCEDS" ]; then<br />
$FROMSSH /usr/syno/bin/synoconfbkp export --filepath DSMConfig_TEMP.dss<br />
mkdir -p "$DESTINATION"/@DSMConfig<br />
$SCP -r $SSH_USER@$SSH_FROM:DSMConfig_TEMP.dss "$DESTINATION"/@DSMConfig/DSMConfig_"$DATE"_$REMOTEHOST.dss<br />
$FROMSSH rm -rf DSMConfig_TEMP.dss<br />
echo "Sicherung der DSM-Systemkonfiguration von $REMOTEHOST erfolgreich zu $LOKALHOST kopiert.." >> $LOG<br />
echo "" >> $LOG<br />
elif [ -z "$SSH_FROM" ] && [ -n "$SSH_TO" ]; then<br />
synoconfbkp export --filepath `dirname $0`/@DSMConfig/DSMConfig_"$DATE"_$LOKALHOST.dss<br />
$TOSSH mkdir -p "$DESTINATION"/@DSMConfig<br />
$SCP -r `dirname $0`/@DSMConfig/*.dss $SSH_USER@$SSH_TO:"$DESTINATION"/@DSMConfig/<br />
rm -rf `dirname $0`/@DSMConfig<br />
echo "Sicherung der DSM-Systemkonfiguration von $LOKALHOST erfolgreich zu $REMOTEHOST kopiert.." >> $LOG<br />
echo "" >> $LOG<br />
elif [ -z "$SSH_FROM" ] && [ -z "$SSH_TO" ]; then<br />
mkdir -p "$DESTINATION"/@DSMConfig<br />
synoconfbkp export --filepath "$DESTINATION"/@DSMConfig/DSMConfig_"$DATE"_$LOKALHOST.dss<br />
echo "Lokale Sicherung der DSM-Systemkonfiguration erfolgreich." >> $LOG<br />
echo "" >> $LOG<br />
fi<br />
fi<br />
<br />
# Rotationszyklus für das Löschen von @Recycle, @Logfiles und @DSMConfig<br />
#-------------------------------------------------------------------------<br />
# Dateien im Ordner @Recycle die älter als x Tage sind, löschen.<br />
if $TARGET_TEST -d "$DESTINATION"/@Recycle/; then<br />
if [ -z "$STOP" ] && [ -n "$RECYCLE_ROTATE" ] && [ -z "$ERROR" ]; then<br />
$FIND "$DESTINATION"/@Recycle/* -type d -mtime +$RECYCLE_ROTATE -exec rm -rf {} \;<br />
echo "HINWEIS: Daten aus dem Ordner /@Recycle, die mehr als $RECYCLE_ROTATE Tage alt waren, wurden geloescht." >> $LOG<br />
echo "" >> $LOG<br />
fi<br />
fi<br />
# Dateien im Ordner @Logfiles die älter als x Tage sind, löschen.<br />
if $TARGET_TEST -d `dirname $0`/@Logfiles/; then<br />
if [ -z "$STOP" ] && [ -n "$LOGFILES_ROTATE" ] && [ -z "$ERROR" ]; then<br />
find `dirname $0`/@Logfiles -name "*.log" -type f -mtime +$LOGFILES_ROTATE -exec rm {} \;<br />
echo "HINWEIS: Daten aus dem Ordner /@Logfiles, die mehr als $LOGFILES_ROTATE Tage alt waren, wurden geloescht." >> $LOG<br />
echo "" >> $LOG<br />
fi<br />
fi<br />
# Dateien im Ordner @DSMConfig die älter als x Tage sind, löschen.<br />
if $TARGET_TEST -d "$DESTINATION"/@DSMConfig/; then<br />
if [ -z "$STOP" ] && [ -n "$DSMCONFIG_ROTATE" ] && [ -z "$ERROR" ]; then<br />
$FIND "$DESTINATION"/@DSMConfig -name "*.dss" -type f -mtime +$DSMCONFIG_ROTATE -exec rm {} \;<br />
echo "HINWEIS: Daten aus dem Ordner /@DSMConfig, die mehr als $DSMCONFIG_ROTATE Tage alt waren, wurden geloescht." >> $LOG<br />
echo "" >> $LOG<br />
fi<br />
fi<br />
<br />
# Verschlüsselte Shares wieder aushängen..<br />
#-------------------------------------------------------------------------<br />
if [ $UNMOUNT -ne 0 ] && [ -n "$TARGETDS" ]; then<br />
if [ $UNMOUNT -ne 2 ]; then<br />
IFS="<br />
"<br />
TARGET_ESCAPE=$(echo $TARGET | sed -e 's/ /\\ /g')<br />
TARGET_DECRYPT_ESCAPE=$(echo $TARGET_DECRYPT | sed -e 's/ /\\ /g')<br />
IFS="$BACKIFS"<br />
if [ -n "$SSH_TO" ]; then<br />
DEST_DECRYPT="$TARGET_DECRYPT_ESCAPE"<br />
else<br />
DEST_DECRYPT="$TARGET_DECRYPT"<br />
fi<br />
if $TARGET_TEST -d /volume*/@"$DEST_DECRYPT"@ && $TARGET_TEST -d /volume*/"$DEST_DECRYPT"; then<br />
echo "Ziel: $TARGET_DECRYPT wurde ausgehangen" >> $LOG<br />
$SYNOSHARE_TARGET /usr/syno/sbin/synoshare --enc_unmount "$DEST_DECRYPT" >> $LOG<br />
sleep 10<br />
fi<br />
fi<br />
fi<br />
if [ $UNMOUNT -ne 0 ] && [ -n "$SOURCEDS" ]; then<br />
if [ $UNMOUNT -ne 3 ]; then<br />
IFS="<br />
"<br />
for SHARE in $SOURCES; do<br />
SHARE_ESCAPE=$(echo $SHARE | sed -e 's/ /\\ /g')<br />
SHARE_CUT="${SHARE#*/}"<br />
SHARE_DECRYPT="${SHARE_CUT%%/*}"<br />
SHARE_DECRYPT_ESCAPE=$(echo $SHARE_DECRYPT | sed -e 's/ /\\ /g')<br />
IFS="$BACKIFS"<br />
if [ -n "$SSH_FROM" ]; then<br />
SOURCE_DECRYPT="$SHARE_DECRYPT_ESCAPE"<br />
else<br />
SOURCE_DECRYPT="$SHARE_DECRYPT"<br />
fi<br />
if $SOURCE_TEST -d /volume*/@"$SOURCE_DECRYPT"@ && $SOURCE_TEST -d /volume*/"$SOURCE_DECRYPT"; then<br />
echo "Quelle: $SHARE_DECRYPT wurde ausgehangen" >> $LOG<br />
$SYNOSHARE_SOURCE /usr/syno/sbin/synoshare --enc_unmount "$SHARE_DECRYPT" >> $LOG<br />
sleep 10<br />
fi<br />
done<br />
fi<br />
fi<br />
unset KEYFILEPW<br />
<br />
# Entfernten Server herunterfahren<br />
#-------------------------------------------------------------------------<br />
if [ $SHUTDOWN -ne 0 ] && [ -z "$RSYNC_CODE" ] && [ -z "$STOP" ] && [ -z "$ERROR" ]; then<br />
if [ -n "$SSH_FROM" ]; then<br />
$FROMSSH poweroff<br />
echo "Remoteserver $SSH_FROM wird heruntergefahren." >> $LOG<br />
elif [ -n "$SSH_TO" ]; then<br />
$TOSSH poweroff<br />
echo "Remoteserver $SSH_TO wird heruntergefahren." >> $LOG<br />
fi<br />
fi<br />
<br />
# Benachrichtigung an die DSM-Administratorengruppe sowie E-Mail senden<br />
#-------------------------------------------------------------------------<br />
if [ -n "$DSMNOTIFY" ]; then<br />
synodsmnotify @administrators "Script: $SCRIPTNAME" "$DSMNOTIFY"<br />
fi<br />
if [ -n "$EMAIL" ]; then<br />
if [ "$EMAILFAIL" -eq 1 ] && [ -z "$RSYNC_CODE" ] || [ -n "$STOP" ] || [ -n "$ERROR" ]; then<br />
ssmtp $EMAIL < $LOG<br />
elif [ "$EMAILFAIL" -eq 0 ]; then<br />
ssmtp $EMAIL < $LOG<br />
fi<br />
fi<br />
<br />
# Script beenden...<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ] && [ -z "$RSYNC_CODE" ] && [ -z "$ERROR" ] && [ "$AUTORUN" -eq 1 ]; then<br />
exit 100<br />
else<br />
exit $?<br />
fi<br />
<br />
</pre><br />
<br />
=Erstellen eines RSA-Keys für den Aufbau einer SSH-Verbindung=<br />
Es soll eine dateibasierte Datensicherung mittels RSync von Diskstation "A" (Produktivsystem) auf Diskstation "B" (Backupsystem) angelegt werden. Dabei übernimmt das Backupsystem die Aufgabe des Servers, worüber der Verbindungsaufbau und der eigentliche Sicherungsvorgang initiiert wird. Das Produktivsystem übernimmt somit die Aufgabe des Client und muß dem ganzen Vorgang nur zustimmen. Um dies zu ermöglichen muß im Vorfeld ein RSA-Schlüssel auf dem Backupsystem erzeugt und dem Produktivsystem der öffentliche Schlüssel mitgeteilt werden, um so den automatischen Verbindungsaufbau per SSH zu ermöglichen. Nachdem die SSH-Verbindung erfolgreich aufgebaut wurde, wird der eigentliche rsync-Befehl abgesetzt und somit die Datensicherung ausgelöst. Um auch in die Gegenrichtung sichern zu können, muss die RSA-Key Einrichtung dementsprechend gedreht werden, so das am Ende sowohl Diskstation "A" als auch Diskstation "B" Quelle als auch Ziel der Datensicherung darstellen können.<br />
<br />
Im folgenden werden alle Einstellungen für den Benutzer '''root''' getroffen, da nur unter diesem Benutzer die Signalausgabe als auch das Sichern der DSM-Konfiguration funktioniert. Wer hier lieber als "admin" oder vielleicht sogar als eingeschränkter Benutzer "rsync" arbeiten möchte, muss nachfolgend an den entsprechenden Stellen den gewünschten Benutzernamen einsetzen. Das hier verwendete Homeverzeichnis des Benutzer "root" wird im folgenden nur in dessen Kurzform mit ~/ angesprochen, wobei hier immer auf /root verwiesen wird. Alle anderen Benutzerkonten befinden sich im Homeverzeichnis /home/[BENUTZERNAME] bzw. richtigerweise unter /var/services/homes/[BENUTZERNAME].<br />
<br />
(Nachfolgend symbolisiert das Zeichen "$" nur den Zeilenanfang und wird nicht mit geschrieben)<br />
<br />
<br />
'''Hinweis zum Loginvorgang bis DSM 5.2 für den Benutzer "root"'''<br />
<pre><br />
Login als Benutzer "root" mit dem Passwort des DSM-Benutzer "admin"<br />
</pre><br />
<br />
'''Hinweis zum Loginvorgang ab DSM 6 für den Benutzer "root"'''<br />
<pre><br />
Login als Benutzer "admin" mit dem Passwort des DSM-Benutzer "admin"<br />
<br />
"root"-Zugriff erhält man dann über die Eingabe von...<br />
<br />
$ sudo -i<br />
<br />
...und gibt abermals das Password des DSM-Benutzer "admin" ein.<br />
</pre> <br />
<br />
<br />
'''Beginnen wir auf dem Server der "Diskstation B" oder besser gesagt, dem Backupsystem'''<br />
<br />
Auf der Konsole der DS als Benutzer "root" einloggen. <br />
Erstellen des RSA-Schlüssels mit...<br />
<br />
<pre>$ ssh-keygen -t rsa</pre><br />
<br />
Bei der Erstellung wird man nach Speicherort und Passphrase gefragt...<br />
<br />
<pre><br />
Enter file in which to save the key (/root/.ssh/id_rsa):<br />
Enter passphrase (empty for no oassphrase):<br />
Enter same passphrase again:<br />
</pre><br />
<br />
... hier bitte nichts eintragen, sondern einfach nur mit der "Return-Taste" bestätigen. Nach der Ausführung werden im Homeverzeichnis des Benutzer "root" folgende Ordner und Dateien erstellt:<br />
<br />
<pre><br />
~/.ssh<br />
~/.ssh/id_rsa<br />
~/.ssh/id_rsa.pub<br />
</pre><br />
<br />
An dieser Stelle sollte man gleich noch die Ordner- und Dateirechte anpassen.<br />
<br />
<pre>$ chmod 0700 ~/.ssh<br />
$ chmod 0600 ~/.ssh/id_rsa*<br />
</pre><br />
<br />
Den Inhalt der Datei ~/.ssh/id_rsa.pub z.B. mit vi, nano oder dem AdminTool editieren und den Inhalt in die Zwischenablage kopieren.<br />
<br />
<pre>$ nano ~/.ssh/id_rsa.pub</pre><br />
<br />
Wichtig, wie hier im Beispiel gezeigt (RSA-Schlüssel wurde hier gekürzt) ist, das alles in einer Zeile steht...<br />
<br />
<pre>ssh-rsa AAAAB3NzaC1yc2..*gekürzt*...EAAAADAQABA3e root@Backupstation</pre><br />
<br />
'''Weiter gehts auf dem Client der "Diskstation A", also dem Produktivsystem.'''<br />
<br />
Auf der Konsole der DS als Benutzer "root" einloggen. Erstellen eines neuen Ornders<br />
<br />
<pre>$ mkdir ~/.ssh</pre><br />
<br />
Daraufhin wird unter ~/.ssh/ eine neue Datei namens "authorized_keys" erstellt...<br />
<br />
<pre>$ nano ~/.ssh/authorized_keys</pre><br />
<br />
...und der Inhalt aus der Zwischenablage, also der Inhalt aus der ~/.ssh/id_rsa.pub, die auf dem Backupsystem erstellt wurde, in die geöffnete Datei eingefügt. Nach dem Speichern und verlassen des Editors müssen auch hier noch die Ordner- und Dateirechte richtig gesetzt werden.<br />
<br />
<pre><br />
$ chmod 0700 ~/.ssh<br />
$ chmod 0600 ~/.ssh/authorized_keys<br />
</pre><br />
<br />
'''Zurück auf der Konsole der Backupstation.'''<br />
<br />
Als Benutzer "root" auf der DS einloggen und als Erstes die SSH-Verbindung prüfen mit...<br />
<br />
<pre>$ ssh root@IP-DER-DISKSTATION_A -p 22</pre><br />
<br />
Der Verbindungsaufbau möchte vom System nochmal mit "yes" bestätigt werden um anschließend auf der Konsole des Produktivsystemes zu landen. Diese Verbindung kann man durch die Eingabe eines...<br />
<br />
<pre>$ exit</pre><br />
<br />
... wieder beenden. Durch den Verbindungsaufbau wurde nun in der Datei ~/.ssh/known_hosts ein neuer Eintrag hinzugefügt, der die Zugangsdaten zur Diskstation beinhaltet. Kontrollieren kann man das mit...<br />
<br />
<pre>$ nano ~/.ssh/known_hosts</pre><br />
<br />
Nachdem alles gut verlaufen ist, wird die Konsole wieder geschlossen mit...<br />
<br />
<pre>$ exit</pre><br />
<br />
=Release Notes=<br />
<br />
'''Release Notes vom 10.05.2016'''<br />
(Knapp 150 Zeilen Script-Code wurden seit dem letzen Update hinzugefügt.)<br />
* Es wurde eine neue Variable (MAC) geschaffen um entfernte Server per WOL zu starten.<br />
* Es wurde eine neue Variable (SLEEP) geschaffen um dem entfernten Server ein Zeitfenster zum starten zu geben.<br />
* Es wurde eine neue Variable (SHUTDOWN) geschaffen um entfernte Server auszuschalten.<br />
* Anhand der drei grade genannten Variablen können demnach entfernte Server per WOL geweckt, die eigentliche Datensicherung ausgeführt werden um im Anschluss den entfernten Server bei Bedarf wieder auszuschalten. <br />
* Es wurde eine neue Variable (FROMTHISDEVICE) geschaffen um Inhalte eines USB/SATA-Datenräger auf eine Diskstation oder einem entfernten, RSync-kompatiblen Server zu sichern.<br />
* Quellen und Ziel können ab sofort auch Leerzeichen enthalten. <br />
<br />
'''Release Notes vom 01.05.2016'''<br />
* Es wurde eine neue Variable (SSH_PORT) geschaffen um einen abweichenden SSH-Port angeben zu können.<br />
* Es wurde eine neue Variable (RSYNC_PORT) geschaffen um einen abweichenden RSync-Port angeben zu können.<br />
* Es wurde eine neue Variable (EMAILFAIL) geschaffen um nur bei einer Störung per E-Mail benachrichtigt zu werden.<br />
* Alle "schaltbaren" Benutzer-Variablen wurden nach dem Schema "0" = aus / "1" = an umstrukturiert. Ursprünglich wurde der Wert bei Zustand "aus" einfach leer gelassen, also "". <br />
* Kommentare im Benutzer-Eingabebereich des Scripts wurden optimiert.<br />
* Neben der bereits funktionierenden Sicherung von und auf eine weitere Diskstation funktioniert jetzt auch das Sichern von und auf einen RSync-kompatible Server. Das Script erkennt hierbei automatisch ob es sich um eine Diskstation oder einen RSync-kompatiblen Server handelt und passt die Sicherungs-Pfade dementsprechend an. Diskstation arbeiten i.d.R. mit einem /volume[x], RSync-kompatible Server tun das in der Regel nicht.<br />
* Viele weitere Detailverbesserungen, die hier nicht alle aufgeführt werden können. Nur so viel... das Script ist um weitere 100 Zeilen Scipt-Code gewachsen.<br />
<br />
=Externe Links=<br />
*[http://www.synology-forum.de/showthread.html?72786-Projekt-rsync-Alternative-dateibasierte-Datensicherung Forum Post]<br />
*[http://wpkg.org/Rsync_exit_codes rsync Exit Codes]<br />
*[http://www.synology-wiki.de/index.php/LEDs_und_Buttons LEDs und Buttons (zur Signalsteuerung)]</div>Itommeshttps://www.synology-wiki.de/index.php?title=Dateibasierte_RSync-Datensicherung_auf_externen_Datentr%C3%A4ger_oder_RSync_kompatiblen_Server&diff=7075Dateibasierte RSync-Datensicherung auf externen Datenträger oder RSync kompatiblen Server2016-05-10T19:23:31Z<p>Itommes: /* Script 2: Das Ausführungs-Script "start-rsync.sh" */</p>
<hr />
<div>=Einleitung=<br />
<br />
'''Diese Anleitung zur dateibasierten RSync-Datensicherung bietet folgende Möglichkeiten...'''<br />
<br />
* Quelle(n) und/oder Ziel können unverschlüsselt sein<br />
* Quelle(n) und/oder Ziel können verschlüsselt sein <br />
* Sicherung innerhalb eines /volume<br />
* Sicherung zwischen internen /volumes<br />
* Sicherung auf lokal angeschlossene USB-/SATA-Datenträger sowie eingebundene Remote-Shares (nur unverschlüsselt)<br />
* Sicherung von einer entfernten DS oder RSync-kompatilben Server<br />
* Sicherung auf eine entfernte DS oder RSync-kompatilben Server<br />
* (weitere Konstellationen sind möglich, wurden jedoch nicht getestet) <br />
<br />
'''Hinweis:''' Die Verschlüsselung beruht hierbei auf der von Synology verwendeten Ordnerverschlüsselung (eCryptfs). Um verschlüsselte gemeinsame Ordner einbinden zu können, wird das Key-File also der Exportschlüssel benötigt. Diesen erhält man über die DSM-Systemsteuerung/Gemeinsame Ordner.<br />
<br />
=Anmerkung=<br />
Bevor ihr anfangt, nehmt bitte noch den Artikel "[[Wichtige Informationen zum Modden der Synology Stations]]" zur Kenntnis. <br />
<br />
Auch wenn dieses Script intensiv auf einwandfreie Funktion hin getestet wurde, so kann eine Fehlfunktion und demzufolge ein möglicher Datenverlust nicht ausgeschlossen werden. Aus diesem Grund solltet ihr das System erstmal mit unwichtigen Testdaten auf Herz und Nieren prüfen und sich mit der Arbeitsweise des Scripts und dessen Funktionen vertraut machen bevor ihr das ganze "produktiv" einsetzt. '''Ihr verwendet dieses Script auf eigene Gefahr.'''<br />
<br />
=Voraussetzungen=<br />
* Umgang mit dem DSM Aufgabenplaner <br />
* Umgang mit einem Editor seiner Wahl (z.B. Notepad++ oder dem DSM Text-Editor)<br />
* Grundkenntnisse im Umgang mit Shell-Scripten<br />
* Umgang mit der Konsole (bei Verwendung des SSH-Zuganges)<br />
* Zum versenden einer E-Mail muss im DSM unter Hauptmenü/Systemsteuerung/Benachrichtigung eine E-Mail Adresse hinterlegt sein.<br />
* Ein externer USB- oder SATA-Datenträger, eine weitere Synology Diskstation oder einen rsync-kompatiblen Server im Netzwerk.<br />
* Optional: autorun für externe Datenträger (Version 1.7)<br />
<br />
=Erläuterungen zur Funktion und Arbeitsweise=<br />
<br />
<pre><br />
Diskstation<br />
| |<br />
| '--> Aufgabenplaner ------------------------------<br />
| | |<br />
| '--> Such-Script -----> USB/SATA-Share ---> Ausführungs-<br />
| | Script<br />
'----------------> USB/SATA-Share --> autorun -------- (Key-Files)<br />
|<br />
.---------------------------'<br />
|<br />
V<br />
.---------- Quelle <--- definiere ---> Ziel----------.<br />
| | | |<br />
V '-- lokale/intern/extern --' V<br />
lokalisiere Quelle(n) lokalisiere Ziel<br />
| | <br />
| Protokoll/E-Mail |<br />
|--> Verschlüsselte | Verschlüsseltes <--|<br />
| Quelle(n) anhand der | Ziel anhand der |<br />
| Key-Files einhängen <--- aushängen ---> Key-Files einhängen |<br />
| | | | |<br />
| V | V |<br />
'--------------------->> !! DATENSICHERUNG !! >>---------------------'<br />
| |<br />
'-- lokale/intern/extern -'<br />
<br />
</pre><br />
<br />
<br />
'''Scriptausführung über den DSM-Aufgabenplaner'''<br />
<br />
Das manuelle oder automatisierte Aufrufen von Such- oder Ausführungs-Script wird komfortabel über den DSM - Aufgabenplaner gesteuert. Das Such-Script hat dabei die Aufgabe, das Ausführungs-Script zu lokalisieren und starten. Es wird jedoch nur bei der Verwendung einer lokalen Datensicherung auf einem angeschlossenen USB-/SATA-Datenträger eingesetzt, da sich hier die Datenträgerbezeichnungen durchaus mal ändern können. Für alle andern Aufgaben wird das Such-Script nicht benötigt weshalb man das Ausführungs-Script auch direkt über den DSM-Aufgabenplaner ansprechen kann, um es manuell oder automatisiert auszuführen. Dabei befindet sich das Ausführungs-Script innerhalb eines "gemeinsamen Ordners" auf der DS, also z.B. dort, wo die interne oder externe Datensicherung später gespeichert werden soll.<br />
<br />
<br />
'''Scriptausführung mittels "autorun"'''<br />
<br />
Eine weitere Möglichkeit der Scriptausführung bietet die Verwendung von "autorun", welches angeschlossene USB-/SATA-Datenträger automatisch erkennt und ein darauf liegendes Script Namens "autorun" ausführt, sollte es im Wurzel- bzw. Hauptverzeichnis des externen Datenträgers lokalisiert werden. Dieses Verhalten machen wir uns zunutze, indem wir entweder den Inhalt unseres Ausführungs-Scriptes per Copy & Paste mit dem des "autorun" Scripts überschreiben, oder wir legen uns eine neue Datei namens "autorun" an bzw. benennen unser Script einfach nach "autorun" um und legen es auf dem externen Datenträger ab. Somit erhält man die Möglichkeit durch einfaches anstecken des USB-Sticks eine lokale, interne oder externe Datensicherung auszuführen. Ein weiterer Vorteil von "autorun" ist der Tatsache geschuldet, das sich evtl. benötigte Key-Files (also der Exportschlüssel) für das Einhängen verschlüsselter gemeinsamer Ordner am Speicherort des Ausführungs-Scripts befinden müssen. Wird der USB-Stick demnach nur für die Zeit der Datensicherung verwendet und ansonsten an einem sicheren Ort aufbewahrt, sind auch die Key-Files für diesen Zeitraum erstmal sicher. <br />
<br />
<br />
'''Arbeitsweise des Ausführungs-Script (start-rsync.sh)'''<br />
<br />
Das Ausführungs-Script führt neben einigen anderen Dingen die eigentliche Datensicherung aus, wobei mittels RSync sämtliche konfigurierte Quellen mit dem Ziel synchronisiert werden. Befindet sich unter den Quellen oder dem Ziel ein oder mehrere verschlüsselte gemeinsame Ordner, so können diese über das sogenanntes Key-File (der Exportschlüssel) automatisch ein- und nach dem Beenden der Datensicherung wieder automatisch ausgehangen werden. Dazu ist es jedoch erforderlich, das sich das Key-File am Speicherort des Ausführungs-Scripts befindet. Das Key-File selber wird einem beim erstellen eines verschlüsselten gemeinsamen Ordners im DSM unter Systemsteuerung/Gemeinsame Ordner zum Download angeboten, man kann sich dieses aber auch nachträglich erstellen lassen. Weiterhin muss der Benutzer im Vorfeld noch einige Parameter innerhalb des Ausführungs-Scripts definieren, dessen Funktionen durch zusätzliche Kommentare näher beschrieben werden.<br />
<br />
Um dem Benutzer ein Feedback über Erfolg und Misserfolg der Datensicherung geben zu können wird ein Systemprotokoll erstellt, welches in einem Ordner Namens /@Logfiles abgelegt wird. Dieser Ordner liegt hierbei immer im Speicherort des Ausführungs-Scriptes. Weiterhin werden gelöschte Daten einer Quelle, im Ziel bei Bedarf in den Ordner /@Recycle verschoben, welcher sich auch im Speicherort der Datensicherung befindet. Ebenso wird hier bei Bedarf ein weiterer Ordner mit dem Namen @/DSMConfig angelegt, worin die Sicherungen der DSM-Systemkonfiguration des Systems aufbewahrt werden, von dem auch die Quellen stammen. Die Inhalte der Ordner /@Logfiles, /@Recycle sowie /@DSMConfig können nach der Angabe einer Individuellen Zeitvorgabe (in Tagen) vom System automatisch gelöscht werden um einen Speicherüberlauf zu verhindern und um die Übersicht zu bewahren.<br />
<br />
Bei der eigentlichen Datensicherung über RSync werden die Ordnerpfade relativ, nach dem jeweiligen Volume (1,2,3,4….) in das entsprechende Unterverzeichnis gespeichert. Systemorder wie z.B. /@eaDIR, /#recycle, /#snapshot und /.DS_Store werden von der Synchronisation ausgeschlossen. Alle ausgeführten Schritte sowie Fehlermeldungen als auch Abbrüche werden protokolliert und teilweise über sogenannte Exit-Codes als Zahlenwert ausgegeben. Diese Exit-Codes geben weitere Auskunft über mögliche Fehlerquellen. Im Anhang unten findet man ein entsprechender Link zur Auswertung. Das Protokoll wird im oben beschriebenen Ordner /@Logfiles abgelegt und kann bei Bedarf auch als E-Mail zugestellt werden. <br />
<br />
Weitere Einstellmöglichkeiten werden innerhalb des Scripts beschrieben und hier nicht weiter ausgeführt.<br />
<br />
=Hinweise zum Erstellen und ausführen der Scripte=<br />
Die hier verwendeten Script-Dateinamen dienen nur der Veranschaulichung und können, unter Beachtung einiger Rahmenbedingungen nach Belieben verändert werden.<br />
Für die Erstellung der Scripte wurde im DSM unter dem Benutzer "admin" der DSM eigene Text-Editor, der evtl. noch über das Paketzentrum installiert werden muss, verwendet. Wichtig ist das im Editor unter "Voreinstellungen" im Reiter "Bearbeiten" als Standardcodierung "Unicode (UTF-8)" ausgewählt wird.<br />
<br />
Nachdem das jeweilige Script aus dem Wiki in die Zwischenablage kopiert und im Text-Editor eingefügt wurde, kann die entsprechende Datei über "Speichern unter..." am gewünschten Ort abgespeichert werden. Scripte die später über den Aufgabenplaner ausgeführt werden, müssen noch die entsprechenden Berechtigungen erhalten um das jeweilige Script "ausführbar" zu machen. Dazu muss man in der FileStation mit einem rechtsklick auf die betreffenden Datei gehen und im Kontextmenü den Menüpunkt "Eigenschaften" auswählen. Dort angekommen wechselt man zum Reiter "Genehmigung" und weiter auf die Schaltfläche "Erweiterte Optionen" um darauffolgend den Punkt "Übernommene Genehmigungen einschließen" auszuwählen. Zum Schluss bestätigt man das Ganze mit der Schaltfläche "OK" (Die Datei sollte jetzt die Berechtigung rwxrw-rw, bzw. 766 haben)<br />
<br />
Nachdem die Privilegien richtig gesetzt wurden, kann das Script unter Hauptmenü/Systemsteuerung in den Aufgabenplaner aufgenommen werden, ohne die Aufgabe jedoch vorerst auszuführen. Dazu wählt man unter DSM 6 "Erstellen" --> "Geplante Aufgabe" --> "Benutzerdefiniertes Script". Im Reiter "Allgemein" kann man unter "Vorgang" einen individuellen Namen für die Aufgabe vergeben und als Benutzer sollte "root" ausgewählt werden. Bei einer Netzwerksicherung über eine SSH-Verbindung muss hier der Benutzer angegeben werden, auf dem der RSA-Key ausgestellt wurde, in unserem Fall (siehe Anleitung unten) ist das der Benutzer "root". (Nur unter dem Benutzer "root" funktioniert die Signaausgabe sowie die Sicherung der DSM-Konfiguration) Die Checkbox "Aktiviert" wird nur benötigt, sollte das Script automatisiert, also Zeitgesteuert gestartet werden. Dazu wäre dann im nächsten Schritt unter dem Reiter der "Zeitplan" zu definieren. Im Reiter "Aufgabeneinstellungen" muss jetzt noch unter dem Punkt "Befehl ausführen" der Pfad zum "Benutzerdefinierten Script" angegeben werden, also z.B. /volume1/ScriptStuff/search-rsync.sh. Nach dem Bestätigen mit "OK" wird die Aufgabe dem Aufgabenplaner hinzugefügt und kann später, falls gewünscht, nach dem Markieren der Aufgabe, über die Schaltfläche "Ausführen" manuell ausgeführt werden.<br />
<br />
=Script 1: Das Such-Script "search-rsync.sh"=<br />
<br />
Da es mehrere Ansätze für die Suche gibt, kann man sich hier [[Dateibasierte RSync-Datensicherung auf externen Datenträger oder RSync kompatiblen Server/Suchscriptvarianten|Weitere Suchscriptvarianten]] anschauen und sich die für sich passenden Möglichkeit auswählen.<br />
<br />
'''search-rsync.sh'''<br />
<pre><br />
#!/bin/sh<br />
<br />
# Zeichenkette für Script-Dateinamen definieren<br />
# ------------------------------------------------------------------------<br />
# Es ist nicht erforderlich, den kompletten Script-Dateinamen anzugeben. |<br />
# Es reicht die Eingabe einer Zeichenkette, die in jedem auszuführenden |<br />
# Script-Dateinamen enthalten sein muss. |<br />
# Beispiele für die Zeichenkette: "local" = local_Backup_Filme.sh |<br />
# local_Filme.sh oder auch Filme_local_sichern.sh |<br />
#-------------------------------------------------------------------------<br />
SCRIPT_STRING="start"<br />
<br />
# ------------------------------------------------------------------------<br />
# Ab hier bitte nichts mehr ändern |<br />
# ------------------------------------------------------------------------<br />
<br />
for SCRIPT in /volume*/*share/*$SCRIPT_STRING*.sh<br />
do<br />
if [ -f $SCRIPT ]; then<br />
sh $SCRIPT<br />
fi<br />
done<br />
</pre><br />
<br />
=Script 2: Das Ausführungs-Script "start-rsync.sh"=<br />
Das Script mit dem beispielhaften Script-Dateinamen "start-rsync.sh", wird entweder auf den entsprechenden externen USB- oder SATA-Datenträger in dessen Wurzelverzeichnis oder aber in einen "gemeinsamen Ordner" auf der Diskstation abgelegt, auf dem die Datensicherung abgelegt werden soll. <br />
<br />
'''start-rsync.sh'''<br />
<pre><br />
#!/bin/sh<br />
# E-Mail Adresse<br />
# -------------------------------------------------------------------------<br />
# Die E-Mail Adresse muss mit der bereits im DSM unter "Benachrichtigung" |<br />
# hinterlegten E-Mail-Adresse identisch sein. |<br />
# -------------------------------------------------------------------------<br />
EMAIL="" # E-Mail für Zustellung des Sicherungsprotokolls<br />
EMAILFAIL="0" # "0" = Sicherungsprotokoll immer senden<br />
# "1" = Sicherungsprotokoll nur bei Problemen senden<br />
# SSH - Verbindungsdaten<br />
# -------------------------------------------------------------------------<br />
# Werden keine Verbindungsdaten angegeben, wird eine lokale Datensicherung|<br />
# durchgeführt. |<br />
# -------------------------------------------------------------------------<br />
SSH_USER="" # Benutzername<br />
SSH_FROM="" # IP-, Host- oder Domain VON entfernter Quelle AUF lokales Ziel<br />
SSH_TO="" # IP-, Host- oder Domain VON lokaler Quelle AUF entferntes Ziel<br />
SSH_PORT="" # Leer = Port 22 ansonsten gewünschten Port angeben<br />
RSYNC_PORT="" # Alternativer Rsync Port kann hier eingetragen werden<br />
MAC="" # Leer = WOL wird nicht genutzt<br />
SLEEP="300" # Wartezeit in Sekunden bis Remoteserver gebootet ist<br />
# MAC Adresse eintragen = Server wird hochgefahren, wenn dieser ausgeschaltet ist<br />
SHUTDOWN="0" # "0" = Entfernter Server wird nicht heruntergefahren<br />
# "1" = Entfernter Server wird heruntergefahren wenn das Backup erfolgreich war<br />
<br />
# Umgang mit verschlüsselten Ordnern<br />
# ------------------------------------------------------------------------<br />
# Angeben, ob eingehangene verschlüsselte Ordner nach der Datensicherung |<br />
# wieder ausgehangen werden sollen. |<br />
# ------------------------------------------------------------------------<br />
UNMOUNT="0" # "0" = Eingehangene Ordner werden nicht ausgehängt<br />
# "1" = Quelle und Ziel werden ausgehängt<br />
# "2" = Quelle wird ausgehängt<br />
# "3" = Ziel wird ausgehängt<br />
<br />
# Backup - Quellen<br />
# ------------------------------------------------------------------------<br />
# Hier können beliebige, unverschlüsselte sowie verschlüsselte |<br />
# Backup-Quellen einer lokalen oder entfernten DS eingetragen werden. |<br />
# Zu beachten ist, das immer der vollständige Pfad ohne Angabe des |<br />
# entsprechenden Volume anzugeben ist. Weiterhin ist auf die |<br />
# Schreibweise im Beispiel zu achten, pro Zeile je eine Backupquelle. |<br />
# ------------------------------------------------------------------------<br />
SOURCES="/homes/admin<br />
/ordner mit leerzeichen<br />
/verschlüsselter ordner"<br />
<br />
# Backup - Ziel<br />
# ------------------------------------------------------------------------<br />
# Wenn NOTTOSCRIPT="0" |<br />
# - dann entspricht TARGET einem "Unterverzeichnis" am Speicherort des |<br />
# Scripts. Beisp.: volume[x]/share/[TARGET] oder bei einem |<br />
# angeschlossenen USB-Datenträger: volumeUSB[x]/usbshare/[TARGET] |<br />
# - Ist zusätzlich HOSTNAME="1" gesetzt, wird der Netzwerkname dem |<br />
# Speicherort hinzugefügt. Beisp.: volume[x]/Share/[TARGET]/[HOSTNAME]|<br />
# |<br />
# Wenn NOTTOSCRIPT="1" und Ziel ist eine Diskstation |<br />
# - dann entspricht TARGET einem "gemeinsamen Ordner" (Share) am |<br />
# Speicherort des Ziel's. Beisp.: volume[x]/[TARGET] |<br />
# - Ist zusätzlich HOSTNAME="1" gesetzt, wird der Netzwerkname dem |<br />
# Speicherort hinzugefügt. Beisp.: volume[x]/[TARGET]/[HOSTNAME] |<br />
# |<br />
# Wenn NOTTOSCRIPT="1" und Ziel ist ein RSync-kompatibler Server |<br />
# - dann entspricht TARGET einem Ordner (Share) am Speicherort des |<br />
# Ziel's. Beisp.: /[TARGET] |<br />
# - Ist zusätzlich HOSTNAME="1" gesetzt, wird der Netzwerkname dem |<br />
# Speicherort hinzugefügt. Beisp.: /[TARGET]/[HOSTNAME] |<br />
#-------------------------------------------------------------------------<br />
TARGET="/RSync Backup"<br />
<br />
FROMTHISDEVICE="0" # "0" = Quelle ist ein gemeinsamer Ordner<br />
# "1" = Quelle liegt auf externen USB/SATA-Speicher neben Script<br />
NOTTOSCRIPT="0" # "0" = Sicherungsziel liegt beim Script<br />
# "1" = Sicherungsziel liegt im geinsamen Ordner<br />
HOSTNAME="0" # "0" = Sicherungsziel entspricht TARGET<br />
# "1" = Sicherungsziel entspricht TARGET/HOSTNAME<br />
AUTORUN="0" # "0" = autorun wirft USB-Stick nicht aus<br />
# "1" = autorun wirft USB-Stick aus<br />
<br />
# Optische- sowie akustische Signalausgabe<br />
#-------------------------------------------------------------------------<br />
# Start : Status-LED wechselt von grün nach orange. Ein Signalton ertönt|<br />
# Ende : Status-LED wechselt von orange nach grün. Ein Signalton ertönt|<br />
# Fehler : Status-LED wechselt von orange nach grün. 3x Signalton ertönt |<br />
#-------------------------------------------------------------------------<br />
SIGNAL="0" # "0" = Optische- sowie akustische Signalausgabe aus<br />
# "1" = Optische- sowie akustische Signalausgabe an<br />
<br />
# Exportieren der DSM-Systemkonfiguration (.dss)<br />
#-------------------------------------------------------------------------<br />
# Die DSM-Systemkonfigurartion (.dss) wird in den Systemordner |<br />
# /@DSMConfig exportiert. |<br />
#-------------------------------------------------------------------------<br />
DSM_EXPORT="0" # "0" = DSM-Systemkonfiguration wird NICHT exportiert<br />
# "1" = DSM-Systemkonfiguration wird exportiert<br />
<br />
# Rotationszyklus für das Löschen von @Recycle und @Logfiles<br />
#-------------------------------------------------------------------------<br />
# Zeitangabe, wann Ordner bzw. Dateien in den System-Ordnern endgültig |<br />
# gelöscht werden sollen, die älter als x Tage sind. |<br />
# ------------------------------------------------------------------------<br />
RECYCLE_ROTATE="90" # @Recycle-Daten die älter als "x" Tage sind, löschen<br />
LOGFILES_ROTATE="60" # @Logfiles-Daten die älter als "x" Tage sind, löschen<br />
DSMCONFIG_ROTATE="30" # @DSMConfig-Daten die älter als "x" Tage sind, löschen<br />
<br />
# ------------------------------------------------------------------------<br />
# Ab hier bitte nichts mehr ändern, wenn man nicht weiß was man tut !!! |<br />
# ------------------------------------------------------------------------<br />
SCRIPTFILE="${0##*/}"<br />
SCRIPTNAME="${SCRIPTFILE%.*}"<br />
DATE=`date +%Y-%m-%d_%Hh%M`<br />
# RSync Optionen konfigurieren<br />
#-------------------------------------------------------------------------<br />
SYNCOPT="-ahR"<br />
LOGSTAT="--stats"<br />
EXCLUDE="--exclude=@eaDir/*** --exclude=@Logfiles/*** --exclude=#recycle/*** --exclude=#snapshot/*** --exclude=.DS_Store/***"<br />
RECYCLE="--delete --backup --backup-dir=@Recycle/"$DATE"_$SCRIPTNAME"<br />
<br />
# Umgebungsvariablen definieren<br />
#-------------------------------------------------------------------------<br />
BACKIFS="$IFS"<br />
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/syno/bin:/usr/syno/sbin<br />
TARGET_EMPTY="/Backup_DS"<br />
if [[ ${TARGET:0:1} != \/ ]] && [ -n "$TARGET" ]; then<br />
TARGET="/$TARGET"<br />
fi<br />
DEST="${TARGET#*/}"<br />
TARGET_CUT="${TARGET#*/}"<br />
TARGET_DECRYPT="${TARGET_CUT%%/*}"<br />
TIMESTAMP=`date +%d.%m.%Y%t%H:%M:%S`<br />
LOKALHOST="$(hostname)"<br />
HR="------------------------------------------------------------------------------------------------"<br />
<br />
# Variablen je nach Verbindung festlegen<br />
#-------------------------------------------------------------------------<br />
# Wenn Verbindung AUF entfernten Server... (TOSSH)<br />
if [ -n "$SSH_FROM" ] && [ -z "$SSH_TO" ]; then<br />
if [ -n "$SSH_PORT" ]; then<br />
FROMSSH="ssh -p $SSH_PORT $SSH_USER@$SSH_FROM"<br />
SCP="scp -P $SSH_PORT"<br />
else<br />
FROMSSH="ssh $SSH_USER@$SSH_FROM"<br />
SCP="scp"<br />
fi<br />
if [ -n "$RSYNC_PORT" ]; then<br />
FROMRSYNC="ssh -p $RSYNC_PORT -l $SSH_USER"<br />
else<br />
FROMRSYNC="ssh -l $SSH_USER"<br />
fi<br />
REMOTEIP="$SSH_FROM"<br />
# Wenn Verbindung VON entfernten Server... (FROMSSH)<br />
elif [ -z "$SSH_FROM" ] && [ -n "$SSH_TO" ]; then<br />
if [ -n "$SSH_PORT" ]; then<br />
TOSSH="ssh -p $SSH_PORT $SSH_USER@$SSH_TO"<br />
SCP="scp -P $SSH_PORT"<br />
else<br />
TOSSH="ssh $SSH_USER@$SSH_TO"<br />
SCP="scp"<br />
fi<br />
if [ -n "$RSYNC_PORT" ]; then<br />
TORSYNC="ssh -p $RSYNC_PORT -l $SSH_USER"<br />
else<br />
TORSYNC="ssh -l $SSH_USER"<br />
fi<br />
REMOTEIP="$SSH_TO"<br />
# Wenn Verbindung lokal...<br />
elif [ -z "$SSH_FROM" ] && [ -z "$SSH_TO" ]; then<br />
FIND="find"<br />
SOURCE_TEST="test"<br />
TARGET_TEST="test"<br />
if [ $HOSTNAME -eq 1 ]; then<br />
NAME="$LOKALHOST"<br />
fi<br />
fi<br />
<br />
# DSM-Benachrichtigung: Script wird ausgeführt...<br />
#-------------------------------------------------------------------------<br />
synodsmnotify @administrators "Script: $SCRIPTNAME" "Wird ausgeführt.."<br />
<br />
# Speicherort des Logfiles festlegen<br />
#-------------------------------------------------------------------------<br />
mkdir -p `dirname $0`/@Logfiles<br />
LOG="`dirname $0`/@Logfiles/"$DATE"_$SCRIPTNAME.log"<br />
if test ! -d `dirname $0`/@Logfiles; then<br />
DSMNOTIFY="Es konnte kein @Logfiles Ordner erstellt werden!"<br />
fi<br />
if [ $SIGNAL -eq 1 ]; then<br />
echo 3 >/dev/ttyS1; echo : >/dev/ttyS1<br />
sleep 2<br />
fi<br />
<br />
# Ordner/Datei für das Protokoll anlegen und Kopfdaten generieren<br />
#-------------------------------------------------------------------------<br />
# E-Mail-Kopf aufbauen...<br />
if [ -n "$EMAIL" ]; then<br />
echo "To: $EMAIL" > $LOG<br />
echo "From: $EMAIL" >> $LOG<br />
echo "Subject: Sicherungsprotokoll vom $TIMESTAMP Uhr" >> $LOG<br />
echo "" >> $LOG<br />
echo "Ausgefuehrtes RSync-Script: $SCRIPTFILE" >> $LOG<br />
echo "" >> $LOG; echo "$HR" >> $LOG<br />
# Protokoll-Kopf aufbauen...<br />
else<br />
echo "Sicherungsprotokoll vom $TIMESTAMP Uhr" >> $LOG<br />
echo "" >> $LOG<br />
echo "Ausgefuehrtes RSync-Script: $SCRIPTFILE" >> $LOG<br />
echo "" >> $LOG; echo "$HR" >> $LOG<br />
fi<br />
<br />
# Fehlererkennung<br />
#-------------------------------------------------------------------------<br />
if [ -z "$TARGET" ] && [ "$NOTTOSCRIPT" -eq 1 ]; then<br />
STOP="Bitte TARGET setzen oder NOTTOSCRIPT nicht setzen..." >> $LOG<br />
fi<br />
if [ -z "$STOP" ] && [ -n "$SSH_FROM" ] && [ -n "$SSH_TO" ]; then<br />
STOP="Bitte nur SSH_FROM oder SSH_TO setzen!" >> $LOG<br />
fi<br />
if [ -z "$STOP" ] && [ -n "$SSH_TO" ] && [ -z "$TARGET" ]; then<br />
STOP="Bei SSH_TO muss TARGET angegeben werden!"<br />
fi<br />
if [ -z "$STOP" ] && [ "$NOTTOSCRIPT" -eq 1 ] && [ -z "$TARGET" ]; then<br />
STOP="Bei NOTTOSCRIPT=1 muss TARGET angegeben werden!"<br />
fi<br />
if [ -z "$STOP" ] && [ $FROMTHISDEVICE -eq 1 ] && [ -n "$SSH_FROM" ]; then<br />
STOP="Nur FROMTHISDEVICE setzen oder SSH_FROM !"<br />
fi<br />
# Ping Test<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ]; then<br />
if [ -n "$SSH_FROM" ] || [ -n "$SSH_TO" ]; then<br />
ping $REMOTEIP -c 2<br />
ONLINE="$?"<br />
if [ $ONLINE -eq 0 ]; then<br />
echo "Remoteserver $REMOTEIP ist online." >> $LOG<br />
else<br />
if [ -z "$MAC" ]; then<br />
STOP="Remoteserver $REMOTEIP ist offline!" >> $LOG<br />
else<br />
echo "Remoteserver $REMOTEIP ist offline!" >> $LOG<br />
fi<br />
fi<br />
if [ -z "$SSH_USER" ]; then<br />
STOP="Bei der Netzwerksicherung bitte SSH_USER angeben." >> $LOG<br />
fi<br />
fi<br />
fi<br />
<br />
# WOL<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ] && [ -n "$MAC" ] && [ $ONLINE -eq 1 ]; then<br />
echo "Remoteserver $REMOTEIP wird geweckt." >> $LOG<br />
if test -f /usr/bin/ether-wake; then<br />
/usr/bin/ether-wake $MAC<br />
elif test -f /usr/syno/sbin/synonet; then<br />
/usr/syno/sbin/synonet --wake $MAC eth0<br />
fi<br />
sleep $SLEEP<br />
ping $REMOTEIP -c 2<br />
ONLINE="$?"<br />
if [ $ONLINE -eq 0 ]; then<br />
echo "Remoteserver $REMOTEIP wurde hochgefahren." >> $LOG<br />
else<br />
if [ -z "$STOP" ]; then<br />
STOP="Remoteserver $REMOTEIP konnte nicht hochgefahren werden." >> $LOG<br />
fi<br />
fi<br />
fi<br />
<br />
# Verbindungstest (SSH_FROM)<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ] && [ -n "$SSH_FROM" ] && [ -z "$SSH_TO" ]; then<br />
if [ ! "$FROMSSH" ]; then<br />
STOP="Es konnte keine SSH-Verbindung zu $SSH_FROM aufgebaut werden." >> $LOG<br />
elif [ "$FROMSSH" ]; then<br />
REMOTEHOST=$($FROMSSH "echo \`hostname\`")<br />
echo "SSH-Verbindung zu $REMOTEHOST aufgebaut." >> $LOG<br />
SYNOSHARE_SOURCE="$FROMSSH"<br />
FIND="$FROMSSH find"<br />
SOURCE_TEST="$FROMSSH test"<br />
TARGET_TEST="test"<br />
if [ $HOSTNAME -eq 1 ]; then<br />
NAME="$REMOTEHOST"<br />
fi<br />
fi<br />
fi<br />
<br />
# Verbindungstest (SSH_TO)<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ] && [ -z "$SSH_FROM" ] && [ -n "$SSH_TO" ]; then<br />
if [ ! "$TOSSH" ]; then<br />
STOP="Es konnte keine SSH-Verbindung zu $SSH_TO aufgebaut werden." >> $LOG<br />
elif [ "$TOSSH" ]; then<br />
REMOTEHOST=$($TOSSH "echo \`hostname\`")<br />
echo "SSH-Verbindung zu $REMOTEHOST aufgebaut." >> $LOG<br />
SYNOSHARE_TARGET="$TOSSH"<br />
FIND="$TOSSH find"<br />
SOURCE_TEST="test"<br />
TARGET_TEST="$TOSSH test"<br />
if [ $HOSTNAME -eq 1 ]; then<br />
NAME="$LOKALHOST"<br />
fi<br />
fi<br />
fi<br />
<br />
# Verbindungstest ob Quelle bzw. Ziel eine Diskstation ist oder nicht<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ] && [ -n "$SSH_FROM" ] || [ -n "$SSH_TO" ]; then<br />
if $SOURCE_TEST -d /usr/syno/synoman; then<br />
SOURCE_PATH="/volume*"<br />
SOURCEDS="1"<br />
echo "Quellserver ist eine DS" >> $LOG<br />
elif $SOURCE_TEST ! -d /usr/syno/synoman; then<br />
SOURCEDS="0"<br />
echo "Quellserver ist keine DS" >> $LOG<br />
fi<br />
<br />
if $TARGET_TEST -d /usr/syno/synoman; then<br />
TARGET_PATH="/volume*"<br />
TARGETDS="1"<br />
echo "Zielserver ist eine DS" >> $LOG<br />
elif $TARGET_TEST ! -d /usr/syno/synoman; then<br />
TARGETDS="0"<br />
echo "Zielserver ist keine DS" >> $LOG<br />
fi<br />
<br />
elif [ -z "$STOP" ]; then<br />
SOURCE_PATH="/volume*"<br />
TARGET_PATH="/volume*"<br />
SOURCEDS="1"<br />
TARGETDS="1"<br />
fi<br />
<br />
if [ $FROMTHISDEVICE -eq 1 ]; then<br />
SOURCE_PATH="/volume*/*share"<br />
fi<br />
<br />
# Zielordner checken<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ]; then<br />
IFS="<br />
"<br />
TARGET_ESCAPE=$(echo $TARGET | sed -e 's/ /\\ /g')<br />
TARGET_DECRYPT_ESCAPE=$(echo $TARGET_DECRYPT | sed -e 's/ /\\ /g')<br />
IFS="$BACKIFS"<br />
if [ -n "$SSH_TO" ]; then<br />
DEST_DECRYPT="$TARGET_DECRYPT_ESCAPE"<br />
else<br />
DEST_DECRYPT="$TARGET_DECRYPT"<br />
fi<br />
if [ "$NOTTOSCRIPT" -eq 1 ] || [ -n "$SSH_TO" ]; then<br />
if $TARGET_TEST ! -d $TARGET_PATH/@"$DEST_DECRYPT"@ && $TARGET_TEST -d $TARGET_PATH/"$DEST_DECRYPT"; then<br />
echo "Zielordner $TARGET_DECRYPT wurde lokalisiert..." >> $LOG<br />
elif $TARGET_TEST -d $TARGET_PATH/@"$DEST_DECRYPT"@ && $TARGET_TEST -d $TARGET_PATH/"$DEST_DECRYPT"; then<br />
echo "Verschluesselter Zielordner $TARGET_DECRYPT bereits eingehangen..." >> $LOG<br />
elif $TARGET_TEST -d $TARGET_PATH/@"$DEST_DECRYPT"@ && $TARGET_TEST ! -d $TARGET_PATH/"$DEST_DECRYPT"; then<br />
echo "Verschluesselter Zielordner $TARGET_DECRYPT nicht eingehangen..." >> $LOG<br />
# Anhand des Key-Files versuchen einen verschluesselten Zielordner einbinden<br />
if test -f `dirname $0`/"$TARGET_DECRYPT".key; then<br />
echo "$TARGET_DECRYPT.key gefunden" >> $LOG<br />
echo "Verschluesselter Zielordner $TARGET_DECRYPT wird eingehangen..." >> $LOG<br />
KEYFILEDEST=$(ecryptfs-unwrap-passphrase `dirname $0`/"$TARGET_DECRYPT".key "\$1\$5YN01o9y")<br />
$SYNOSHARE_TARGET /usr/syno/sbin/synoshare --enc_mount "$DEST_DECRYPT" "$KEYFILEDEST" >> $LOG<br />
sleep 20<br />
if $TARGET_TEST -d $TARGET_PATH/@"$DEST_DECRYPT"@ && $TARGET_TEST -d $TARGET_PATH/"$DEST_DECRYPT"; then<br />
echo "Verschluesselter Zielordner $TARGET_DECRYPT wurde eingehangen..." >> $LOG<br />
elif $TARGET_TEST -d $TARGET_PATH/@"$DEST_DECRYPT"@ && $TARGET_TEST ! -d $TARGET_PATH/"$DEST_DECRYPT"; then<br />
echo "Verschluesselter Zielordner $TARGET_DECRYPT konnte nicht eingehangen werden..." >> $LOG<br />
fi<br />
else<br />
echo "Kein Keyfile fuer $TARGET_DECRYPT gefunden! Verschluesselte Ordner muessen eingehangen werden!"<br />
fi<br />
fi<br />
if $TARGET_TEST ! -d $TARGET_PATH/"$DEST_DECRYPT"; then<br />
if [ -z "$STOP" ]; then<br />
STOP="Zielordner /$TARGET_DECRYPT nicht gefunden!"<br />
fi<br />
fi<br />
fi<br />
fi<br />
<br />
# Quellordner checken<br />
#-------------------------------------------------------------------------<br />
IFS="<br />
"<br />
for SHARE in $SOURCES; do<br />
if [[ ${SHARE:0:1} != \/ ]] ; then<br />
SHARE="/$SHARE"<br />
fi<br />
SHARE_ESCAPE=$(echo $SHARE | sed -e 's/ /\\ /g')<br />
SHARE_CUT="${SHARE#*/}"<br />
SHARE_DECRYPT="${SHARE_CUT%%/*}"<br />
SHARE_DECRYPT_ESCAPE=$(echo $SHARE_DECRYPT | sed -e 's/ /\\ /g')<br />
IFS="$BACKIFS"<br />
if [ -n "$SSH_FROM" ]; then<br />
SOURCE_DECRYPT="$SHARE_DECRYPT_ESCAPE"<br />
else<br />
SOURCE_DECRYPT="$SHARE_DECRYPT"<br />
fi<br />
if $SOURCE_TEST ! -d $SOURCE_PATH/@"$SOURCE_DECRYPT"@ && $SOURCE_TEST -d $SOURCE_PATH/"$SOURCE_DECRYPT"; then<br />
echo "Quellordner $SHARE_DECRYPT wurde lokalisiert..." >> $LOG<br />
elif $SOURCE_TEST -d $SOURCE_PATH/@"$SOURCE_DECRYPT"@ && $SOURCE_TEST -d $SOURCE_PATH/"$SOURCE_DECRYPT"; then<br />
echo "Verschluesselter Quellordner $SHARE_DECRYPT bereits eingehangen..." >> $LOG<br />
elif $SOURCE_TEST -d $SOURCE_PATH/@"$SOURCE_DECRYPT"@ && $SOURCE_TEST ! -d $SOURCE_PATH/"$SOURCE_DECRYPT"; then<br />
echo "Verschluesselter Quellordner $SHARE_DECRYPT nicht eingehangen..." >> $LOG<br />
# Anhand des Key-Files versuchen einen verschluesselten Quellordner einbinden<br />
if test -f `dirname $0`/"$SHARE_DECRYPT".key; then<br />
echo "$SHARE_DECRYPT.key gefunden" >> $LOG<br />
echo "Verschluesselter Quellordner $SHARE_DECRYPT wird eingehangen..." >> $LOG<br />
KEYFILESHARE=$(ecryptfs-unwrap-passphrase `dirname $0`/"$SHARE_DECRYPT".key "\$1\$5YN01o9y")<br />
$SYNOSHARE_SOURCE /usr/syno/sbin/synoshare --enc_mount "$SHARE_DECRYPT" "$KEYFILESHARE" >> $LOG<br />
sleep 20<br />
if $SOURCE_TEST -d $SOURCE_PATH/@"$SOURCE_DECRYPT"@ && $SOURCE_TEST -d $SOURCE_PATH/"$SOURCE_DECRYPT"; then<br />
echo "Verschluesselter Quellordner $SHARE_DECRYPT wurde eingehangen..." >> $LOG<br />
elif $SOURCE_TEST -d $SOURCE_PATH/@"$SOURCE_DECRYPT"@ && $SOURCE_TEST ! -d $SOURCE_PATH/"$SOURCE_DECRYPT"; then<br />
echo "Verschluesselter Quellordner $SHARE_DECRYPT konnte nicht eingehangen werden..." >> $LOG<br />
fi<br />
else<br />
STOP="Kein Keyfile fuer $SHARE_DECRYPT gefunden! Verschluesselte Ordner muessen eingehangen werden! Datensicherung ABGEBROCHEN..."<br />
fi<br />
fi<br />
done<br />
<br />
# Ziel definieren<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ]; then<br />
if [ -n "$SSH_TO" ] && [ -n "$TARGET" ]; then<br />
DEST_FULL=$($TOSSH "echo $TARGET_PATH/$TARGET_DECRYPT_ESCAPE")<br />
DEST_CUT="${DEST_FULL#*/}"<br />
DEST_VOL="${DEST_CUT%%/*}"<br />
if [ $TARGETDS -eq 1 ]; then<br />
DESTTARGET="/$DEST_VOL$TARGET_ESCAPE"<br />
else<br />
DESTTARGET="$TARGET_ESCAPE"<br />
fi<br />
if [ $HOSTNAME -eq 1 ]; then<br />
DESTINATION="$DESTTARGET/$NAME"<br />
else<br />
DESTINATION="$DESTTARGET"<br />
fi<br />
elif [ -z "$SSH_TO" ] && [ "$NOTTOSCRIPT" -eq 0 ] && [ -z "$TARGET" ]; then<br />
if [ $HOSTNAME -eq 1 ]; then<br />
DESTINATION="`dirname $0`$TARGET_EMPTY/$NAME"<br />
else<br />
DESTINATION="`dirname $0`$TARGET_EMPTY"<br />
fi<br />
elif [ -z "$SSH_TO" ] && [ "$NOTTOSCRIPT" -eq 1 ] && [ -n "$TARGET" ]; then<br />
DEST_FULL=$(echo $TARGET_PATH/"$TARGET_DECRYPT")<br />
DEST_CUT="${DEST_FULL#*/}"<br />
DEST_VOL="${DEST_CUT%%/*}"<br />
if [ -n "$TARGETDS" ]; then<br />
DESTTARGET="/$DEST_VOL$TARGET"<br />
else<br />
DESTTARGET="$TARGET"<br />
fi<br />
if [ $HOSTNAME -eq 1 ]; then<br />
DESTINATION="$DESTTARGET/$NAME"<br />
else<br />
DESTINATION="$DESTTARGET"<br />
fi<br />
elif [ -z "$SSH_TO" ] && [ "$NOTTOSCRIPT" -eq 0 ]; then<br />
if [ $HOSTNAME -eq 1 ]; then<br />
DESTINATION="`dirname $0`$TARGET/$NAME"<br />
else<br />
DESTINATION="`dirname $0`$TARGET"<br />
fi<br />
fi<br />
mkdir -p "$DESTINATION"<br />
if [ -n "$SSH_TO" ] && [ "$NOTTOSCRIPT" -eq 0 ]; then<br />
STOP="Bei SSH_TO muss NOTTOSCRIPT gesetzt werden!" >> $LOG<br />
elif [ -n "$SSH_TO" ] && [ "$NOTTOSCRIPT" -eq 1 ] && [ -n "$TARGET" ]; then<br />
if $TARGET_TEST -d $TARGET_PATH/$TARGET_DECRYPT_ESCAPE; then<br />
$TOSSH mkdir -p "$DESTINATION"<br />
fi<br />
fi<br />
fi<br />
<br />
# Check ob Zielordner erstellt wurde bzw. vorhanden war.<br />
if $TARGET_TEST ! -d "$DESTINATION"; then<br />
if [ -z "$STOP" ]; then<br />
STOP="Zielordner $TARGET konnte nicht erstellt werden bzw. ist nicht vorhanden !"<br />
fi<br />
fi<br />
<br />
echo "" >> $LOG<br />
echo "$HR" >> $LOG<br />
echo "" >> $LOG<br />
# Beginn der RSync-Datensicherung<br />
#--------------------------------------------------------------------------<br />
IFS="<br />
"<br />
for SHARE in $SOURCES; do<br />
if [ -z "$STOP" ]; then<br />
echo "" >> $LOG<br />
if [[ ${SHARE:0:1} != \/ ]] ; then<br />
SHARE="/$SHARE"<br />
fi<br />
SHARE_ESCAPE=$(echo $SHARE | sed -e 's/ /\\ /g')<br />
SHARE_CUT="${SHARE#*/}"<br />
SHARE_DECRYPT="${SHARE_CUT%%/*}"<br />
IFS="$BACKIFS"<br />
unset FORERROR<br />
if [ -n "$SSH_FROM" ]; then<br />
SOURCE="$SHARE_ESCAPE"<br />
else<br />
SOURCE="$SHARE"<br />
fi<br />
<br />
if $SOURCE_TEST ! -d $SOURCE_PATH"$SOURCE"; then<br />
ERROR="Quellordner $SHARE nicht erreichbar..." >> $LOG<br />
FORERROR="1"<br />
elif $SOURCE_TEST -d $SOURCE_PATH"$SOURCE"; then<br />
echo "Quellordner $SHARE erreichbar." >> $LOG<br />
fi<br />
if [ $FROMTHISDEVICE -eq 1 ] && [ -z "$SSH_FROM" ]; then<br />
SOURCE="`dirname $0`$SHARE"<br />
elif [ $FROMTHISDEVICE -eq 0 ] && [ -z "$SSH_FROM" ]; then<br />
SOURCE="$SHARE"<br />
fi<br />
<br />
if [ -z "$STOP" ] && [ -z "$FORERROR" ]; then<br />
# SSH-SSH_FROM RSync-Datensicherung VON einer entfernten DS oder komp. Server<br />
#--------------------------------------------------------------------------<br />
if [ -n "$SSH_FROM" ] && [ -z "$SSH_TO" ] && [ -n "$DESTINATION" ]; then<br />
echo "$HR" >> $LOG<br />
echo "Starte Datensicherung: $REMOTEHOST$SHARE nach $DESTINATION" >> $LOG<br />
echo "$HR" >> $LOG<br />
if [ $SOURCEDS -eq 1 ]; then<br />
rsync -e "$FROMRSYNC" $SYNCOPT $SSH_FROM:/volume*"$SOURCE" $LOGSTAT $EXCLUDE $RECYCLE "$DESTINATION" >> $LOG<br />
RSYNC_EXIT="$?"<br />
elif [ $SOURCEDS -ne 1 ]; then<br />
rsync -e "$FROMRSYNC" $SYNCOPT $SSH_FROM:"$SOURCE" $LOGSTAT $EXCLUDE $RECYCLE "$DESTINATION" >> $LOG<br />
RSYNC_EXIT="$?"<br />
fi<br />
# SSH-SSH_TO RSync-Datensicherung AUF eine entfernte DS oder komp. Server<br />
#--------------------------------------------------------------------------<br />
elif [ -n "$SSH_TO" ] && [ -z "$SSH_FROM" ] && [ -n "$DESTINATION" ]; then<br />
echo "$HR" >> $LOG<br />
echo "Starte Datensicherung: $LOKALHOST$SHARE nach $DESTINATION" >> $LOG<br />
echo "$HR" >> $LOG<br />
if [ $SOURCEDS -eq 1 ] && [ $FROMTHISDEVICE -ne 1 ]; then<br />
rsync -e "$TORSYNC" $SYNCOPT /volume*"$SOURCE" $LOGSTAT $EXCLUDE $RECYCLE $SSH_TO:"$DESTINATION" >> $LOG<br />
RSYNC_EXIT="$?"<br />
elif [ $SOURCEDS -ne 1 ] || [ $FROMTHISDEVICE -eq 1 ]; then<br />
rsync -e "$TORSYNC" $SYNCOPT "$SOURCE" $LOGSTAT $EXCLUDE $RECYCLE $SSH_TO:"$DESTINATION" >> $LOG<br />
RSYNC_EXIT="$?"<br />
fi<br />
# RSync- Lokale Datensicherung auf Volume, USB- oder SATA-Datentr�ger<br />
#-------------------------------------------------------------------------<br />
elif [ -z "$SSH_TO" ] && [ -z "$SSH_FROM" ] && [ -n "$DESTINATION" ]; then<br />
echo "$HR" >> $LOG<br />
echo "Starte Datensicherung: $REMOTEHOST$SHARE nach $DESTINATION" >> $LOG<br />
echo "$HR" >> $LOG<br />
if [ $SOURCEDS -eq 1 ] && [ $FROMTHISDEVICE -ne 1 ]; then<br />
rsync $SYNCOPT /volume*"$SOURCE" $LOGSTAT $EXCLUDE $RECYCLE "$DESTINATION" >> $LOG<br />
RSYNC_EXIT="$?"<br />
elif [ $SOURCEDS -ne 1 ] || [ $FROMTHISDEVICE -eq 1 ]; then<br />
rsync $SYNCOPT "$SOURCE" $LOGSTAT $EXCLUDE $RECYCLE "$DESTINATION" >> $LOG<br />
RSYNC_EXIT="$?"<br />
fi<br />
fi<br />
echo "" >> $LOG<br />
if [ $RSYNC_EXIT -ne 0 ]; then<br />
RSYNC_CODE="$RSYNC_EXIT"<br />
fi<br />
fi<br />
fi<br />
done<br />
<br />
# RSync Exit-Code = Fehlermeldung<br />
#-------------------------------------------------------------------------<br />
# Exit-Code: Entfernter Server ausgeschaltet?<br />
if [ $RSYNC_CODE -eq 43 ]; then<br />
echo "Entfernte DS oder RSync komp. Server nicht Online? Bitte RSYNC Port kontrollieren!" >> $LOG<br />
# Exit-Code: DSL-Verbindung getrennt?<br />
elif [ $RSYNC_CODE -eq 255 ]; then<br />
echo "Bitte Internetverbindung oder RSYNC Port kontrollieren!" >> $LOG<br />
# Exit-Code ausgeben...<br />
elif [ $RSYNC_CODE -ne 0 ]; then<br />
echo "RSync Fehlermeldung (Exit Code): $RSYNC_CODE" >> $LOG<br />
fi<br />
<br />
# RSync Exit-Code = Erfolgreich bzw. Unvollständig<br />
#-------------------------------------------------------------------------<br />
if [ -z "$RSYNC_CODE" ] && [ -z "$STOP" ] && [ -z "$ERROR" ]; then<br />
echo "$HR" >> $LOG<br />
echo "RSync-Datensicherung erfolgreich. Sicherungsziel: $DESTINATION" >> $LOG<br />
if [ -z "$DSMNOTIFY" ]; then<br />
DSMNOTIFY="RSync-Datensicherung erfolgreich. Sicherungsziel: $DESTINATION"<br />
fi<br />
# Signalausgabe - Datensicherung erfolgreich<br />
if [ $SIGNAL -eq 1 ]; then<br />
echo 3 >/dev/ttyS1; echo 8 >/dev/ttyS1<br />
sleep 2<br />
fi<br />
# RSync Exit-Code = Fehlermeldung<br />
elif [ $RSYNC_CODE -ne 0 ] || [ -n "$STOP" ] || [ -n "$ERROR" ]; then<br />
echo "$HR" >> $LOG<br />
echo "RSync-Datensicherung unvollstaendig oder fehlgeschlagen - Sicherungsziel: $DESTINATION" >> $LOG<br />
if [ -z "$DSMNOTIFY" ]; then<br />
DSMNOTIFY="RSync-Datensicherung unvollstaendig oder fehlgeschlagen - Bitte Protokoll prüfen!"<br />
fi<br />
fi<br />
echo "$HR" >> $LOG; echo "" >> $LOG<br />
if [ -n "$STOP" ]; then<br />
echo "FEHLER: $STOP" >> $LOG<br />
fi<br />
if [ -n "$ERROR" ]; then<br />
echo "FEHLER: $ERROR" >> $LOG<br />
fi<br />
<br />
# DSM-Systemkonfiguration exportieren<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ] && [ "$DSM_EXPORT" -eq 1 ] && [ -z "$RSYNC_CODE" ]; then<br />
if [ -n "$SSH_FROM" ] && [ -z "$SSH_TO" ] && [ -n "$SOURCEDS" ]; then<br />
$FROMSSH /usr/syno/bin/synoconfbkp export --filepath DSMConfig_TEMP.dss<br />
mkdir -p "$DESTINATION"/@DSMConfig<br />
$SCP -r $SSH_USER@$SSH_FROM:DSMConfig_TEMP.dss "$DESTINATION"/@DSMConfig/DSMConfig_"$DATE"_$REMOTEHOST.dss<br />
$FROMSSH rm -rf DSMConfig_TEMP.dss<br />
echo "Sicherung der DSM-Systemkonfiguration von $REMOTEHOST erfolgreich zu $LOKALHOST kopiert.." >> $LOG<br />
echo "" >> $LOG<br />
elif [ -z "$SSH_FROM" ] && [ -n "$SSH_TO" ]; then<br />
synoconfbkp export --filepath `dirname $0`/@DSMConfig/DSMConfig_"$DATE"_$LOKALHOST.dss<br />
$TOSSH mkdir -p "$DESTINATION"/@DSMConfig<br />
$SCP -r `dirname $0`/@DSMConfig/*.dss $SSH_USER@$SSH_TO:"$DESTINATION"/@DSMConfig/<br />
rm -rf `dirname $0`/@DSMConfig<br />
echo "Sicherung der DSM-Systemkonfiguration von $LOKALHOST erfolgreich zu $REMOTEHOST kopiert.." >> $LOG<br />
echo "" >> $LOG<br />
elif [ -z "$SSH_FROM" ] && [ -z "$SSH_TO" ]; then<br />
mkdir -p "$DESTINATION"/@DSMConfig<br />
synoconfbkp export --filepath "$DESTINATION"/@DSMConfig/DSMConfig_"$DATE"_$LOKALHOST.dss<br />
echo "Lokale Sicherung der DSM-Systemkonfiguration erfolgreich." >> $LOG<br />
echo "" >> $LOG<br />
fi<br />
fi<br />
<br />
# Rotationszyklus für das Löschen von @Recycle, @Logfiles und @DSMConfig<br />
#-------------------------------------------------------------------------<br />
# Dateien im Ordner @Recycle die älter als x Tage sind, löschen.<br />
if $TARGET_TEST -d "$DESTINATION"/@Recycle/; then<br />
if [ -z "$STOP" ] && [ -n "$RECYCLE_ROTATE" ] && [ -z "$ERROR" ]; then<br />
$FIND "$DESTINATION"/@Recycle/* -type d -mtime +$RECYCLE_ROTATE -exec rm -rf {} \;<br />
echo "HINWEIS: Daten aus dem Ordner /@Recycle, die mehr als $RECYCLE_ROTATE Tage alt waren, wurden geloescht." >> $LOG<br />
echo "" >> $LOG<br />
fi<br />
fi<br />
# Dateien im Ordner @Logfiles die älter als x Tage sind, löschen.<br />
if $TARGET_TEST -d `dirname $0`/@Logfiles/; then<br />
if [ -z "$STOP" ] && [ -n "$LOGFILES_ROTATE" ] && [ -z "$ERROR" ]; then<br />
find `dirname $0`/@Logfiles -name "*.log" -type f -mtime +$LOGFILES_ROTATE -exec rm {} \;<br />
echo "HINWEIS: Daten aus dem Ordner /@Logfiles, die mehr als $LOGFILES_ROTATE Tage alt waren, wurden geloescht." >> $LOG<br />
echo "" >> $LOG<br />
fi<br />
fi<br />
# Dateien im Ordner @DSMConfig die älter als x Tage sind, löschen.<br />
if $TARGET_TEST -d "$DESTINATION"/@DSMConfig/; then<br />
if [ -z "$STOP" ] && [ -n "$DSMCONFIG_ROTATE" ] && [ -z "$ERROR" ]; then<br />
$FIND "$DESTINATION"/@DSMConfig -name "*.dss" -type f -mtime +$DSMCONFIG_ROTATE -exec rm {} \;<br />
echo "HINWEIS: Daten aus dem Ordner /@DSMConfig, die mehr als $DSMCONFIG_ROTATE Tage alt waren, wurden geloescht." >> $LOG<br />
echo "" >> $LOG<br />
fi<br />
fi<br />
<br />
# Verschlüsselte Shares wieder aushängen..<br />
#-------------------------------------------------------------------------<br />
if [ $UNMOUNT -ne 0 ] && [ -n "$TARGETDS" ]; then<br />
if [ $UNMOUNT -ne 2 ]; then<br />
IFS="<br />
"<br />
TARGET_ESCAPE=$(echo $TARGET | sed -e 's/ /\\ /g')<br />
TARGET_DECRYPT_ESCAPE=$(echo $TARGET_DECRYPT | sed -e 's/ /\\ /g')<br />
IFS="$BACKIFS"<br />
if [ -n "$SSH_TO" ]; then<br />
DEST_DECRYPT="$TARGET_DECRYPT_ESCAPE"<br />
else<br />
DEST_DECRYPT="$TARGET_DECRYPT"<br />
fi<br />
if $TARGET_TEST -d /volume*/@"$DEST_DECRYPT"@ && $TARGET_TEST -d /volume*/"$DEST_DECRYPT"; then<br />
echo "Ziel: $TARGET_DECRYPT wurde ausgehangen" >> $LOG<br />
$SYNOSHARE_TARGET /usr/syno/sbin/synoshare --enc_unmount "$DEST_DECRYPT" >> $LOG<br />
sleep 10<br />
fi<br />
fi<br />
fi<br />
if [ $UNMOUNT -ne 0 ] && [ -n "$SOURCEDS" ]; then<br />
if [ $UNMOUNT -ne 3 ]; then<br />
IFS="<br />
"<br />
for SHARE in $SOURCES; do<br />
SHARE_ESCAPE=$(echo $SHARE | sed -e 's/ /\\ /g')<br />
SHARE_CUT="${SHARE#*/}"<br />
SHARE_DECRYPT="${SHARE_CUT%%/*}"<br />
SHARE_DECRYPT_ESCAPE=$(echo $SHARE_DECRYPT | sed -e 's/ /\\ /g')<br />
IFS="$BACKIFS"<br />
if [ -n "$SSH_FROM" ]; then<br />
SOURCE_DECRYPT="$SHARE_DECRYPT_ESCAPE"<br />
else<br />
SOURCE_DECRYPT="$SHARE_DECRYPT"<br />
fi<br />
if $SOURCE_TEST -d /volume*/@"$SOURCE_DECRYPT"@ && $SOURCE_TEST -d /volume*/"$SOURCE_DECRYPT"; then<br />
echo "Quelle: $SHARE_DECRYPT wurde ausgehangen" >> $LOG<br />
$SYNOSHARE_SOURCE /usr/syno/sbin/synoshare --enc_unmount "$SHARE_DECRYPT" >> $LOG<br />
sleep 10<br />
fi<br />
done<br />
fi<br />
fi<br />
unset KEYFILEPW<br />
<br />
# Entfernten Server herunterfahren<br />
#-------------------------------------------------------------------------<br />
if [ $SHUTDOWN -ne 0 ] && [ -z "$RSYNC_CODE" ] && [ -z "$STOP" ] && [ -z "$ERROR" ]; then<br />
if [ -n "$SSH_FROM" ]; then<br />
$FROMSSH poweroff<br />
echo "Remoteserver $SSH_FROM wird heruntergefahren." >> $LOG<br />
elif [ -n "$SSH_TO" ]; then<br />
$TOSSH poweroff<br />
echo "Remoteserver $SSH_TO wird heruntergefahren." >> $LOG<br />
fi<br />
fi<br />
<br />
# Benachrichtigung an die DSM-Administratorengruppe sowie E-Mail senden<br />
#-------------------------------------------------------------------------<br />
if [ -n "$DSMNOTIFY" ]; then<br />
synodsmnotify @administrators "Script: $SCRIPTNAME" "$DSMNOTIFY"<br />
fi<br />
if [ -n "$EMAIL" ]; then<br />
if [ "$EMAILFAIL" -eq 1 ] && [ -z "$RSYNC_CODE" ] || [ -n "$STOP" ] || [ -n "$ERROR" ]; then<br />
ssmtp $EMAIL < $LOG<br />
elif [ "$EMAILFAIL" -eq 0 ]; then<br />
ssmtp $EMAIL < $LOG<br />
fi<br />
fi<br />
<br />
# Script beenden...<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ] && [ -z "$RSYNC_CODE" ] && [ -z "$ERROR" ] && [ "$AUTORUN" -eq 1 ]; then<br />
exit 100<br />
else<br />
exit $?<br />
fi<br />
<br />
</pre><br />
<br />
=Erstellen eines RSA-Keys für den Aufbau einer SSH-Verbindung=<br />
Es soll eine dateibasierte Datensicherung mittels RSync von Diskstation "A" (Produktivsystem) auf Diskstation "B" (Backupsystem) angelegt werden. Dabei übernimmt das Backupsystem die Aufgabe des Servers, worüber der Verbindungsaufbau und der eigentliche Sicherungsvorgang initiiert wird. Das Produktivsystem übernimmt somit die Aufgabe des Client und muß dem ganzen Vorgang nur zustimmen. Um dies zu ermöglichen muß im Vorfeld ein RSA-Schlüssel auf dem Backupsystem erzeugt und dem Produktivsystem der öffentliche Schlüssel mitgeteilt werden, um so den automatischen Verbindungsaufbau per SSH zu ermöglichen. Nachdem die SSH-Verbindung erfolgreich aufgebaut wurde, wird der eigentliche rsync-Befehl abgesetzt und somit die Datensicherung ausgelöst. Um auch in die Gegenrichtung sichern zu können, muss die RSA-Key Einrichtung dementsprechend gedreht werden, so das am Ende sowohl Diskstation "A" als auch Diskstation "B" Quelle als auch Ziel der Datensicherung darstellen können.<br />
<br />
Im folgenden werden alle Einstellungen für den Benutzer '''root''' getroffen, da nur unter diesem Benutzer die Signalausgabe als auch das Sichern der DSM-Konfiguration funktioniert. Wer hier lieber als "admin" oder vielleicht sogar als eingeschränkter Benutzer "rsync" arbeiten möchte, muss nachfolgend an den entsprechenden Stellen den gewünschten Benutzernamen einsetzen. Das hier verwendete Homeverzeichnis des Benutzer "root" wird im folgenden nur in dessen Kurzform mit ~/ angesprochen, wobei hier immer auf /root verwiesen wird. Alle anderen Benutzerkonten befinden sich im Homeverzeichnis /home/[BENUTZERNAME] bzw. richtigerweise unter /var/services/homes/[BENUTZERNAME].<br />
<br />
(Nachfolgend symbolisiert das Zeichen "$" nur den Zeilenanfang und wird nicht mit geschrieben)<br />
<br />
<br />
'''Hinweis zum Loginvorgang bis DSM 5.2 für den Benutzer "root"'''<br />
<pre><br />
Login als Benutzer "root" mit dem Passwort des DSM-Benutzer "admin"<br />
</pre><br />
<br />
'''Hinweis zum Loginvorgang ab DSM 6 für den Benutzer "root"'''<br />
<pre><br />
Login als Benutzer "admin" mit dem Passwort des DSM-Benutzer "admin"<br />
<br />
"root"-Zugriff erhält man dann über die Eingabe von...<br />
<br />
$ sudo -i<br />
<br />
...und gibt abermals das Password des DSM-Benutzer "admin" ein.<br />
</pre> <br />
<br />
<br />
'''Beginnen wir auf dem Server der "Diskstation B" oder besser gesagt, dem Backupsystem'''<br />
<br />
Auf der Konsole der DS als Benutzer "root" einloggen. <br />
Erstellen des RSA-Schlüssels mit...<br />
<br />
<pre>$ ssh-keygen -t rsa</pre><br />
<br />
Bei der Erstellung wird man nach Speicherort und Passphrase gefragt...<br />
<br />
<pre><br />
Enter file in which to save the key (/root/.ssh/id_rsa):<br />
Enter passphrase (empty for no oassphrase):<br />
Enter same passphrase again:<br />
</pre><br />
<br />
... hier bitte nichts eintragen, sondern einfach nur mit der "Return-Taste" bestätigen. Nach der Ausführung werden im Homeverzeichnis des Benutzer "root" folgende Ordner und Dateien erstellt:<br />
<br />
<pre><br />
~/.ssh<br />
~/.ssh/id_rsa<br />
~/.ssh/id_rsa.pub<br />
</pre><br />
<br />
An dieser Stelle sollte man gleich noch die Ordner- und Dateirechte anpassen.<br />
<br />
<pre>$ chmod 0700 ~/.ssh<br />
$ chmod 0600 ~/.ssh/id_rsa*<br />
</pre><br />
<br />
Den Inhalt der Datei ~/.ssh/id_rsa.pub z.B. mit vi, nano oder dem AdminTool editieren und den Inhalt in die Zwischenablage kopieren.<br />
<br />
<pre>$ nano ~/.ssh/id_rsa.pub</pre><br />
<br />
Wichtig, wie hier im Beispiel gezeigt (RSA-Schlüssel wurde hier gekürzt) ist, das alles in einer Zeile steht...<br />
<br />
<pre>ssh-rsa AAAAB3NzaC1yc2..*gekürzt*...EAAAADAQABA3e root@Backupstation</pre><br />
<br />
'''Weiter gehts auf dem Client der "Diskstation A", also dem Produktivsystem.'''<br />
<br />
Auf der Konsole der DS als Benutzer "root" einloggen. Erstellen eines neuen Ornders<br />
<br />
<pre>$ mkdir ~/.ssh</pre><br />
<br />
Daraufhin wird unter ~/.ssh/ eine neue Datei namens "authorized_keys" erstellt...<br />
<br />
<pre>$ nano ~/.ssh/authorized_keys</pre><br />
<br />
...und der Inhalt aus der Zwischenablage, also der Inhalt aus der ~/.ssh/id_rsa.pub, die auf dem Backupsystem erstellt wurde, in die geöffnete Datei eingefügt. Nach dem Speichern und verlassen des Editors müssen auch hier noch die Ordner- und Dateirechte richtig gesetzt werden.<br />
<br />
<pre><br />
$ chmod 0700 ~/.ssh<br />
$ chmod 0600 ~/.ssh/authorized_keys<br />
</pre><br />
<br />
'''Zurück auf der Konsole der Backupstation.'''<br />
<br />
Als Benutzer "root" auf der DS einloggen und als Erstes die SSH-Verbindung prüfen mit...<br />
<br />
<pre>$ ssh root@IP-DER-DISKSTATION_A -p 22</pre><br />
<br />
Der Verbindungsaufbau möchte vom System nochmal mit "yes" bestätigt werden um anschließend auf der Konsole des Produktivsystemes zu landen. Diese Verbindung kann man durch die Eingabe eines...<br />
<br />
<pre>$ exit</pre><br />
<br />
... wieder beenden. Durch den Verbindungsaufbau wurde nun in der Datei ~/.ssh/known_hosts ein neuer Eintrag hinzugefügt, der die Zugangsdaten zur Diskstation beinhaltet. Kontrollieren kann man das mit...<br />
<br />
<pre>$ nano ~/.ssh/known_hosts</pre><br />
<br />
Nachdem alles gut verlaufen ist, wird die Konsole wieder geschlossen mit...<br />
<br />
<pre>$ exit</pre><br />
<br />
=Release Notes=<br />
'''Release Notes vom 01.05.2016'''<br />
* Es wurde eine neue Variable (SSH_PORT) geschaffen um einen abweichenden SSH-Port angeben zu können.<br />
* Es wurde eine neue Variable (RSYNC_PORT) geschaffen um einen abweichenden RSync-Port angeben zu können.<br />
* Es wurde eine neue Variable (EMAILFAIL) geschaffen um nur bei einer Störung per E-Mail benachrichtigt zu werden.<br />
* Alle "schaltbaren" Benutzer-Variablen wurden nach dem Schema "0" = aus / "1" = an umstrukturiert. Ursprünglich wurde der Wert bei Zustand "aus" einfach leer gelassen, also "". <br />
* Kommentare im Benutzer-Eingabebereich des Scripts wurden optimiert.<br />
* Neben der bereits funktionierenden Sicherung von und auf eine weitere Diskstation funktioniert jetzt auch das Sichern von und auf einen RSync-kompatible Server. Das Script erkennt hierbei automatisch ob es sich um eine Diskstation oder einen RSync-kompatiblen Server handelt und passt die Sicherungs-Pfade dementsprechend an. Diskstation arbeiten i.d.R. mit einem /volume[x], RSync-kompatible Server tun das in der Regel nicht.<br />
* Viele weitere Detailverbesserungen, die hier nicht alle aufgeführt werden können. Nur so viel... das Script ist um weitere 100 Zeilen Scipt-Code gewachsen.<br />
<br />
=Externe Links=<br />
*[http://www.synology-forum.de/showthread.html?72786-Projekt-rsync-Alternative-dateibasierte-Datensicherung Forum Post]<br />
*[http://wpkg.org/Rsync_exit_codes rsync Exit Codes]<br />
*[http://www.synology-wiki.de/index.php/LEDs_und_Buttons LEDs und Buttons (zur Signalsteuerung)]</div>Itommeshttps://www.synology-wiki.de/index.php?title=Dateibasierte_RSync-Datensicherung_auf_externen_Datentr%C3%A4ger_oder_RSync_kompatiblen_Server&diff=7073Dateibasierte RSync-Datensicherung auf externen Datenträger oder RSync kompatiblen Server2016-05-02T18:38:30Z<p>Itommes: /* Script 2: Das Ausführungs-Script "start-rsync.sh" */</p>
<hr />
<div>=Einleitung=<br />
<br />
'''Diese Anleitung zur dateibasierten RSync-Datensicherung bietet folgende Möglichkeiten...'''<br />
<br />
* Quelle(n) und/oder Ziel können unverschlüsselt sein<br />
* Quelle(n) und/oder Ziel können verschlüsselt sein <br />
* Sicherung innerhalb eines /volume<br />
* Sicherung zwischen internen /volumes<br />
* Sicherung auf lokal angeschlossene USB-/SATA-Datenträger sowie eingebundene Remote-Shares (nur unverschlüsselt)<br />
* Sicherung von einer entfernten DS oder RSync-kompatilben Server<br />
* Sicherung auf eine entfernte DS oder RSync-kompatilben Server<br />
* (weitere Konstellationen sind möglich, wurden jedoch nicht getestet) <br />
<br />
'''Hinweis:''' Die Verschlüsselung beruht hierbei auf der von Synology verwendeten Ordnerverschlüsselung (eCryptfs). Um verschlüsselte gemeinsame Ordner einbinden zu können, wird das Key-File also der Exportschlüssel benötigt. Diesen erhält man über die DSM-Systemsteuerung/Gemeinsame Ordner.<br />
<br />
=Anmerkung=<br />
Bevor ihr anfangt, nehmt bitte noch den Artikel "[[Wichtige Informationen zum Modden der Synology Stations]]" zur Kenntnis. <br />
<br />
Auch wenn dieses Script intensiv auf einwandfreie Funktion hin getestet wurde, so kann eine Fehlfunktion und demzufolge ein möglicher Datenverlust nicht ausgeschlossen werden. Aus diesem Grund solltet ihr das System erstmal mit unwichtigen Testdaten auf Herz und Nieren prüfen und sich mit der Arbeitsweise des Scripts und dessen Funktionen vertraut machen bevor ihr das ganze "produktiv" einsetzt. '''Ihr verwendet dieses Script auf eigene Gefahr.'''<br />
<br />
=Voraussetzungen=<br />
* Umgang mit dem DSM Aufgabenplaner <br />
* Umgang mit einem Editor seiner Wahl (z.B. Notepad++ oder dem DSM Text-Editor)<br />
* Grundkenntnisse im Umgang mit Shell-Scripten<br />
* Umgang mit der Konsole (bei Verwendung des SSH-Zuganges)<br />
* Zum versenden einer E-Mail muss im DSM unter Hauptmenü/Systemsteuerung/Benachrichtigung eine E-Mail Adresse hinterlegt sein.<br />
* Ein externer USB- oder SATA-Datenträger, eine weitere Synology Diskstation oder einen rsync-kompatiblen Server im Netzwerk.<br />
* Optional: autorun für externe Datenträger (Version 1.7)<br />
<br />
=Erläuterungen zur Funktion und Arbeitsweise=<br />
<br />
<pre><br />
Diskstation<br />
| |<br />
| '--> Aufgabenplaner ------------------------------<br />
| | |<br />
| '--> Such-Script -----> USB/SATA-Share ---> Ausführungs-<br />
| | Script<br />
'----------------> USB/SATA-Share --> autorun -------- (Key-Files)<br />
|<br />
.---------------------------'<br />
|<br />
V<br />
.---------- Quelle <--- definiere ---> Ziel----------.<br />
| | | |<br />
V '-- lokale/intern/extern --' V<br />
lokalisiere Quelle(n) lokalisiere Ziel<br />
| | <br />
| Protokoll/E-Mail |<br />
|--> Verschlüsselte | Verschlüsseltes <--|<br />
| Quelle(n) anhand der | Ziel anhand der |<br />
| Key-Files einhängen <--- aushängen ---> Key-Files einhängen |<br />
| | | | |<br />
| V | V |<br />
'--------------------->> !! DATENSICHERUNG !! >>---------------------'<br />
| |<br />
'-- lokale/intern/extern -'<br />
<br />
</pre><br />
<br />
<br />
'''Scriptausführung über den DSM-Aufgabenplaner'''<br />
<br />
Das manuelle oder automatisierte Aufrufen von Such- oder Ausführungs-Script wird komfortabel über den DSM - Aufgabenplaner gesteuert. Das Such-Script hat dabei die Aufgabe, das Ausführungs-Script zu lokalisieren und starten. Es wird jedoch nur bei der Verwendung einer lokalen Datensicherung auf einem angeschlossenen USB-/SATA-Datenträger eingesetzt, da sich hier die Datenträgerbezeichnungen durchaus mal ändern können. Für alle andern Aufgaben wird das Such-Script nicht benötigt weshalb man das Ausführungs-Script auch direkt über den DSM-Aufgabenplaner ansprechen kann, um es manuell oder automatisiert auszuführen. Dabei befindet sich das Ausführungs-Script innerhalb eines "gemeinsamen Ordners" auf der DS, also z.B. dort, wo die interne oder externe Datensicherung später gespeichert werden soll.<br />
<br />
<br />
'''Scriptausführung mittels "autorun"'''<br />
<br />
Eine weitere Möglichkeit der Scriptausführung bietet die Verwendung von "autorun", welches angeschlossene USB-/SATA-Datenträger automatisch erkennt und ein darauf liegendes Script Namens "autorun" ausführt, sollte es im Wurzel- bzw. Hauptverzeichnis des externen Datenträgers lokalisiert werden. Dieses Verhalten machen wir uns zunutze, indem wir entweder den Inhalt unseres Ausführungs-Scriptes per Copy & Paste mit dem des "autorun" Scripts überschreiben, oder wir legen uns eine neue Datei namens "autorun" an bzw. benennen unser Script einfach nach "autorun" um und legen es auf dem externen Datenträger ab. Somit erhält man die Möglichkeit durch einfaches anstecken des USB-Sticks eine lokale, interne oder externe Datensicherung auszuführen. Ein weiterer Vorteil von "autorun" ist der Tatsache geschuldet, das sich evtl. benötigte Key-Files (also der Exportschlüssel) für das Einhängen verschlüsselter gemeinsamer Ordner am Speicherort des Ausführungs-Scripts befinden müssen. Wird der USB-Stick demnach nur für die Zeit der Datensicherung verwendet und ansonsten an einem sicheren Ort aufbewahrt, sind auch die Key-Files für diesen Zeitraum erstmal sicher. <br />
<br />
<br />
'''Arbeitsweise des Ausführungs-Script (start-rsync.sh)'''<br />
<br />
Das Ausführungs-Script führt neben einigen anderen Dingen die eigentliche Datensicherung aus, wobei mittels RSync sämtliche konfigurierte Quellen mit dem Ziel synchronisiert werden. Befindet sich unter den Quellen oder dem Ziel ein oder mehrere verschlüsselte gemeinsame Ordner, so können diese über das sogenanntes Key-File (der Exportschlüssel) automatisch ein- und nach dem Beenden der Datensicherung wieder automatisch ausgehangen werden. Dazu ist es jedoch erforderlich, das sich das Key-File am Speicherort des Ausführungs-Scripts befindet. Das Key-File selber wird einem beim erstellen eines verschlüsselten gemeinsamen Ordners im DSM unter Systemsteuerung/Gemeinsame Ordner zum Download angeboten, man kann sich dieses aber auch nachträglich erstellen lassen. Weiterhin muss der Benutzer im Vorfeld noch einige Parameter innerhalb des Ausführungs-Scripts definieren, dessen Funktionen durch zusätzliche Kommentare näher beschrieben werden.<br />
<br />
Um dem Benutzer ein Feedback über Erfolg und Misserfolg der Datensicherung geben zu können wird ein Systemprotokoll erstellt, welches in einem Ordner Namens /@Logfiles abgelegt wird. Dieser Ordner liegt hierbei immer im Speicherort des Ausführungs-Scriptes. Weiterhin werden gelöschte Daten einer Quelle, im Ziel bei Bedarf in den Ordner /@Recycle verschoben, welcher sich auch im Speicherort der Datensicherung befindet. Ebenso wird hier bei Bedarf ein weiterer Ordner mit dem Namen @/DSMConfig angelegt, worin die Sicherungen der DSM-Systemkonfiguration des Systems aufbewahrt werden, von dem auch die Quellen stammen. Die Inhalte der Ordner /@Logfiles, /@Recycle sowie /@DSMConfig können nach der Angabe einer Individuellen Zeitvorgabe (in Tagen) vom System automatisch gelöscht werden um einen Speicherüberlauf zu verhindern und um die Übersicht zu bewahren.<br />
<br />
Bei der eigentlichen Datensicherung über RSync werden die Ordnerpfade relativ, nach dem jeweiligen Volume (1,2,3,4….) in das entsprechende Unterverzeichnis gespeichert. Systemorder wie z.B. /@eaDIR, /#recycle, /#snapshot und /.DS_Store werden von der Synchronisation ausgeschlossen. Alle ausgeführten Schritte sowie Fehlermeldungen als auch Abbrüche werden protokolliert und teilweise über sogenannte Exit-Codes als Zahlenwert ausgegeben. Diese Exit-Codes geben weitere Auskunft über mögliche Fehlerquellen. Im Anhang unten findet man ein entsprechender Link zur Auswertung. Das Protokoll wird im oben beschriebenen Ordner /@Logfiles abgelegt und kann bei Bedarf auch als E-Mail zugestellt werden. <br />
<br />
Weitere Einstellmöglichkeiten werden innerhalb des Scripts beschrieben und hier nicht weiter ausgeführt.<br />
<br />
=Hinweise zum Erstellen und ausführen der Scripte=<br />
Die hier verwendeten Script-Dateinamen dienen nur der Veranschaulichung und können, unter Beachtung einiger Rahmenbedingungen nach Belieben verändert werden.<br />
Für die Erstellung der Scripte wurde im DSM unter dem Benutzer "admin" der DSM eigene Text-Editor, der evtl. noch über das Paketzentrum installiert werden muss, verwendet. Wichtig ist das im Editor unter "Voreinstellungen" im Reiter "Bearbeiten" als Standardcodierung "Unicode (UTF-8)" ausgewählt wird.<br />
<br />
Nachdem das jeweilige Script aus dem Wiki in die Zwischenablage kopiert und im Text-Editor eingefügt wurde, kann die entsprechende Datei über "Speichern unter..." am gewünschten Ort abgespeichert werden. Scripte die später über den Aufgabenplaner ausgeführt werden, müssen noch die entsprechenden Berechtigungen erhalten um das jeweilige Script "ausführbar" zu machen. Dazu muss man in der FileStation mit einem rechtsklick auf die betreffenden Datei gehen und im Kontextmenü den Menüpunkt "Eigenschaften" auswählen. Dort angekommen wechselt man zum Reiter "Genehmigung" und weiter auf die Schaltfläche "Erweiterte Optionen" um darauffolgend den Punkt "Übernommene Genehmigungen einschließen" auszuwählen. Zum Schluss bestätigt man das Ganze mit der Schaltfläche "OK" (Die Datei sollte jetzt die Berechtigung rwxrw-rw, bzw. 766 haben)<br />
<br />
Nachdem die Privilegien richtig gesetzt wurden, kann das Script unter Hauptmenü/Systemsteuerung in den Aufgabenplaner aufgenommen werden, ohne die Aufgabe jedoch vorerst auszuführen. Dazu wählt man unter DSM 6 "Erstellen" --> "Geplante Aufgabe" --> "Benutzerdefiniertes Script". Im Reiter "Allgemein" kann man unter "Vorgang" einen individuellen Namen für die Aufgabe vergeben und als Benutzer sollte "root" ausgewählt werden. Bei einer Netzwerksicherung über eine SSH-Verbindung muss hier der Benutzer angegeben werden, auf dem der RSA-Key ausgestellt wurde, in unserem Fall (siehe Anleitung unten) ist das der Benutzer "root". (Nur unter dem Benutzer "root" funktioniert die Signaausgabe sowie die Sicherung der DSM-Konfiguration) Die Checkbox "Aktiviert" wird nur benötigt, sollte das Script automatisiert, also Zeitgesteuert gestartet werden. Dazu wäre dann im nächsten Schritt unter dem Reiter der "Zeitplan" zu definieren. Im Reiter "Aufgabeneinstellungen" muss jetzt noch unter dem Punkt "Befehl ausführen" der Pfad zum "Benutzerdefinierten Script" angegeben werden, also z.B. /volume1/ScriptStuff/search-rsync.sh. Nach dem Bestätigen mit "OK" wird die Aufgabe dem Aufgabenplaner hinzugefügt und kann später, falls gewünscht, nach dem Markieren der Aufgabe, über die Schaltfläche "Ausführen" manuell ausgeführt werden.<br />
<br />
=Script 1: Das Such-Script "search-rsync.sh"=<br />
<br />
Da es mehrere Ansätze für die Suche gibt, kann man sich hier [[Dateibasierte RSync-Datensicherung auf externen Datenträger oder RSync kompatiblen Server/Suchscriptvarianten|Weitere Suchscriptvarianten]] anschauen und sich die für sich passenden Möglichkeit auswählen.<br />
<br />
'''search-rsync.sh'''<br />
<pre><br />
#!/bin/sh<br />
<br />
# Zeichenkette für Script-Dateinamen definieren<br />
# ------------------------------------------------------------------------<br />
# Es ist nicht erforderlich, den kompletten Script-Dateinamen anzugeben. |<br />
# Es reicht die Eingabe einer Zeichenkette, die in jedem auszuführenden |<br />
# Script-Dateinamen enthalten sein muss. |<br />
# Beispiele für die Zeichenkette: "local" = local_Backup_Filme.sh |<br />
# local_Filme.sh oder auch Filme_local_sichern.sh |<br />
#-------------------------------------------------------------------------<br />
SCRIPT_STRING="start"<br />
<br />
# ------------------------------------------------------------------------<br />
# Ab hier bitte nichts mehr ändern |<br />
# ------------------------------------------------------------------------<br />
<br />
for SCRIPT in /volume*/*share/*$SCRIPT_STRING*.sh<br />
do<br />
if [ -f $SCRIPT ]; then<br />
sh $SCRIPT<br />
fi<br />
done<br />
</pre><br />
<br />
=Script 2: Das Ausführungs-Script "start-rsync.sh"=<br />
Das Script mit dem beispielhaften Script-Dateinamen "start-rsync.sh", wird entweder auf den entsprechenden externen USB- oder SATA-Datenträger in dessen Wurzelverzeichnis oder aber in einen "gemeinsamen Ordner" auf der Diskstation abgelegt, auf dem die Datensicherung abgelegt werden soll. <br />
<br />
'''start-rsync.sh'''<br />
<pre><br />
#!/bin/sh<br />
<br />
# E-Mail Adresse<br />
# -------------------------------------------------------------------------<br />
# Die E-Mail Adresse muss mit der bereits im DSM unter "Benachrichtigung" |<br />
# hinterlegten E-Mail-Adresse identisch sein. |<br />
# -------------------------------------------------------------------------<br />
EMAIL="" # E-Mail für Zustellung des Sicherungsprotokolls<br />
EMAILFAIL="0" # "0" = Sicherungsprotokoll immer senden<br />
# "1" = Sicherungsprotokoll nur bei Problemen senden<br />
<br />
# SSH - Verbindungsdaten<br />
# -------------------------------------------------------------------------<br />
# Werden keine Verbindungsdaten angegeben, wird eine lokale Datensicherung|<br />
# durchgeführt. |<br />
# -------------------------------------------------------------------------<br />
SSH_USER="" # Benutzername<br />
SSH_FROM="" # IP-, Host- oder Domain VON entfernter Quelle AUF lokales Ziel<br />
SSH_TO="" # IP-, Host- oder Domain VON lokaler Quelle AUF entferntes Ziel<br />
SSH_PORT="" # Leer = Port 22 ansonsten gewünschten Port angeben<br />
RSYNC_PORT="" # Alternativer Rsync Port kann hier eingetragen werden<br />
<br />
# Umgang mit verschlüsselten Ordnern<br />
# ------------------------------------------------------------------------<br />
# Angeben, ob eingehangene verschlüsselte Ordner nach der Datensicherung |<br />
# wieder ausgehangen werden sollen. |<br />
# ------------------------------------------------------------------------<br />
UNMOUNT="0" # "0" = Eingehangene Ordner werden nicht ausgehängt<br />
# "1" = Quelle und Ziel werden ausgehängt<br />
# "2" = Quelle wird ausgehängt<br />
# "3" = Ziel wird ausgehängt<br />
# Backup - Quellen<br />
# ------------------------------------------------------------------------<br />
# Hier können beliebige, unverschlüsselte sowie verschlüsselte |<br />
# Backup-Quellen einer lokalen oder entfernten DS eingetragen werden. |<br />
# Zu beachten ist, das immer der vollständige Pfad ohne Angabe des |<br />
# entsprechenden Volume anzugeben ist. Weiterhin ist auf die |<br />
# Schreibweise im Beispiel zu achten, pro Zeile je eine Backupquelle. |<br />
# ------------------------------------------------------------------------<br />
SOURCES="/homes/admin<br />
/music<br />
/verschlüsselter_ordner"<br />
<br />
# Backup - Ziel<br />
# ------------------------------------------------------------------------<br />
# Wenn NOTTOSCRIPT="0" |<br />
# - dann entspricht TARGET einem "Unterverzeichnis" am Speicherort des |<br />
# Scripts. Beisp.: volume[x]/share/[TARGET] oder bei einem |<br />
# angeschlossenen USB-Datenträger: volumeUSB[x]/usbshare/[TARGET] |<br />
# - Ist zusätzlich HOSTNAME="1" gesetzt, wird der Netzwerkname dem |<br />
# Speicherort hinzugefügt. Beisp.: volume[x]/Share/[TARGET]/[HOSTNAME]|<br />
# |<br />
# Wenn NOTTOSCRIPT="1" und Ziel ist eine Diskstation |<br />
# - dann entspricht TARGET einem "gemeinsamen Ordner" (Share) am |<br />
# Speicherort des Ziel's. Beisp.: volume[x]/[TARGET] |<br />
# - Ist zusätzlich HOSTNAME="1" gesetzt, wird der Netzwerkname dem |<br />
# Speicherort hinzugefügt. Beisp.: volume[x]/[TARGET]/[HOSTNAME] |<br />
# |<br />
# Wenn NOTTOSCRIPT="1" und Ziel ist ein RSync-kompatibler Server |<br />
# - dann entspricht TARGET einem Ordner (Share) am Speicherort des |<br />
# Ziel's. Beisp.: /[TARGET] |<br />
# - Ist zusätzlich HOSTNAME="1" gesetzt, wird der Netzwerkname dem |<br />
# Speicherort hinzugefügt. Beisp.: /[TARGET]/[HOSTNAME] |<br />
#-------------------------------------------------------------------------<br />
TARGET="/RSync-Backup"<br />
<br />
NOTTOSCRIPT="0" # "0" = Sicherungsziel liegt beim Script<br />
# "1" = Sicherungsziel liegt im geinsamen Ordner<br />
HOSTNAME="0" # "0" = Sicherungsziel entspricht TARGET<br />
# "1" = Sicherungsziel entspricht TARGET/HOSTNAME<br />
AUTORUN="0" # "0" = autorun wirft USB-Stick nicht aus<br />
# "1" = autorun wirft USB-Stick aus<br />
<br />
# Optische- sowie akustische Signalausgabe<br />
#-------------------------------------------------------------------------<br />
# Start : Status-LED wechselt von grün nach orange. Ein Signalton ertönt|<br />
# Ende : Status-LED wechselt von orange nach grün. Ein Signalton ertönt|<br />
# Fehler : Status-LED wechselt von orange nach grün. 3x Signalton ertönt |<br />
#-------------------------------------------------------------------------<br />
SIGNAL="0" # "0" = Optische- sowie akustische Signalausgabe aus<br />
# "1" = Optische- sowie akustische Signalausgabe an<br />
<br />
# Exportieren der DSM-Systemkonfiguration (.dss)<br />
#-------------------------------------------------------------------------<br />
# Die DSM-Systemkonfigurartion (.dss) wird in den Systemordner |<br />
# /@DSMConfig exportiert. |<br />
#-------------------------------------------------------------------------<br />
DSM_EXPORT="0" # "0" = DSM-Systemkonfiguration wird NICHT exportiert<br />
# "1" = DSM-Systemkonfiguration wird exportiert<br />
<br />
# Rotationszyklus für das Löschen von @Recycle und @Logfiles<br />
#-------------------------------------------------------------------------<br />
# Zeitangabe, wann Ordner bzw. Dateien in den System-Ordnern endgültig |<br />
# gelöscht werden sollen, die älter als x Tage sind. |<br />
# ------------------------------------------------------------------------<br />
RECYCLE_ROTATE="90" # @Recycle-Daten die älter als "x" Tage sind, löschen<br />
LOGFILES_ROTATE="60" # @Logfiles-Daten die älter als "x" Tage sind, löschen<br />
DSMCONFIG_ROTATE="30" # @DSMConfig-Daten die älter als "x" Tage sind, löschen<br />
<br />
# ------------------------------------------------------------------------<br />
# Ab hier bitte nichts mehr ändern, wenn man nicht weiß was man tut !!! |<br />
# ------------------------------------------------------------------------<br />
<br />
# Umgebungsvariablen definieren<br />
#-------------------------------------------------------------------------<br />
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/syno/bin:/usr/syno/sbin<br />
SCRIPTFILE="${0##*/}"<br />
SCRIPTNAME="${SCRIPTFILE%.*}"<br />
TARGET_EMPTY="/Backup_DS"<br />
DEST="${TARGET#*/}"<br />
TARGET_PATH="${TARGET##*/}"<br />
TARGET_DECRYPT="${DEST%%/*}"<br />
SOURCE="${SHARE#*/}"<br />
SOURCE_DECRYPT="${SOURCE%%/*}"<br />
DATE=`date +%Y-%m-%d_%Hh%M`<br />
TIMESTAMP=`date +%d.%m.%Y%t%H:%M:%S`<br />
LOKALHOST="$(hostname)"<br />
if [[ ${TARGET:0:1} != \/ ]] ; then<br />
TARGET="/$TARGET"<br />
fi<br />
HR="------------------------------------------------------------------------------------------------"<br />
<br />
# RSync Optionen konfigurieren<br />
#-------------------------------------------------------------------------<br />
SYNCOPT="-ahR"<br />
LOGSTAT="--stats"<br />
EXCLUDE="--exclude=@eaDir/*** --exclude=@Logfiles/*** --exclude=#recycle/*** --exclude=#snapshot/*** --exclude=.DS_Store/***"<br />
RECYCLE="--delete --backup --backup-dir=@Recycle/"$DATE"_$SCRIPTNAME"<br />
<br />
# Variablen je nach Verbindung festlegen<br />
#-------------------------------------------------------------------------<br />
# Wenn Verbindung AUF entfernten Server... (TOSSH)<br />
if [ -n "$SSH_FROM" ] && [ -z "$SSH_TO" ]; then<br />
if [ -n "$SSH_PORT" ]; then<br />
FROMSSH="ssh -p $SSH_PORT $SSH_USER@$SSH_FROM"<br />
SCP="scp -P $SSH_PORT"<br />
else<br />
FROMSSH="ssh $SSH_USER@$SSH_FROM"<br />
SCP="scp"<br />
fi<br />
if [ -n "$RSYNC_PORT" ]; then<br />
FROMRSYNC="ssh -p $RSYNC_PORT -l $SSH_USER"<br />
else<br />
FROMRSYNC="ssh -l $SSH_USER"<br />
fi<br />
REMOTEHOST=$($FROMSSH "echo \`hostname\`")<br />
SYNOSHARE_SOURCE="$FROMSSH"<br />
SYNOSHARE_TARGET=""<br />
SYNO_TARGET=""<br />
FIND="$FROMSSH find"<br />
SOURCE_TEST="$FROMSSH test"<br />
TARGET_TEST="test"<br />
if [ "$HOSTNAME" -eq 1 ]; then<br />
NAME="$REMOTEHOST"<br />
fi<br />
# Wenn Verbindung VON entfernten Server... (FROMSSH)<br />
elif [ -z "$SSH_FROM" ] && [ -n "$SSH_TO" ]; then<br />
if [ -n "$SSH_PORT" ]; then<br />
TOSSH="ssh -p $SSH_PORT $SSH_USER@$SSH_TO"<br />
SCP="scp -P $SSH_PORT"<br />
else<br />
TOSSH="ssh $SSH_USER@$SSH_TO"<br />
SCP="scp"<br />
fi<br />
if [ -n "$RSYNC_PORT" ]; then<br />
TORSYNC="ssh -p $RSYNC_PORT -l $SSH_USER"<br />
else<br />
TORSYNC="ssh -l $SSH_USER"<br />
fi<br />
REMOTEHOST=$($TOSSH "echo \`hostname\`")<br />
SYNOSHARE_SOURCE=""<br />
SYNOSHARE_TARGET="$TOSSH"<br />
FIND="$TOSSH find"<br />
SOURCE_TEST="test"<br />
TARGET_TEST="$TOSSH test"<br />
if [ "$HOSTNAME" -eq 1 ]; then<br />
NAME="$LOKALHOST"<br />
fi<br />
# Wenn Verbindung lokal...<br />
elif [ -z "$SSH_FROM" ] && [ -z "$SSH_TO" ]; then<br />
SYNOSHARE=""<br />
SYNO_TARGET=""<br />
FIND="find"<br />
SOURCE_TEST="test"<br />
TARGET_TEST="test"<br />
if [ "$HOSTNAME" -eq 1 ]; then<br />
NAME="$LOKALHOST"<br />
fi<br />
fi<br />
<br />
# DSM-Benachrichtigung: Script wird ausgeführt...<br />
#-------------------------------------------------------------------------<br />
synodsmnotify @administrators "Script: $SCRIPTNAME" "Wird ausgeführt.."<br />
<br />
# Speicherort des Logfiles festlegen<br />
#-------------------------------------------------------------------------<br />
mkdir -p `dirname $0`/@Logfiles<br />
LOG="`dirname $0`/@Logfiles/"$DATE"_$SCRIPTNAME.log"<br />
if [ -z "$TARGET" ] && [ "$NOTTOSCRIPT" -eq 1 ]; then<br />
STOP="Bitte TARGET setzen oder NOTTOSCRIPT nicht setzen..." >> $LOG<br />
fi<br />
if [ $SIGNAL -eq 1 ]; then<br />
echo 3 >/dev/ttyS1; echo : >/dev/ttyS1<br />
sleep 2<br />
fi<br />
<br />
# Ordner/Datei für das Protokoll anlegen und Kopfdaten generieren<br />
#-------------------------------------------------------------------------<br />
# E-Mail-Kopf aufbauen...<br />
if [ -n "$EMAIL" ]; then<br />
echo "To: $EMAIL" > $LOG<br />
echo "From: $EMAIL" >> $LOG<br />
echo "Subject: Sicherungsprotokoll vom $TIMESTAMP Uhr" >> $LOG<br />
echo "" >> $LOG<br />
echo "Ausgefuehrtes RSync-Script: $SCRIPTFILE" >> $LOG<br />
echo "" >> $LOG; echo "$HR" >> $LOG<br />
# Protokoll-Kopf aufbauen...<br />
else<br />
echo "Sicherungsprotokoll vom $TIMESTAMP Uhr" >> $LOG<br />
echo "" >> $LOG<br />
echo "Ausgefuehrtes RSync-Script: $SCRIPTFILE" >> $LOG<br />
echo "" >> $LOG; echo "$HR" >> $LOG<br />
fi<br />
<br />
# Fehlender User (SSH_USER)<br />
#-------------------------------------------------------------------------<br />
if [ -n "$SSH_FROM" ] || [ -n "$SSH_TO" ]; then<br />
if [ -z "$SSH_USER" ]; then<br />
STOP="FEHLER: Bei der Netzwerksicherung bitte SSH_USER angeben." >> $LOG<br />
fi<br />
fi<br />
<br />
# Fehler SSH_FROM & SSH_TO<br />
#-------------------------------------------------------------------------<br />
if [ -n "$SSH_FROM" ] && [ -n "$SSH_TO" ]; then<br />
STOP="FEHLER: Bitte nur SSH_FROM oder SSH_TO setzen!" >> $LOG<br />
fi<br />
<br />
# Verbindungstest (SSH_FROM)<br />
#-------------------------------------------------------------------------<br />
if [ -n "$SSH_FROM" ]; then<br />
if [ ! "$FROMSSH" ]; then<br />
STOP="FEHLER: Es konnte keine SSH-Verbindung zu $SSH_FROM aufgebaut werden." >> $LOG<br />
elif [ "$FROMSSH" ]; then<br />
echo "SSH-Verbindung zu $REMOTEHOST aufgebaut." >> $LOG<br />
fi<br />
fi<br />
<br />
# Verbindungstest (SSH_TO)<br />
#-------------------------------------------------------------------------<br />
if [ -n "$SSH_TO" ]; then<br />
if [ ! "$TOSSH" ]; then<br />
STOP="FEHLER: Es konnte keine SSH-Verbindung zu $SSH_TO aufgebaut werden." >> $LOG<br />
elif [ "$TOSSH" ]; then<br />
echo "SSH-Verbindung zu $REMOTEHOST aufgebaut." >> $LOG<br />
fi<br />
fi<br />
<br />
# Verbindungstest ob Quelle bzw. Ziel eine Diskstation ist oder nicht<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ] && [ -n "$SSH_FROM" ] || [ -n "$SSH_TO" ]; then<br />
if $SOURCE_TEST -d /usr/syno/synoman; then<br />
SOURCE_PATH="/volume*"<br />
SOURCEDS="1"<br />
echo "Quellserver ist eine DS" >> $LOG<br />
elif $SOURCE_TEST ! -d /usr/syno/synoman; then<br />
SOURCE_PATH=""<br />
echo "Quellserver ist keine DS" >> $LOG<br />
fi<br />
if $TARGET_TEST -d /usr/syno/synoman; then<br />
TARGET_PATH="/volume*"<br />
TARGETDS="1"<br />
echo "Zielserver ist eine DS" >> $LOG<br />
elif $TARGET_TEST ! -d /usr/syno/synoman; then<br />
TARGET_PATH=""<br />
echo "Zielserver ist keine DS" >> $LOG<br />
fi<br />
elif [ -z "$STOP" ]; then<br />
SOURCE_PATH="/volume*"<br />
TARGET_PATH="/volume*"<br />
SOURCEDS="1"<br />
TARGETDS="1"<br />
fi<br />
<br />
# Zielordner checken<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ]; then<br />
if [ "$NOTTOSCRIPT" -eq 1 ] || [ -n "$SSH_TO" ]; then<br />
if $TARGET_TEST ! -d $TARGET_PATH/@$TARGET_DECRYPT@ && $TARGET_TEST -d $TARGET_PATH/$TARGET_DECRYPT; then<br />
echo "Zielordner $TARGET_DECRYPT wurde lokalisiert..." >> $LOG<br />
elif $TARGET_TEST -d $TARGET_PATH/@$TARGET_DECRYPT@ && $TARGET_TEST -d $TARGET_PATH/$TARGET_DECRYPT; then<br />
echo "Verschluesselter Zielordner $TARGET_DECRYPT bereits eingehangen..." >> $LOG<br />
elif $TARGET_TEST -d $TARGET_PATH/@$TARGET_DECRYPT@ && $TARGET_TEST ! -d $TARGET_PATH/$TARGET_DECRYPT; then<br />
echo "Verschluesselter Zielordner $TARGET_DECRYPT nicht eingehangen..." >> $LOG<br />
# Anhand des Key-Files versuchen einen verschluesselten Zielordner einbinden<br />
if test -f `dirname $0`/$TARGET_DECRYPT.key; then<br />
echo "$TARGET_DECRYPT.key gefunden" >> $LOG<br />
echo "Verschluesselter Zielordner $TARGET_DECRYPT wird eingehangen..." >> $LOG<br />
KEYFILEDEST=$(ecryptfs-unwrap-passphrase `dirname $0`/$TARGET_DECRYPT.key "\$1\$5YN01o9y")<br />
$SYNOSHARE_TARGET /usr/syno/sbin/synoshare --enc_mount "$TARGET_DECRYPT" "$KEYFILEDEST" >> $LOG<br />
sleep 20<br />
if $TARGET_TEST -d $TARGET_PATH/@$TARGET_DECRYPT@ && $TARGET_TEST ! -d $TARGET_PATH/$TARGET_DECRYPT; then<br />
echo "Verschluesselter Zielordner $TARGET_DECRYPT konnte nicht eingehangen werden..." >> $LOG<br />
fi<br />
else<br />
echo "Kein Keyfile fuer $TARGET_DECRYPT gefunden! Verschluesselte Ordner muessen eingehangen werden!"<br />
fi<br />
fi<br />
if $TARGET_TEST ! -d $TARGET_PATH/$TARGET_DECRYPT; then<br />
STOP="Zielordner $TARGET_DECRYPT nicht gefunden!"<br />
fi<br />
fi<br />
fi<br />
<br />
# Quellordner checken<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ]; then<br />
echo "" >> $LOG<br />
for SHARE in $SOURCES; do<br />
SOURCE="${SHARE#*/}"<br />
SHARE_DECRYPT="${SOURCE%%/*}"<br />
if $SOURCE_TEST ! -d $SOURCE_PATH/@$SHARE_DECRYPT@ && $SOURCE_TEST -d $SOURCE_PATH/$SHARE_DECRYPT; then<br />
echo "Quellordner $SHARE_DECRYPT wurde lokalisiert..." >> $LOG<br />
elif $SOURCE_TEST -d $SOURCE_PATH/@$SHARE_DECRYPT@ && $SOURCE_TEST -d $SOURCE_PATH/$SHARE_DECRYPT; then<br />
echo "Verschluesselter Quellordner $SHARE_DECRYPT bereits eingehangen..." >> $LOG<br />
elif $SOURCE_TEST -d $SOURCE_PATH/@$SHARE_DECRYPT@ && $SOURCE_TEST ! -d $SOURCE_PATH/$SHARE_DECRYPT; then<br />
echo "Verschluesselter Quellordner $SHARE_DECRYPT nicht eingehangen..." >> $LOG<br />
# Anhand des Key-Files versuchen einen verschluesselten Quellordner einbinden<br />
if test -f `dirname $0`/$SHARE_DECRYPT.key; then<br />
echo "$SHARE_DECRYPT.key gefunden" >> $LOG<br />
echo "Verschluesselter Quellordner $SHARE_DECRYPT wird eingehangen..." >> $LOG<br />
KEYFILESHARE=$(ecryptfs-unwrap-passphrase `dirname $0`/$SHARE_DECRYPT.key "\$1\$5YN01o9y")<br />
$SYNOSHARE_SOURCE /usr/syno/sbin/synoshare --enc_mount "$SHARE_DECRYPT" "$KEYFILESHARE" >> $LOG<br />
sleep 20<br />
if $SOURCE_TEST -d $SOURCE_PATH/@$SHARE_DECRYPT@ && $SOURCE_TEST ! -d $SOURCE_PATH/$SHARE_DECRYPT; then<br />
echo "Verschluesselter Quellordner $SHARE_DECRYPT konnte nicht eingehangen werden..." >> $LOG<br />
fi<br />
else<br />
STOP="Kein Keyfile fuer $SHARE_DECRYPT gefunden! Verschluesselte Ordner muessen eingehangen werden! Datensicherung ABGEBROCHEN..."<br />
fi<br />
fi<br />
done<br />
fi<br />
echo "" >> $LOG<br />
<br />
# Ziel definieren<br />
#-------------------------------------------------------------------------<br />
if [ -z "$STOP" ]; then<br />
if [ -n "$SSH_TO" ] && [ -n "$TARGET" ]; then<br />
VOLDEST=$($TOSSH "echo $TARGET_PATH/$TARGET_DECRYPT")<br />
VOLTARGET="${VOLDEST%/*}"<br />
if [ -n "$TARGETDS" ]; then<br />
DESTTARGET="$VOLTARGET$TARGET"<br />
else<br />
DESTTARGET="$TARGET"<br />
fi<br />
if [ "$HOSTNAME" -eq 1 ]; then<br />
DESTINATION="$DESTTARGET/$NAME"<br />
else<br />
DESTINATION="$DESTTARGET"<br />
fi<br />
elif [ -n "$SSH_TO" ] && [ -z "$TARGET" ]; then<br />
STOP="Bei SSH_TO muss TARGET angegeben werden!" >> $LOG<br />
elif [ -z "$SSH_TO" ] && [ "$NOTTOSCRIPT" -eq 0 ] && [ -z "$TARGET" ]; then<br />
if [ "$HOSTNAME" -eq 1 ]; then<br />
DESTINATION="`dirname $0`$TARGET_EMPTY/$NAME"<br />
else<br />
DESTINATION="`dirname $0`$TARGET_EMPTY"<br />
fi<br />
elif [ -z "$SSH_TO" ] && [ "$NOTTOSCRIPT" -eq 1 ] && [ -z "$TARGET" ]; then<br />
STOP="Bei NOTTOSCRIPT=1 muss TARGET angegeben werden!" >> $LOG<br />
elif [ -z "$SSH_TO" ] && [ "$NOTTOSCRIPT" -eq 1 ] && [ -n "$TARGET" ]; then<br />
VOLDEST=$(echo $TARGET_PATH/$TARGET_DECRYPT)<br />
VOLTARGET="${VOLDEST%/*}"<br />
if [ -n "$TARGETDS" ]; then<br />
DESTTARGET="$VOLTARGET$TARGET"<br />
else<br />
DESTTARGET="$TARGET"<br />
fi<br />
if [ "$HOSTNAME" -eq 1 ]; then<br />
DESTINATION="$DESTTARGET/$NAME"<br />
else<br />
DESTINATION="$DESTTARGET"<br />
fi<br />
mkdir -p "$DESTINATION"<br />
elif [ -z "$SSH_TO" ] && [ "$NOTTOSCRIPT" -eq 0 ]; then<br />
if [ "$HOSTNAME" -eq 1 ]; then<br />
DESTINATION="`dirname $0`$TARGET/$NAME"<br />
else<br />
DESTINATION="`dirname $0`$TARGET"<br />
fi<br />
mkdir -p "$DESTINATION"<br />
fi<br />
if [ -n "$SSH_TO" ] && [ "$NOTTOSCRIPT" -eq 0 ]; then<br />
STOP="Bei SSH_TO muss NOTTOSCRIPT gesetzt werden!" >> $LOG<br />
elif [ -n "$SSH_TO" ] && [ "$NOTTOSCRIPT" -eq 1 ] && [ -n "$TARGET" ]; then<br />
if $TARGET_TEST -d $TARGET_PATH/$TARGET_DECRYPT; then<br />
$TOSSH mkdir -p "$DESTINATION"<br />
fi<br />
fi<br />
fi<br />
<br />
# Beginn der RSync-Datensicherung<br />
#--------------------------------------------------------------------------<br />
for SHARE in $SOURCES; do<br />
SOURCE="${SHARE#*/}"<br />
SHARE_DECRYPT="${SOURCE%%/*}"<br />
<br />
if $SOURCE_TEST ! -d $SOURCE_PATH/$SOURCE && [ -z "$STOP" ]; then<br />
ERROR="1"<br />
echo "$HR" >> $LOG<br />
echo "ACHTUNG: Quellordner $SHARE_DECRYPT nicht erreichbar..." >> $LOG<br />
echo "$HR" >> $LOG; echo "" >> $LOG<br />
elif $SOURCE_TEST -d $SOURCE_PATH/$SOURCE && [ -z "$STOP" ]; then<br />
<br />
# SSH-SSH_FROM RSync-Datensicherung VON einer entfernten DS oder komp. Server<br />
#--------------------------------------------------------------------------<br />
if [ -n "$SSH_FROM" ] && [ -z "$SSH_TO" ] && [ -n "$DESTINATION" ]; then<br />
echo "$HR" >> $LOG<br />
echo "Starte Datensicherung: $REMOTEHOST$SHARE nach $DESTINATION" >> $LOG<br />
echo "$HR" >> $LOG<br />
if [ -n "$SOURCEDS" ]; then<br />
rsync -e "$FROMRSYNC" $SYNCOPT $SSH_FROM:/volume*$SHARE $LOGSTAT $EXCLUDE $RECYCLE "$DESTINATION" >> $LOG<br />
RSYNC_CODE="$?"<br />
elif [ -z "$SOURCEDS" ]; then<br />
rsync -e "$FROMRSYNC" $SYNCOPT $SSH_FROM:$SHARE $LOGSTAT $EXCLUDE $RECYCLE "$DESTINATION" >> $LOG<br />
RSYNC_CODE="$?"<br />
fi<br />
fi<br />
# SSH-SSH_TO RSync-Datensicherung AUF eine entfernte DS oder komp. Server<br />
#--------------------------------------------------------------------------<br />
if [ -n "$SSH_TO" ] && [ -z "$SSH_FROM" ] && [ -n "$DESTINATION" ]; then<br />
echo "$HR" >> $LOG<br />
echo "Starte Datensicherung: $LOKALHOST$SHARE nach $DESTINATION" >> $LOG<br />
echo "$HR" >> $LOG<br />
if [ -n "$SOURCEDS" ]; then<br />
rsync -e "$TORSYNC" $SYNCOPT /volume*$SHARE $LOGSTAT $EXCLUDE $RECYCLE $SSH_TO:"$DESTINATION" >> $LOG<br />
RSYNC_CODE="$?"<br />
elif [ -z "$SOURCEDS" ]; then<br />
rsync -e "$TORSYNC" $SYNCOPT $SHARE $LOGSTAT $EXCLUDE $RECYCLE $SSH_TO:"$DESTINATION" >> $LOG<br />
RSYNC_CODE="$?"<br />
fi<br />
fi<br />
# RSync- Lokale Datensicherung auf Volume, USB- oder SATA-Datenträger<br />
#-------------------------------------------------------------------------<br />
if [ -z "$SSH_TO" ] && [ -z "$SSH_FROM" ] && [ -n "$DESTINATION" ]; then<br />
echo "$HR" >> $LOG<br />
echo "Starte Datensicherung: $REMOTEHOST$SHARE nach $DESTINATION" >> $LOG<br />
echo "$HR" >> $LOG<br />
if [ -n "$SOURCEDS" ]; then<br />
rsync $SYNCOPT /volume*"$SHARE" $LOGSTAT $EXCLUDE $RECYCLE "$DESTINATION" >> $LOG<br />
RSYNC_CODE="$?" RSYNC_CODE="$?"<br />
elif [ -z "$SOURCEDS" ]; then<br />
rsync $SYNCOPT $SHARE $LOGSTAT $EXCLUDE $RECYCLE "$DESTINATION" >> $LOG<br />
RSYNC_CODE="$?"<br />
fi<br />
fi<br />
# RSync Exit-Code = Fehlermeldung<br />
#-------------------------------------------------------------------------<br />
# Exit-Code: Entfernter Server ausgeschaltet?<br />
if [ $RSYNC_CODE -eq 43 ]; then<br />
echo "Entfernte DS oder RSync komp. Server nicht Online? Bitte RSYNC Port kontrollieren!" >> $LOG<br />
# Exit-Code: DSL-Verbindung getrennt?<br />
elif [ $RSYNC_CODE -eq 255 ]; then<br />
echo "Bitte Internetverbindung oder RSYNC Port kontrollieren!" >> $LOG<br />
#Exit-Code ausgeben...<br />
elif [ $RSYNC_CODE -ne 0 ]; then<br />
echo "RSync Fehlermeldung (Exit Code): $RSYNC_CODE" >> $LOG<br />
fi<br />
echo "" >> $LOG<br />
fi<br />
done<br />
<br />
# RSync Exit-Code = Erfolgreich bzw. Unvollständig<br />
#-------------------------------------------------------------------------<br />
if [ $RSYNC_CODE -eq 0 ] && [ -z "$STOP" ] && [ -z "$ERROR" ]; then<br />
echo "$HR" >> $LOG<br />
echo "RSync-Datensicherung erfolgreich. Sicherungsziel: $DESTINATION" >> $LOG<br />
DSMNOTIFY="RSync-Datensicherung erfolgreich. Sicherungsziel: $DESTINATION"<br />
# Signalausgabe - Datensicherung erfolgreich<br />
if [ $SIGNAL -eq 1 ]; then<br />
echo 3 >/dev/ttyS1; echo 8 >/dev/ttyS1<br />
sleep 2<br />
fi<br />
# RSync Exit-Code = Fehlermeldung<br />
elif [ $RSYNC_CODE -ne 0 ] || [ -n "$STOP" ] || [ -n "$ERROR" ]; then<br />
echo "$HR" >> $LOG<br />
echo "RSync-Datensicherung unvollstaendig oder fehlgeschlagen - Sicherungsziel: $DESTINATION" >> $LOG<br />
DSMNOTIFY="RSync-Datensicherung unvollstaendig oder fehlgeschlagen - Bitte Protokoll prüfen!"<br />
fi<br />
echo "$HR" >> $LOG; echo "" >> $LOG<br />
if [ -n "$STOP" ]; then<br />
echo "$STOP" >> $LOG<br />
fi<br />
<br />
# DSM-Systemkonfiguration exportieren<br />
#-------------------------------------------------------------------------<br />
if [ "$DSM_EXPORT" -eq 1 ] && [ -z "$STOP" ] && [ $RSYNC_CODE -eq 0 ]; then<br />
if [ -n "$SSH_FROM" ] && [ -z "$SSH_TO" ] && [ -n "$SOURCEDS" ]; then<br />
$FROMSSH /usr/syno/bin/synoconfbkp export --filepath DSMConfig_TEMP.dss<br />
mkdir -p $DESTINATION/@DSMConfig<br />
$SCP -r $SSH_USER@$SSH_FROM:DSMConfig_TEMP.dss $DESTINATION/@DSMConfig/DSMConfig_"$DATE"_$REMOTEHOST.dss<br />
$FROMSSH rm -rf DSMConfig_TEMP.dss<br />
echo "Sicherung der DSM-Systemkonfiguration von $REMOTEHOST erfolgreich zu $LOKALHOST kopiert.." >> $LOG<br />
echo "" >> $LOG<br />
elif [ -z "$SSH_FROM" ] && [ -n "$SSH_TO" ]; then<br />
synoconfbkp export --filepath `dirname $0`/@DSMConfig/DSMConfig_"$DATE"_$LOKALHOST.dss<br />
$TOSSH mkdir -p $DESTINATION/@DSMConfig<br />
$SCP -r `dirname $0`/@DSMConfig/*.dss $SSH_USER@$SSH_TO:$DESTINATION/@DSMConfig/<br />
rm -rf `dirname $0`/@DSMConfig<br />
echo "Sicherung der DSM-Systemkonfiguration von $LOKALHOST erfolgreich zu $REMOTEHOST kopiert.." >> $LOG<br />
echo "" >> $LOG<br />
elif [ -z "$SSH_FROM" ] && [ -z "$SSH_TO" ]; then<br />
mkdir -p $DESTINATION/@DSMConfig<br />
synoconfbkp export --filepath $DESTINATION/@DSMConfig/DSMConfig_"$DATE"_$LOKALHOST.dss<br />
echo "Lokale Sicherung der DSM-Systemkonfiguration erfolgreich." >> $LOG<br />
echo "$DESTINATION/@DSMConfig/DSMConfig_"$DATE"_$LOKALHOST.dss" >> $LOG<br />
echo "" >> $LOG<br />
fi<br />
fi<br />
<br />
# Rotationszyklus für das Löschen von @Recycle, @Logfiles und @DSMConfig<br />
#-------------------------------------------------------------------------<br />
# Dateien im Ordner @Recycle die älter als x Tage sind, löschen.<br />
if $TARGET_TEST -d $DESTINATION/$NAME/@Recycle/; then<br />
if [ -n "$RECYCLE_ROTATE" ] && [ -z "$STOP" ] && [ -z "$ERROR" ]; then<br />
$FIND $DESTINATION/@Recycle/* -type d -mtime +$RECYCLE_ROTATE -exec rm -rf {} \;<br />
echo "HINWEIS: Daten aus dem Ordner /@Recycle, die mehr als $RECYCLE_ROTATE Tage alt waren, wurden geloescht." >> $LOG<br />
echo "" >> $LOG<br />
fi<br />
fi<br />
# Dateien im Ordner @Logfiles die älter als x Tage sind, löschen.<br />
if $TARGET_TEST -d `dirname $0`/@Logfiles/; then<br />
if [ -n "$LOGFILES_ROTATE" ] && [ -z "$STOP" ] && [ -z "$ERROR" ]; then<br />
find `dirname $0`/@Logfiles -name "*.log" -type f -mtime +$LOGFILES_ROTATE -exec rm {} \;<br />
echo "HINWEIS: Daten aus dem Ordner /@Logfiles, die mehr als $LOGFILES_ROTATE Tage alt waren, wurden geloescht." >> $LOG<br />
echo "" >> $LOG<br />
fi<br />
fi<br />
# Dateien im Ordner @DSMConfig die älter als x Tage sind, löschen.<br />
if $TARGET_TEST -d $DESTINATION/@DSMConfig/; then<br />
if [ -n "$DSMCONFIG_ROTATE" ] && [ -z "$STOP" ] && [ -z "$ERROR" ]; then<br />
$FIND $DESTINATION/@DSMConfig -name "*.dss" -type f -mtime +$DSMCONFIG_ROTATE -exec rm {} \;<br />
echo "HINWEIS: Daten aus dem Ordner /@DSMConfig, die mehr als $DSMCONFIG_ROTATE Tage alt waren, wurden geloescht." >> $LOG<br />
echo "" >> $LOG<br />
fi<br />
fi<br />
<br />
# Verschlüsselte Shares wieder aushängen..<br />
#-------------------------------------------------------------------------<br />
if [ $UNMOUNT -ne 0 ] && [ -n "$TARGETDS" ]; then<br />
if [ $UNMOUNT -ne 2 ]; then<br />
if $TARGET_TEST -d /volume*/@$TARGET_DECRYPT@ && $TARGET_TEST -d /volume*/$TARGET_DECRYPT; then<br />
echo "Ziel: $TARGET_DECRYPT wurde ausgehangen" >> $LOG<br />
$SYNOSHARE_TARGET /usr/syno/sbin/synoshare --enc_unmount $TARGET_DECRYPT >> $LOG<br />
sleep 10<br />
fi<br />
fi<br />
fi<br />
if [ $UNMOUNT -ne 0 ] && [ -n "$SOURCEDS" ]; then<br />
if [ $UNMOUNT -ne 3 ]; then<br />
for SHARE in $SOURCES; do<br />
SOURCE="${SHARE#*/}"<br />
SHARE_DECRYPT="${SOURCE%%/*}" <br />
if $SOURCE_TEST -d /volume*/@$SHARE_DECRYPT@ && $SOURCE_TEST -d /volume*/$SHARE_DECRYPT; then<br />
echo "Quelle: $SHARE_DECRYPT wurde ausgehangen" >> $LOG<br />
$SYNOSHARE_SOURCE /usr/syno/sbin/synoshare --enc_unmount $SHARE_DECRYPT >> $LOG<br />
sleep 10<br />
fi<br />
done<br />
fi <br />
fi<br />
<br />
unset KEYFILEPW<br />
<br />
# Benachrichtigung an die DSM-Administratorengruppe sowie E-Mail senden<br />
#-------------------------------------------------------------------------<br />
synodsmnotify @administrators "Script: $SCRIPTNAME" "$DSMNOTIFY"<br />
<br />
if [ -n "$EMAIL" ]; then<br />
if [ "$EMAILFAIL" -eq 1 ] && [ $RSYNC_CODE -ne 0 ] || [ -n "$STOP" ] || [ -n "$ERROR" ]; then<br />
ssmtp $EMAIL < $LOG<br />
elif [ "$EMAILFAIL" -eq 0 ]; then<br />
ssmtp $EMAIL < $LOG<br />
fi<br />
fi<br />
<br />
# Script beenden...<br />
#-------------------------------------------------------------------------<br />
if [ $RSYNC_CODE -eq 0 ] && [ -z "$STOP" ] && [ -z "$ERROR" ] && [ "$AUTORUN" -eq 1 ]; then<br />
exit 100<br />
else<br />
exit $?<br />
fi<br />
<br />
</pre><br />
<br />
=Erstellen eines RSA-Keys für den Aufbau einer SSH-Verbindung=<br />
Es soll eine dateibasierte Datensicherung mittels RSync von Diskstation "A" (Produktivsystem) auf Diskstation "B" (Backupsystem) angelegt werden. Dabei übernimmt das Backupsystem die Aufgabe des Servers, worüber der Verbindungsaufbau und der eigentliche Sicherungsvorgang initiiert wird. Das Produktivsystem übernimmt somit die Aufgabe des Client und muß dem ganzen Vorgang nur zustimmen. Um dies zu ermöglichen muß im Vorfeld ein RSA-Schlüssel auf dem Backupsystem erzeugt und dem Produktivsystem der öffentliche Schlüssel mitgeteilt werden, um so den automatischen Verbindungsaufbau per SSH zu ermöglichen. Nachdem die SSH-Verbindung erfolgreich aufgebaut wurde, wird der eigentliche rsync-Befehl abgesetzt und somit die Datensicherung ausgelöst. Um auch in die Gegenrichtung sichern zu können, muss die RSA-Key Einrichtung dementsprechend gedreht werden, so das am Ende sowohl Diskstation "A" als auch Diskstation "B" Quelle als auch Ziel der Datensicherung darstellen können.<br />
<br />
Im folgenden werden alle Einstellungen für den Benutzer '''root''' getroffen, da nur unter diesem Benutzer die Signalausgabe als auch das Sichern der DSM-Konfiguration funktioniert. Wer hier lieber als "admin" oder vielleicht sogar als eingeschränkter Benutzer "rsync" arbeiten möchte, muss nachfolgend an den entsprechenden Stellen den gewünschten Benutzernamen einsetzen. Das hier verwendete Homeverzeichnis des Benutzer "root" wird im folgenden nur in dessen Kurzform mit ~/ angesprochen, wobei hier immer auf /root verwiesen wird. Alle anderen Benutzerkonten befinden sich im Homeverzeichnis /home/[BENUTZERNAME] bzw. richtigerweise unter /var/services/homes/[BENUTZERNAME].<br />
<br />
(Nachfolgend symbolisiert das Zeichen "$" nur den Zeilenanfang und wird nicht mit geschrieben)<br />
<br />
<br />
'''Hinweis zum Loginvorgang bis DSM 5.2 für den Benutzer "root"'''<br />
<pre><br />
Login als Benutzer "root" mit dem Passwort des DSM-Benutzer "admin"<br />
</pre><br />
<br />
'''Hinweis zum Loginvorgang ab DSM 6 für den Benutzer "root"'''<br />
<pre><br />
Login als Benutzer "admin" mit dem Passwort des DSM-Benutzer "admin"<br />
<br />
"root"-Zugriff erhält man dann über die Eingabe von...<br />
<br />
$ sudo -i<br />
<br />
...und gibt abermals das Password des DSM-Benutzer "admin" ein.<br />
</pre> <br />
<br />
<br />
'''Beginnen wir auf dem Server der "Diskstation B" oder besser gesagt, dem Backupsystem'''<br />
<br />
Auf der Konsole der DS als Benutzer "root" einloggen. <br />
Erstellen des RSA-Schlüssels mit...<br />
<br />
<pre>$ ssh-keygen -t rsa</pre><br />
<br />
Bei der Erstellung wird man nach Speicherort und Passphrase gefragt...<br />
<br />
<pre><br />
Enter file in which to save the key (/root/.ssh/id_rsa):<br />
Enter passphrase (empty for no oassphrase):<br />
Enter same passphrase again:<br />
</pre><br />
<br />
... hier bitte nichts eintragen, sondern einfach nur mit der "Return-Taste" bestätigen. Nach der Ausführung werden im Homeverzeichnis des Benutzer "root" folgende Ordner und Dateien erstellt:<br />
<br />
<pre><br />
~/.ssh<br />
~/.ssh/id_rsa<br />
~/.ssh/id_rsa.pub<br />
</pre><br />
<br />
An dieser Stelle sollte man gleich noch die Ordner- und Dateirechte anpassen.<br />
<br />
<pre>$ chmod 0700 ~/.ssh<br />
$ chmod 0600 ~/.ssh/id_rsa*<br />
</pre><br />
<br />
Den Inhalt der Datei ~/.ssh/id_rsa.pub z.B. mit vi, nano oder dem AdminTool editieren und den Inhalt in die Zwischenablage kopieren.<br />
<br />
<pre>$ nano ~/.ssh/id_rsa.pub</pre><br />
<br />
Wichtig, wie hier im Beispiel gezeigt (RSA-Schlüssel wurde hier gekürzt) ist, das alles in einer Zeile steht...<br />
<br />
<pre>ssh-rsa AAAAB3NzaC1yc2..*gekürzt*...EAAAADAQABA3e root@Backupstation</pre><br />
<br />
'''Weiter gehts auf dem Client der "Diskstation A", also dem Produktivsystem.'''<br />
<br />
Auf der Konsole der DS als Benutzer "root" einloggen. Erstellen eines neuen Ornders<br />
<br />
<pre>$ mkdir ~/.ssh</pre><br />
<br />
Daraufhin wird unter ~/.ssh/ eine neue Datei namens "authorized_keys" erstellt...<br />
<br />
<pre>$ nano ~/.ssh/authorized_keys</pre><br />
<br />
...und der Inhalt aus der Zwischenablage, also der Inhalt aus der ~/.ssh/id_rsa.pub, die auf dem Backupsystem erstellt wurde, in die geöffnete Datei eingefügt. Nach dem Speichern und verlassen des Editors müssen auch hier noch die Ordner- und Dateirechte richtig gesetzt werden.<br />
<br />
<pre><br />
$ chmod 0700 ~/.ssh<br />
$ chmod 0600 ~/.ssh/authorized_keys<br />
</pre><br />
<br />
'''Zurück auf der Konsole der Backupstation.'''<br />
<br />
Als Benutzer "root" auf der DS einloggen und als Erstes die SSH-Verbindung prüfen mit...<br />
<br />
<pre>$ ssh root@IP-DER-DISKSTATION_A -p 22</pre><br />
<br />
Der Verbindungsaufbau möchte vom System nochmal mit "yes" bestätigt werden um anschließend auf der Konsole des Produktivsystemes zu landen. Diese Verbindung kann man durch die Eingabe eines...<br />
<br />
<pre>$ exit</pre><br />
<br />
... wieder beenden. Durch den Verbindungsaufbau wurde nun in der Datei ~/.ssh/known_hosts ein neuer Eintrag hinzugefügt, der die Zugangsdaten zur Diskstation beinhaltet. Kontrollieren kann man das mit...<br />
<br />
<pre>$ nano ~/.ssh/known_hosts</pre><br />
<br />
Nachdem alles gut verlaufen ist, wird die Konsole wieder geschlossen mit...<br />
<br />
<pre>$ exit</pre><br />
<br />
=Release Notes=<br />
'''Release Notes vom 01.05.2016'''<br />
* Es wurde eine neue Variable (SSH_PORT) geschaffen um einen abweichenden SSH-Port angeben zu können.<br />
* Es wurde eine neue Variable (RSYNC_PORT) geschaffen um einen abweichenden RSync-Port angeben zu können.<br />
* Es wurde eine neue Variable (EMAILFAIL) geschaffen um nur bei einer Störung per E-Mail benachrichtigt zu werden.<br />
* Alle "schaltbaren" Benutzer-Variablen wurden nach dem Schema "0" = aus / "1" = an umstrukturiert. Ursprünglich wurde der Wert bei Zustand "aus" einfach leer gelassen, also "". <br />
* Kommentare im Benutzer-Eingabebereich des Scripts wurden optimiert.<br />
* Neben der bereits funktionierenden Sicherung von und auf eine weitere Diskstation funktioniert jetzt auch das Sichern von und auf einen RSync-kompatible Server. Das Script erkennt hierbei automatisch ob es sich um eine Diskstation oder einen RSync-kompatiblen Server handelt und passt die Sicherungs-Pfade dementsprechend an. Diskstation arbeiten i.d.R. mit einem /volume[x], RSync-kompatible Server tun das in der Regel nicht.<br />
* Viele weitere Detailverbesserungen, die hier nicht alle aufgeführt werden können. Nur so viel... das Script ist um weitere 100 Zeilen Scipt-Code gewachsen.<br />
<br />
=Externe Links=<br />
*[http://www.synology-forum.de/showthread.html?72786-Projekt-rsync-Alternative-dateibasierte-Datensicherung Forum Post]<br />
*[http://wpkg.org/Rsync_exit_codes rsync Exit Codes]<br />
*[http://www.synology-wiki.de/index.php/LEDs_und_Buttons LEDs und Buttons (zur Signalsteuerung)]</div>Itommes