diff --git a/11.html b/11.html index 21fc22b..37638c3 100644 --- a/11.html +++ b/11.html @@ -42,7 +42,7 @@

LINUX

Das universelle Betriebssystem

-

Eine Einführung - Teil 10 +

Eine Einführung - Teil 11

Deutsche Angestellten Akademie

+

Nutzungsbeispiele

+
~$ ssh root@server 'cd /etc; \ 
+tar czvf - network/' | cat > etc_network_backup.tar.gz 
+
~$ scp -r root@server:/etc/apache2 . 
+
~$ scp omikron-net.conf \ 
+root@server:/etc/apache2/sites-available/ . 
+
~$ rsync -e ssh lk.schubertdaniel.de:/home/dany/backups/* \ 
+/local/backup/dir/ >> backup.log 2>&1
+						
+
+ +
+

rsync vs. scp

+ +
+ +
Aufgabe: +
+ + +

Hinweise: +

+
+
+
+

Lösungs Vorschlag

+

remote backup script +

local rsync script +

+ +
+

Beschränkung von ssh auf best. Komandos

+
# Datei ~/.ssh/authorized_keys
+# führt bei Anmeldung ls aus; lässt keine anderen Kommandos zu
+command="/bin/ls -la ~" ssh-rsa AAAAB3.......
+# oder
+command="/bin/echo You invoked: $SSH_ORIGINAL_COMMAND" ssh-rsa AAAAB..
+
+

Um rsync zu verwenden ist ein wrapper script nötig: + +

# Datei ~/.ssh/authorized_keys
+command="/absoluter/pfad/rsync-check.sh" ssh-rsa AAAAB3.......
+ +
#!/bin/bash 
+#
+# rsync-check.sh
+
+set -- $SSH_ORIGINAL_COMMAND
+cmd="$1"; shift
+case "$cmd" in
+  scp|rsync) exec "$cmd" "$@" ;;
+          *) echo "ERROR: request not permitted" ;;
+esac
+
+
+ +

Windows Programme für ssh

+ +
+ +
+

Linux Helferlein

-

Hinweise: - +

- + +

screen

diff --git a/beispiele/11/file-backup.sh b/beispiele/11/file-backup.sh index e30e873..e51e5fb 100644 --- a/beispiele/11/file-backup.sh +++ b/beispiele/11/file-backup.sh @@ -8,14 +8,15 @@ WEBSITESDIR="." # local backup folder BACKUPDIR="./backups" +# Erstelle backupdir falls nicht vorhanden if [ ! -d $BACKUPDIR ]; then mkdir $BACKUPDIR fi - +# Unterverzeichnisse von html die gebackuppt werden sollen # Array declare -a liste -# Unterverzeichnisse von html die gebackuppt werden sollen + liste=( "omikron" "amazon.de" @@ -25,11 +26,11 @@ liste=( "omikron/swiss" ) - -# websites function create_websites_backup { + cd $WEBSITESDIR + # Unter Verwendung des Array $liste for i in "${liste[@]}"; do if [ -d $i ]; then tag=$(echo $i | sed 's/\//-/') @@ -38,9 +39,15 @@ function create_websites_backup { echo "File or Directory $i not found!\n" fi done + + # oder unter Verwendung einer Datei mit der Verz. Liste + # while read i; do + # tar -zcf $BACKUPDIR/$tag-$NOW.tar.gz $WEBSITESDIR/$i + # done < 'backup-list.txt' + } - +# mysql backup function do_sql_backup { cd $BACKUPDIR tag=db-$4-$NOW diff --git a/beispiele/11/rsync-backup.sh b/beispiele/11/rsync-backup.sh index c3242f6..cd41f81 100644 --- a/beispiele/11/rsync-backup.sh +++ b/beispiele/11/rsync-backup.sh @@ -6,7 +6,7 @@ REMOTE_HOST=XXX # rsync options # -a = Archive Mode -# -v = Verbode - für das log file +# -v = Verbose - für das log file # -z = Compress # -e = specify the remote shell to use /usr/bin/rsync -avze 'ssh -i /home/$USERNAME/.ssh/rsync-key' $REMOTE_HOST:/home/$USERNAME/backups/* /local/backup/dir/ >> backup.log 2>&1 diff --git a/beispiele/11/rsync-check.sh b/beispiele/11/rsync-check.sh new file mode 100644 index 0000000..12de002 --- /dev/null +++ b/beispiele/11/rsync-check.sh @@ -0,0 +1,10 @@ +#!/bin/bash +# +# rsync-check.sh + +set -- $SSH_ORIGINAL_COMMAND +cmd="$1"; shift +case "$cmd" in + scp|rsync) exec "$cmd" "$@" ;; + *) echo "ERROR: request not permitted" ;; +esac \ No newline at end of file