概要 †
別サーバーからデータを回収するスクリプトです。
予め各サーバーは、最小の権限しか持たないユーザーのホームディレクトリへバックアップ対象を配置しておきます。
また、そのユーザーにパスフレーズなしの秘密鍵でSSH接続可能にしておきます。
SSH/接続を簡単にしたい
コード †
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
| -
!
-
|
|
!
-
!
-
!
-
!
-
!
-
!
-
!
-
!
-
!
-
!
-
!
-
!
-
!
-
!
|
MAIL_ADDRESS="[email protected]"
MAIL_TITLE="[$(hostname)] backup chain"
MAIL=/usr/bin/mail
LINE="--------------------"
DATE_FORMAT="%m/%d-%H:%M:%S"
OUTFILE=`/bin/mktemp` || exit 1
localRootPath="/usb/backup/foo"
/bin/echo -e "\n$LINE " `date +$DATE_FORMAT` " Start foo Claw Back $LINE" >> $OUTFILE
/bin/mkdir -p $localRootPath/mondo 2>> $OUTFILE
/bin/mkdir -p $localRootPath/www 2>> $OUTFILE
/bin/mkdir -p $localRootPath/nginx 2>> $OUTFILE
/bin/rm $localRootPath/mondo/* 2> /dev/null
/bin/rm $localRootPath/www/* 2> /dev/null
/bin/rm $localRootPath/nginx/* 2> /dev/null
/usr/bin/sftp foo <<END
get ./backup/mondo/* $localRootPath/mondo/ 2>> $OUTFILE
get ./backup/www/* $localRootPath/www/ 2>> $OUTFILE
get ./backup/nginx/* $localRootPath/nginx/ 2>> $OUTFILE
quit
END
/bin/echo -e "\n$LINE " `date +$DATE_FORMAT` " End foo Claw Back $LINE" >> $OUTFILE
localRootPath="/usb/backup/bar"
/bin/echo -e "\n$LINE " `date +$DATE_FORMAT` " Start bar Claw Back $LINE" >> $OUTFILE
/bin/mkdir -p $localRootPath/mondo 2>> $OUTFILE
/bin/mkdir -p $localRootPath/db 2>> $OUTFILE
/bin/mkdir -p $localRootPath/www 2>> $OUTFILE
/bin/mkdir -p $localRootPath/nginx 2>> $OUTFILE
/bin/mkdir -p $localRootPath/redmine 2>> $OUTFILE
/bin/mkdir -p $localRootPath/gitlab 2>> $OUTFILE
/bin/mkdir -p $localRootPath/jenkins 2>> $OUTFILE
/bin/rm $localRootPath/mondo/* 2> /dev/null
/bin/rm $localRootPath/db/* 2> /dev/null
/bin/rm $localRootPath/www/* 2> /dev/null
/bin/rm $localRootPath/nginx/* 2> /dev/null
/bin/rm $localRootPath/redmine/* 2> /dev/null
/bin/rm $localRootPath/gitlab/* 2> /dev/null
/bin/rm $localRootPath/jenkins/* 2> /dev/null
/usr/bin/sftp bar <<END
get ./backup/mondo/* $localRootPath/mondo/ 2>> $OUTFILE
get ./backup/db/* $localRootPath/db/ 2>> $OUTFILE
get ./backup/www/* $localRootPath/www/ 2>> $OUTFILE
get ./backup/nginx/* $localRootPath/nginx/ 2>> $OUTFILE
get ./backup/redmine/* $localRootPath/redmine/ 2>> $OUTFILE
get ./backup/gitlab/* $localRootPath/gitlab/ 2>> $OUTFILE
get ./backup/jenkins/* $localRootPath/jenkins/ 2>> $OUTFILE
quit
END
/bin/echo -e "\n$LINE " `date +$DATE_FORMAT` " End bar Claw Back $LINE" >> $OUTFILE
/bin/echo -e "\n$LINE " `date +$DATE_FORMAT` " Start df $LINE" >> $OUTFILE
/bin/df >> $OUTFILE
/bin/echo -e "\n$LINE " `date +$DATE_FORMAT` " End df $LINE" >> $OUTFILE
/bin/echo -e "\n$LINE " `date +$DATE_FORMAT` " Start du $LINE" >> $OUTFILE
/usr/bin/du -h /usb/backup/ >> $OUTFILE
/bin/echo -e "\n$LINE " `date +$DATE_FORMAT` " End du $LINE" >> $OUTFILE
/bin/cat $OUTFILE | tr -d '\r' | $MAIL -s "$MAIL_TITLE" "$MAIL_ADDRESS"
/bin/rm -f $OUTFILE
|
検証時の環境 †