|
|
本館粉絲專頁 |
|
|
使用者:Minwei/資訊筆記/系統自動備份:修訂版本之間的差異
台灣棒球維基館
< 使用者:Minwei | 資訊筆記
(→參考資料) |
(→scp傳輸備份檔) |
||
| (由3名用戶作出的16個中途修訂版本未被顯示) | |||
| 第1行: | 第1行: | ||
= 三支shell = | = 三支shell = | ||
| + | *我放在/root/backup/ | ||
== 匯出mysql資料庫 == | == 匯出mysql資料庫 == | ||
<pre>#!/bin/bash | <pre>#!/bin/bash | ||
| 第9行: | 第10行: | ||
#並且每個備份檔案都有日期標明。 | #並且每個備份檔案都有日期標明。 | ||
# | # | ||
| − | #撰寫完後,再透過/etc/ | + | #撰寫完後,再透過/etc/cron.d/backup來每日執行備份工作。 |
# | # | ||
#=============================================== | #=============================================== | ||
| 第114行: | 第115行: | ||
# 在/var/www/ndapwiki-1.11.1/下,將image打包壓縮備份到之後要放的地方。 | # 在/var/www/ndapwiki-1.11.1/下,將image打包壓縮備份到之後要放的地方。 | ||
tar -zcf "$basedir"/images_"$day".tar.gz images | tar -zcf "$basedir"/images_"$day".tar.gz images | ||
| + | |||
| + | exit 0</pre> | ||
| + | = backup_daily.sh = | ||
| + | 合寫成一支 | ||
| + | <pre>#!/bin/bash | ||
| + | #=============================================== | ||
| + | #程式用途:每日備份mysql、logs、images的檔案。 | ||
| + | #說明: | ||
| + | #MySql的資料是放在/var/mysql/ | ||
| + | #Log的資料是放在/var/www/ | ||
| + | #image的資料是放在/var/www/ndapwiki-1.11.1/images | ||
| + | #此程式目的是每天備份 | ||
| + | #1.mysql資料夾內的ndapwiki1_11_1資料庫 | ||
| + | #2.www資料夾內的logs資料夾,分為actionLogs及searchLogs | ||
| + | #3.ndapwiki-1.11.1資料夾內的images資料夾 | ||
| + | #並且每個備份檔案都有日期標明。 | ||
| + | # | ||
| + | #撰寫完後,再透過/etc/cron.d/backup來每日執行備份工作。 | ||
| + | # | ||
| + | #=============================================== | ||
| + | #歷史紀錄 | ||
| + | #日期 內容 作者 | ||
| + | #2008/4/21 完成第一次的撰寫。每日備份mysql | ||
| + | #2008/5/22 合併成一支程式 Minwei | ||
| + | # | ||
| + | #=============================================== | ||
| + | #設定shell執行路徑,讓此程式在任何地方都可以執行。 | ||
| + | PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin | ||
| + | export PATH | ||
| + | |||
| + | # 1.設定檔名日期,以及備份檔之後要放的地方。 | ||
| + | day=`date +%Y%m%d` | ||
| + | month=`date +%Y%m` | ||
| + | |||
| + | # 將/backup資料夾設定為basedir變數。 | ||
| + | basedir="/root/backup" | ||
| + | |||
| + | # 2.利用mysqldump將MySQL打包備份。 | ||
| + | mysqldump -u ndapwiki -ppsswd ndap_1_11_1 > "$basedir"/ndap_1_11_1_"$day".sql | ||
| + | |||
| + | # 3.利用tar將logs打包備份 | ||
| + | #進入/var/www/logs/actionLogs/ | ||
| + | cd /var/www/logs/actionLogs/ | ||
| + | #將該月份的actionLogs打包備份 | ||
| + | tar -zcf "$basedir"/logs_"$day".tar.gz $month | ||
| + | |||
| + | #直接將searchlog複製到備份資料夾 | ||
| + | cd /var/www/logs/searchLogs | ||
| + | cp searchLog"$month".txt "$basedir"/searchLog"$day".txt | ||
| + | |||
| + | # 4.利用tar將ndap的image資料夾打包備份 | ||
| + | # 進入/var/www/ndapwiki-1.11.1/ | ||
| + | cd /var/www/ndapwiki-1.11.1/ | ||
| + | |||
| + | # 在/var/www/ndapwiki-1.11.1/下,將image打包備份。 | ||
| + | tar -zcf "$basedir"/images_"$day".tar.gz images | ||
| + | |||
| + | exit 0 | ||
| + | </pre> | ||
| + | |||
| + | = transferfile_daily.sh = | ||
| + | scp傳輸備份檔 | ||
| + | <pre>#!/bin/bash | ||
| + | #=============================================== | ||
| + | #程式用途:將每日備份之檔案傳送至備份電腦儲存。 | ||
| + | #說明: | ||
| + | #需備份檔案是放在/root/backup/ | ||
| + | #有三份資料需備份:logs_$day.tar.gz、images__$day.tar.gz、ndap_1_11_1_$day.sql | ||
| + | #此程式目的是每天將在/root/backup/備份資料夾內的檔案傳送到遠端機器 | ||
| + | # | ||
| + | #撰寫完後,再透過/etc/cron.d/backup來每日執行傳輸工作。 | ||
| + | # | ||
| + | #=============================================== | ||
| + | #歷史紀錄 | ||
| + | #日期 內容 作者 | ||
| + | #2008/5/19 完成第一次的撰寫。 Minwei | ||
| + | # | ||
| + | # | ||
| + | #=============================================== | ||
| + | # | ||
| + | #設定shell執行路徑,讓此程式在任何地方都可以執行。 | ||
| + | PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin | ||
| + | export PATH | ||
| + | # 1.設定檔名日期,以及備份檔之後要放的地方。 | ||
| + | day=`date +%Y%m%d` | ||
| + | |||
| + | # 將/backup資料夾設定為basedir變數。 | ||
| + | basedir="/root/backup" | ||
| + | |||
| + | # 設定遠端伺器 | ||
| + | server="163.13.175.46" | ||
| + | |||
| + | # 2.傳輸本機的備份檔案到遠端機器 | ||
| + | scp "$basedir"/images_"$day".tar.gz root@"$server":"$basedir" | ||
| + | scp "$basedir"/logs_"$day".tar.gz root@"$server":"$basedir" | ||
| + | scp "$basedir"/ndap_1_11_1_"$day".sql root@"$server":"$basedir" | ||
| + | scp "$basedir"/searchLog_"$day".txt root@"$server":"$basedir" | ||
exit 0</pre> | exit 0</pre> | ||
| 第125行: | 第223行: | ||
= /etc/crontab = | = /etc/crontab = | ||
| − | 寫入/etc/ | + | 寫入<s>/etc/crontab</s>,改放在/etc/cron.d/backup裡,讓備份程式例行運作。 |
<pre>#buckup shell script auto run | <pre>#buckup shell script auto run | ||
| − | + | 59 3 * * * root cp .../LocalSettings_backup.php .../LocalSettings.php | |
| − | + | * 4 * * * root /root/backup/backup_daily.sh | |
| − | + | 6 4 * * * root cp .../LocalSettings_2.php .../LocalSettings.php | |
| − | + | 7 4 * * * root /root/backup/transferfile_daily.sh</pre> | |
| − | + | ||
| − | + | ||
=參考資料= | =參考資料= | ||
| − | [http://mkbfb.blogspot.com/2008/02/linux-centosfedoraubuntu-xampp.html Linux自動備份並刪除舊的備份檔教學] | + | #[http://mkbfb.blogspot.com/2008/02/linux-centosfedoraubuntu-xampp.html Linux自動備份並刪除舊的備份檔教學] |
| − | [http://linux.vbird.org/linux_basic/0340bashshell-scripts.php 學習Shell Scripts] | + | #[http://linux.vbird.org/linux_basic/0340bashshell-scripts.php 學習Shell Scripts] |
| − | [http://www.suse.url.tw/lesson8.htm 排程工作與系統紀錄檔] | + | #[http://www.suse.url.tw/lesson8.htm 排程工作與系統紀錄檔/作者:陳柏菁] |
| − | [http://linux.vbird.org/linux_basic/0430cron.php 例行性命令的建立] | + | #[http://linux.vbird.org/linux_basic/0430cron.php 例行性命令的建立] |
| + | #[http://freesf.tnc.edu.tw/docs/rh/rhl-cg-zh_TW-9/s1-openssh-client-config.html Red Hat Linux 用戶自訂手冊-產生金鑰對] | ||
| + | #[http://blog.zhangjianfeng.com/article/348 使ssh/scp不用输入密码] | ||
2008年5月22日 (四) 21:56的最新修訂版本
目次 |
[編輯] 三支shell
- 我放在/root/backup/
[編輯] 匯出mysql資料庫
#!/bin/bash #=============================================== #程式用途:每日備份mysql的資料庫檔案。 #說明: #MySql的資料是放在/var/mysql/ #此程式目的是備份每天mysql資料夾內的ndapwiki1_11_1資料庫 #並且每個備份檔案都有日期標明。 # #撰寫完後,再透過/etc/cron.d/backup來每日執行備份工作。 # #=============================================== #歷史紀錄 #日期 內容 作者 #2008/4/21 完成第一次的撰寫。每日備份mysql # # #=============================================== # #設定shell執行路徑,讓此程式在任何地方都可以執行。 PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH # 1.設定檔名日期,以及備份檔之後要放的地方。 day=`date +%Y%m%d` # 將/backup資料夾設定為basedir變數。 basedir="/root/backup" # 2.ndapwiki的MySQL資料夾位置 ( PATH =/var/mysql/ ) # 備份前,我們先停止MySQL的運作 #/var/mysql/ stopmysql # 3.利用mysqldump將MySQL打包備份。 mysqldump -u ndapwiki -ppsswd ndap_1_11_1 > "$basedir"/ndap_1_11_1_"$day".sql # 再將MySQL啟動 #/var/mysql/ startmysql exit 0
[編輯] 打包logs
#!/bin/bash #=============================================== #程式用途:每日備份ndap logs的檔案。 #說明: #log的資料是放在/var/www/ #此程式目的是備份每天/var/www/資料夾內的logs資料夾 #並且每個備份檔案都有日期標明。 # #撰寫完後,再透過/etc/crontab來每日執行備份工作。 # #=============================================== #歷史紀錄 #日期 內容 作者 #2008/4/21 完成第一次的撰寫。每日備份logs # #=============================================== # #設定shell執行路徑,讓此程式在任何地方都可以執行。 PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH # 1.設定檔名日期,以及備份檔之後要放的地方。 day=`date +%Y%m%d` # 將/backup資料夾設定為basedir變數。 basedir="/root/backup" # 2.log資料夾位置 ( PATH =/var/www/) # 進入/var/www/ cd /var/www/ # 在/var/www/下,將logs打包壓縮備份到之後要放的地方。 tar -zcf "$basedir"/logs_"$day".tar.gz logs exit 0
[編輯] 打包images
#!/bin/bash #=============================================== #程式用途:每日備份ndap images的檔案。 #說明: #image的資料是放在/var/www/ndapwiki-1.11.1/images #此程式目的是備份每天ndapwiki-1.11.1資料夾內的images資料夾 #並且每個備份檔案都有日期標明。 # #撰寫完後,再透過/etc/crontab來每日執行備份工作。 # #=============================================== #歷史紀錄 #日期 內容 作者 #2008/4/21 完成第一次的撰寫。每日備份images # #=============================================== # #設定shell執行路徑,讓此程式在任何地方都可以執行。 PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH # 1.設定檔名日期,以及備份檔之後要放的地方。 day=`date +%Y%m%d` # 將/backup資料夾設定為basedir變數。 basedir="/root/backup" # 2.ndap的image資料夾位置 ( PATH =/var/www/ndapwiki-1.11.1/ ) # 進入/var/www/ndapwiki-1.11.1/ cd /var/www/ndapwiki-1.11.1/ # 在/var/www/ndapwiki-1.11.1/下,將image打包壓縮備份到之後要放的地方。 tar -zcf "$basedir"/images_"$day".tar.gz images exit 0
[編輯] backup_daily.sh
合寫成一支
#!/bin/bash #=============================================== #程式用途:每日備份mysql、logs、images的檔案。 #說明: #MySql的資料是放在/var/mysql/ #Log的資料是放在/var/www/ #image的資料是放在/var/www/ndapwiki-1.11.1/images #此程式目的是每天備份 #1.mysql資料夾內的ndapwiki1_11_1資料庫 #2.www資料夾內的logs資料夾,分為actionLogs及searchLogs #3.ndapwiki-1.11.1資料夾內的images資料夾 #並且每個備份檔案都有日期標明。 # #撰寫完後,再透過/etc/cron.d/backup來每日執行備份工作。 # #=============================================== #歷史紀錄 #日期 內容 作者 #2008/4/21 完成第一次的撰寫。每日備份mysql #2008/5/22 合併成一支程式 Minwei # #=============================================== #設定shell執行路徑,讓此程式在任何地方都可以執行。 PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH # 1.設定檔名日期,以及備份檔之後要放的地方。 day=`date +%Y%m%d` month=`date +%Y%m` # 將/backup資料夾設定為basedir變數。 basedir="/root/backup" # 2.利用mysqldump將MySQL打包備份。 mysqldump -u ndapwiki -ppsswd ndap_1_11_1 > "$basedir"/ndap_1_11_1_"$day".sql # 3.利用tar將logs打包備份 #進入/var/www/logs/actionLogs/ cd /var/www/logs/actionLogs/ #將該月份的actionLogs打包備份 tar -zcf "$basedir"/logs_"$day".tar.gz $month #直接將searchlog複製到備份資料夾 cd /var/www/logs/searchLogs cp searchLog"$month".txt "$basedir"/searchLog"$day".txt # 4.利用tar將ndap的image資料夾打包備份 # 進入/var/www/ndapwiki-1.11.1/ cd /var/www/ndapwiki-1.11.1/ # 在/var/www/ndapwiki-1.11.1/下,將image打包備份。 tar -zcf "$basedir"/images_"$day".tar.gz images exit 0
[編輯] transferfile_daily.sh
scp傳輸備份檔
#!/bin/bash #=============================================== #程式用途:將每日備份之檔案傳送至備份電腦儲存。 #說明: #需備份檔案是放在/root/backup/ #有三份資料需備份:logs_$day.tar.gz、images__$day.tar.gz、ndap_1_11_1_$day.sql #此程式目的是每天將在/root/backup/備份資料夾內的檔案傳送到遠端機器 # #撰寫完後,再透過/etc/cron.d/backup來每日執行傳輸工作。 # #=============================================== #歷史紀錄 #日期 內容 作者 #2008/5/19 完成第一次的撰寫。 Minwei # # #=============================================== # #設定shell執行路徑,讓此程式在任何地方都可以執行。 PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH # 1.設定檔名日期,以及備份檔之後要放的地方。 day=`date +%Y%m%d` # 將/backup資料夾設定為basedir變數。 basedir="/root/backup" # 設定遠端伺器 server="163.13.175.46" # 2.傳輸本機的備份檔案到遠端機器 scp "$basedir"/images_"$day".tar.gz root@"$server":"$basedir" scp "$basedir"/logs_"$day".tar.gz root@"$server":"$basedir" scp "$basedir"/ndap_1_11_1_"$day".sql root@"$server":"$basedir" scp "$basedir"/searchLog_"$day".txt root@"$server":"$basedir" exit 0
[編輯] 測試shell&Debug
sh [-nvx] scripts.sh 參數: -n :不要執行 script,僅查詢語法的問題; -v :再執行 sccript 前,先將 scripts 的內容輸出到螢幕上; -x :將使用到的 script 內容顯示到螢幕上
[編輯] /etc/crontab
寫入/etc/crontab,改放在/etc/cron.d/backup裡,讓備份程式例行運作。
#buckup shell script auto run 59 3 * * * root cp .../LocalSettings_backup.php .../LocalSettings.php * 4 * * * root /root/backup/backup_daily.sh 6 4 * * * root cp .../LocalSettings_2.php .../LocalSettings.php 7 4 * * * root /root/backup/transferfile_daily.sh