本館粉絲專頁

使用者:Minwei/資訊筆記/系統自動備份:修訂版本之間的差異

分享此網頁到Facebook
分享此網頁到Plurk
分享此網頁到百度搜藏
分享此網頁到Twitter
分享此網頁到Del.icio.us
最近作者:Minwei 2008年5月22日 (星期四)21:56 ;歷來作者:163.13.175.13361.59.239.109
台灣棒球維基館
跳轉到: 導覽搜尋
參考資料
scp傳輸備份檔
 
(由3名用戶作出的16個中途修訂版本未被顯示)
第1行: 第1行:
 
= 三支shell =
 
= 三支shell =
 +
*我放在/root/backup/
 
== 匯出mysql資料庫 ==
 
== 匯出mysql資料庫 ==
 
<pre>#!/bin/bash
 
<pre>#!/bin/bash
第9行: 第10行:
 
#並且每個備份檔案都有日期標明。
 
#並且每個備份檔案都有日期標明。
 
#
 
#
#撰寫完後,再透過/etc/crontab來每日執行備份工作。
+
#撰寫完後,再透過/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/crontab裡,讓備份程式例行運作。
+
寫入<s>/etc/crontab</s>,改放在/etc/cron.d/backup裡,讓備份程式例行運作。
 
<pre>#buckup shell script auto run
 
<pre>#buckup shell script auto run
30 3 * * 0 root /back/system_backup_weekly.sh
+
59 3 * * * root cp .../LocalSettings_backup.php .../LocalSettings.php
30 2 * * * root /back/mysql_backup_daily.sh
+
* 4  * * * root /root/backup/backup_daily.sh
 
+
6 4 * * * root cp .../LocalSettings_2.php .../LocalSettings.php
#delect old backupfiles
+
7 4 * * * root /root/backup/transferfile_daily.sh</pre>
35 3 * * * root /back/del_old_backup_file.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

[編輯] 參考資料

  1. Linux自動備份並刪除舊的備份檔教學
  2. 學習Shell Scripts
  3. 排程工作與系統紀錄檔/作者:陳柏菁
  4. 例行性命令的建立
  5. Red Hat Linux 用戶自訂手冊-產生金鑰對
  6. 使ssh/scp不用输入密码