Wie komprimiere ich ein Verzeichnis auf einem Unix-Webserver und verschicke es per E-Mail nach Zeitplan?

1417
Ian

Nachdem ich gehört habe, dass verschiedene hochkarätige Website-Ersteller kürzlich nach Hardwarefehlern auf ihren Servern steif geworden sind, möchte ich eine Sicherungsstrategie auf meinen Websites implementieren.

CPanel steht mir zur Verfügung, aber ich habe keine Möglichkeit, Backups zu planen und per E-Mail an mich zu schicken. Es gibt die Möglichkeit, "crontab" zu machen, aber ich bin kein erfahrener Unix-Benutzer, daher weiß ich nicht, wie er damit umgehen soll.

Ich möchte in der Lage sein, ein Backup meines gesamten Home-Verzeichnisses zu erstellen, es gleichzeitig zu komprimieren und dann eine E-Mail zu senden, die mich darüber informiert, dass ein solches Backup erstellt wurde, und ich kann herunterladen und archivieren.

Kann mir jemand bitte Hinweise geben, wie ich so etwas tun würde?

Prost, Ian.

2
Die beste Lösung kann die Verwendung der Crontab-Funktion sein. Es lohnt sich zu lernen. pavium vor 14 Jahren 0

1 Antwort auf die Frage

2
Chealion

Starten Sie die Befehle, die Sie lernen möchten. tar, mailUnd grundlegende Shell - Skripten.

Das Shell-Skript

Ein wirklich schnelles und schmutziges Beispiel, wie das geht, wäre folgendes:

#! /bin/sh  # The following command creates a GZIP'd version of your folder. -c = create # -z = use gzip, -f = file name of backup file # You can use j instead of z to use bzip2. It's slightly slower but compresses # more. Beware that images, videos and such do not compress well. cd /PATH/NOT/IN/HOME/FOLDER; tar czf backup.tgz /PATH/TO/HOME/FOLDER  # If you only have access to your home folder you can modify the command to # look like so, regular expressions are your friend here. tar czf backup.tgz FOLDER1 FOLDER2 FILE3  # The mail program may be disabled and uses the local SMTP server so depending # on your mail setup it may never even get to your inbox because it is flagged # as unverified mail (Spam). For example, Gmail or a domain not hosted on that # same server will almost most certainly not work. If this fails to work you # can create a PHP or Python script that actually allows you to set the SMTP # server. An alternative is to have this script echo some output and have cron # send the output to you instead. It's dependent on your setup. # -s Subject #  mail -s "Backup Done!" "youremailaddress@wherever.com" 

Stellen Sie das Skript auf executable ( chmod 755 nameOfScript.sh) und notieren Sie sich, wo Sie es gespeichert haben

Crontab dazu bringen, das Shell-Skript auszuführen

Um Ihre Crontab über die Befehlszeile einzurichten, geben Sie ein crontab -e, um Ihre Crontab-Datei zu bearbeiten. Das Layout der Datei ist wie folgt:

* * * * * command to be executed - - - - - | | | | | | | | | +----- day of week (0 - 6) (Sunday=0) | | | +------- month (1 - 12) | | +--------- day of month (1 - 31) | +----------- hour (0 - 23) +------------- min (0 - 59) 

Quelle des Diagramms: Wahl des Administrators

In diesem Fall fügen Sie eine Zeile hinzu, beispielsweise:

33 0 * * * /PATH/TO/HOME/FOLDER/nameOfScript.sh 

führt das Skript jeden Tag um 0:33 / 12:33 Uhr aus.

Wenn Sie mehr darüber erfahren möchten, lesen Sie die Man-Seiten für tar, mailund crontab. Sie sind unabdingbar, wenn Sie mit der UNIX-Administration in jeglicher Form umgehen. Mit uuencodekonnten Sie sogar die gesamte Site per E-Mail verschicken, wenn sie klein genug war.

Ausgezeichnete Antwort, vielen Dank. Ian vor 14 Jahren 0