---
# System prepended metadata

title: 架設伺服器SOP
tags: [server, linux]

---

---
tags: linux,server
---
# 架設伺服器SOP
>[name=佳佑]
___
以下是使用ubuntu16.04 LTS建置
## iptable
  清除本機防火牆設定
```shell=
$ iptables -F
#清除所有已訂規則

$ iptables -X
#殺掉所有使用者自訂chain(鏈)、table

$ iptables -Z
#將chain(鏈)的計數與流量歸零

#鏈:有INPUT、OUTPUT、FORWARD
```
iptables有順序性，要先設定chain再設定下面資訊
:::info
不建議以遠端方式去設定iptable，有可能在設定時就被擋住
:::
```shell=
$ iptables -P INPUT   DROP
$ iptables -P OUTPUT  ACCEPT
$ iptables -P FORWARD ACCEPT
```
設定iptable網卡通路
```shell=
$ iptables -A INPUT -i lo -j ACCEPT 
#lo這張網卡對本機是相當重要的，因此lo設定為信任裝置
        
$ iptables -A INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
#讓有關於eth0的封包可以進入本機 (ESTABLISHED,RELATED)
```
關閉所有端口，只允許port22和80通過防火牆
```shell=
$ iptables -A INPUT -p tcp --dport 22 -j ACCEPT

$ iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT

$ iptables -A INPUT -p tcp --dport 80 -j ACCEPT

$ iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

$ iptables -A INPUT -s IP_ADDRESS -j DROP
#dport：目的端口，一般來說只會設定目的端口，因為來源端口可能會變動
#sport：來源端口 
#INPUT時： dport指本地，sport指外部。
#OUTPUT時：dport指外部，sport指本地
```

查看iptable
```shell=
$ iptables -L -n
```
如果成功，會出現以下訊息

![](https://i.imgur.com/q5y7QiL.png)

查看儲存的有順序iptables
```shell=
$ sudo iptables-save
```

儲存iptables到下次重開機還能使用
```shell=
/etc/init.d/iptables save
```
___
## 修改主機名稱
#### ==如果你使用的是ubuntu18.04必須先更改/etc/cloud/cloud.cfg==
```
sudo vi /etc/cloud/cloud.cfg
#找到preserve_hostname: false修改为preserve_hostname: true
```
#### ==ubuntu16.04只需做以下兩點==
到下面兩個位置把==example==改成想要的名稱
```shell=
sudo vi /etc/hostname
```
![](https://i.imgur.com/cmIQjza.png)

```shell=
sudo vi /etc/hosts
```
![](https://i.imgur.com/7cOKm0W.png)

最後重新啟動
```shell=
sudo reboot
```
## ntp系統校時
下載ntp
```shell=
$ sudo apt-get install ntp ntpdate
```
更改/etc/ntp.conf設定，將以下全部註解，將預設註解
```bash=
# Use servers from the NTP Pool Project. Approved by Ubuntu Technical Board
# on 2011-02-08 (LP: #104525). See http://www.pool.ntp.org/join.html for
# more information.
pool 0.ubuntu.pool.ntp.org iburst
pool 1.ubuntu.pool.ntp.org iburst
pool 2.ubuntu.pool.ntp.org iburst
pool 3.ubuntu.pool.ntp.org iburst

# Use Ubuntu's ntp server as a fallback.
pool ntp.ubuntu.com
```
取消下列註解
```bash=
statsdir /var/log/ntpstats/
```
然後新增~~下列幾行~~(擇一)，下面是新增台灣區ntp伺服器
```bash=
server time.stdtime.gov.tw
pool time.stdtime.gov.tw iburst
```
重啟ntp
```shell=
sudo service ntp restart
```
查看監控狀態
```shell=
sudo service ntp status
```
新增/etc/crontab內容
```bash=
0  1  * * * root /usr/sbin/ntpdate time.stdtime.gov.tw && /sbin/hwclock -w
#每天凌晨1點自動校時
```
___
### 將系統更新到最新狀態
```shell=
$ sudo apt-get update

$ sudo apt-get upgrade
```


___
## 新增硬碟掛載
### 分割新硬碟
由於我是使用virtualbox虛擬機，所以他都先幫我切好硬碟了，所以要先新增一個新硬碟才有辦法往下做

查看系統硬碟使用情況
```shell=
df -h
```
查看硬碟狀況
```shell=
$ lsblk
````
![](https://i.imgur.com/dJphr3T.png)

也可以用ls查看/dev下有哪些硬碟
```shell=
ls /dev/[sh]d*
```
輸出
/dev/sda  
/dev/sda1  
/dev/sda2  
/dev/sda5  
/dev/sdb 
這樣一比較就知道新的硬碟是 /dev/sdb 這顆
如果再不確定，可使用fidisk -l查看
```shell=
$ fdisk -l /dev/sdb
```
確定之後，開始切割硬碟
```shell=
$ fdisk /dev/sdb
```
會出現
![](https://i.imgur.com/u5CKmsb.png)

之後按下m會跳出有哪些參數可以使用
```
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition                        #刪除分割區
   l   list known partition types
   m   print this menu                           #字母說明列表
   n   add a new partition                       #新增分割區
   o   create a new empty DOS partition table
   p   print the partition table                 #列出面前分割狀態
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition’s system id            #變更分割區類別
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit              #寫入並儲存分割
   x   extra functionality (experts only)
```
然後按下n，選擇分割新磁區
![](https://i.imgur.com/KUfrpZT.png)
p 預設為主要分割區，e 則是延伸分割區
一個硬碟可以切四個分割區，一般而言都是切三個主要、一個延伸，我們新硬碟還沒切過，所以可以選擇主要，按下p

再來會出現下面選擇
```
Partition number (1-4):1 為第一磁區

First sector：分割磁區開始位置
#建議使用預設，避免造成磁碟空間重疊或浪費

Last sector：分割區結束位置
#+size{K,M,G}，注意單位必須為大寫
```
分割結束後按下w，儲存並離開，這樣就確實把/dev/sdb切區/dev/sdb1
可以確認一下是否有成功
```shell=
$ lsblk
````
![](https://i.imgur.com/MfHMEqt.png)

然後確認硬碟分割狀態
```shell=
partprobe
```
然後格式化剛切出來的新磁區
```shell=
sudo mkfs -t ext4 /dev/sdb1
```
### 掛載
創建一個資料夾作為掛載磁區的空間，一般來說掛載的硬碟統一在/mnt下會比較方便管理，所以在mnt底下新建httpdir資料夾
```shell=
sudo mkdir /mnt/httpdir
```
#### 手動掛載和卸載資料夾(但下次重開時可能會斷開掛載)
```
mount /dev/sdb1 /mnt/httpdir
#mount 硬碟分割區 掛載位置 

umount /dev/sdb1 or /mnt/httpdir
#umount 硬碟分割區 或 掛載位置 可以選擇任意一個切斷他們的掛載
```
### 使用系統自動掛載 (推薦)
#### 查看磁區UUID
```shell=
sudo blkid
```
![](https://i.imgur.com/SsHkyls.png)

把新的硬碟資訊寫進 /etc/fstab 中新增UUID
```shell=
UUID=e13a27f2-d30d-4a91-8c84-e70e871c3fb0 /mnt/httpdir    ext4    defaults    0    0
```
#### 然後讓系統比對/fstab硬碟自動掛載沒有掛載的磁區
```shell=
mount -a
```
___

## Apache2.4.18
### Apache安裝
```
sudo apt-get install apache2
```
在瀏覽器上輸入你的IP位置，如果安裝成功會出現Apache資訊
確認成功後請刪除或更改/var/www/html/index.html

![](https://i.imgur.com/Ngf4CNE.png)


#### 更改Apache設定檔，都在/etc/apache2/apache2.conf
關閉目錄列表瀏覽
```bash=
<Directory /var/www/>
​     Options Indexes FollowSymLinks
​     AllowOverride None
​     Require all granted
​</Directory>
```
刪除Indexes變成
```bash=
<Directory /var/www/>
​     Options FollowSymLinks
​     AllowOverride None
​     Require all granted
​</Directory>
```
如果沒成功關閉，瀏覽器會變成以下模樣

![](https://i.imgur.com/SvqTjMG.png)

#### 關閉Apache版本資訊 ==一定得新增在最後兩行==
```bash=
ServerTokens Prod 
ServerSignature Off
```
如果沒有成功，會出現以下訊息

![](https://i.imgur.com/tV7rDzK.png)

如果成功，下面的版本資訊就會消失

![](https://i.imgur.com/IApOc1K.png)

#### 更改完以上資訊，記得要重新啟動
```shell=
sudo systemctl restart apache2
sudo service apache2 restart
```
#### 改變網站伺服器根目錄位置到/mnt/httpdir資料夾
更改/etc/apache2/sites-available/000-default.conf
```bash=
DocumentRoot /var/www/html
```
更改為
```bash=
DocumentRoot /mnt/httpdir
```
然後更改/etc/apache2/apache2.conf
```bash=
<Directory /var/www/html>
        Options FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>
```
更改為
```bash=
<Directory /mnt/httpdir>
        Options FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>
```
#### 重啟apache
```shell=
sudo service apache2 restart
```
之後網頁目錄將會變成/mnt/httpdir
#### 建立虛擬目錄
在/mnt/httpdir建立我們要的虛擬資料夾
```shell=
sudo mkdir  /mnt/httpdir/example.com
```
#### 修改資料夾權限
```shell=
sudo chown -R $USER:$USER /mnt/httpdir/example.com
sudo chmod -R 775 /mnt/httpdir
```
#### 在虛擬目錄創建測試用index.html
```shell=
sudo vi /mnt/httpdir/example.com/index.html
```
輸入內容
```shell=
<html>
  <head>
    <title>Welcome to Example.com!</title>
  </head>
  <body>
    <h1>Success!  The example.com virtual host is working!</h1>
  </body>
</html>
```
然後複製/etc/apache2/sites-available/000-default.conf
```shell=
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.com.conf
```
然後編輯複製的設定檔
```shell=
sudo vi /etc/apache2/sites-available/example.com.conf
```
編輯成
```shell=
<VirtualHost *:80>
    ServerAdmin admin@example.com                    #網站管理員的mail
    ServerName example.com                           #網站的名稱
    ServerAlias www.example.com                      #網域名字
    DocumentRoot /mnt/httpdir/example.com/           #虛擬目錄位置
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
```
#### 使用a2ensite啟用虛擬目錄網站
```shell=
sudo a2ensite example.com.conf
```
#### 禁用默認設定檔
```shell=
sudo a2dissite 000-default.conf
```
#### 重啟apache
```shell=
sudo systemctl restart apache2
sudo service apache2 restart
```
#### VPS臨時修改hosts本地計算機上的文件來測試此過程
```
sudo vi /etc/hosts
```
因為虛擬機IP為10.0.2.15新增內容為
```bash=
127.0.0.1   localhost
127.0.1.1   guest-desktop
10.0.2.15 example.com
```
因為這些域名不是我們自己的，我們只是臨時將example.com和test.com臨時導向我們自己主機的位置
使用瀏覽器查看
```
http://example.com
```
### 設定 HttpOnly
到 /etc/apache2/sites-available/example.com.conf 新增
```bash=
LoadModule headers_module /usr/lib/apache2/modules/mod_headers.so
Header edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure
```
==禁止在瀏覽器直接存取.git、.hg、bzr、cvs、.svn
資料夾，導引到 404 錯誤頁面==

修改/etc/apache2/sites-enabled/example.com.conf，新增
```bash=
RedirectMatch 404 /\\.(svn|git|hg|bzr|cvs)(/|$)
```
### 在/etc/apache2/conf-availabe/localized-error-pages.conf新增網頁錯誤訊息
```
ErrorDocument 400 "400"
ErrorDocument 401 "401"
ErrorDocument 403 "403"
ErrorDocument 404 "404"
ErrorDocument 500 "500"
ErrorDocument 503 "503"
ErrorDocument 501 "501"
ErrorDocument 502 "502"
ErrorDocument 504 "504"
```
#### 重啟apache2
```shell=
$ sudo service apache2 restart
```
### Apache連線人數上限調整
#### 1.修改/etc/apache2/apache2.conf
```bash=
#人數調成1000
MaxKeepAliveRequests 1000
```
#### 2.修改/etc/apache2/mods-enabled/mpm_prefork.conf

![](https://i.imgur.com/UwoSHy6.png)
#### 如果「mods-enabled」這個資料夾中沒有「mpm_prefork.conf」這個檔案，用以下方法解決
```shell=
$ sudo ln -s /etc/apache2/mods-available/mpm_prefork.conf /etc/apache2/mods-enabled/mpm_prefork.conf
```
#### 重啟apache2
```shell=
$ sudo service apache2 restart
```
## 配置SSL

### 啟動SSL模塊
```shell=
$ sudo a2enmod ssl
```
### 安裝openssl
```shell=
$ sudo apt-get install openssl
```
### 創建CA簽名
```shell=
$ sudo openssl genrsa -out server.key 1024
```
### 創建CSR
```shell=
$ sudo openssl req -new -key server.key -out server.csr
```
### 自簽發證書
```shell=
$ sudo openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
```
### 複製到相對應的地方
```shell=
$ sudo cp server.crt /etc/ssl/certs
$ sudo cp server.key /etc/ssl/private
```
### 複製並修改相對應的文件
```shell=
$ sudo cp /etc/apache2/sites-enabled/000-default.conf /etc/apache2/sites-enabled/001-ssl.conf
$ sudo vi /etc/apache2/sites-enabled/001-ssl.conf
```
新增以下內容
```bash=
SSLEngine On
SSLOptions +StrictRequire
SSLCertificateFile /etc/ssl/certs/server.crt
SSLCertificateKeyFile /etc/ssl/private/server.key

#VirtualHost 80改成443(SSL端口)
```
#### 重啟apache
```shell=
$ sudo service apache2 restart
```
使http跳轉https
在/etc/apache2/sites-enabled/000-default.conf新增
IP使用10.10.10.10當範例
```bash=
Redirect "/" "https://10.10.10.10"
```

## PHP 5.6.40
因為ubuntu 16.04 LTS repo已經更新到php7，所以要更改repo
增加 PPA repo
```shell=
$ sudo add-apt-repository ppa:ondrej/php
```
==若是出現此錯誤訊息: add-apt-repository: command not found，可執行下列指令解決==
```shell=
$ sudo apt-get install software-properties-common
```
### 安裝 PHP 5.6.40
```shell=
#更新 repo
sudo apt-get update

#安裝 PHP 5.6
sudo apt-get install php5.6

#若有需要 PHP-FPM 5.6 ，可執行下列指令安裝
sudo apt-get install php5.6-fpm

#安裝extension
sudo apt-get install php5.6-mbstring php5.6-mcrypt php5.6-mysql php5.6-sqlite 
```
```shell=
php-cli
php-gmp 
php-pear 
php-gd 
libapache2-mod-php
php-curl 
php-xmlrpc 
php-intl
php-xml
```
檢查php版本
```shell=
php -v
```
如果建置成功，會出現以下訊息

![](https://i.imgur.com/VewXlhA.png)

更改PHP設定檔，都在/etc/php/5.6/apache2/php.ini
更改上傳、POST大小為20MB
```bash=
upload_max_filesize = 20M
post_max_size = 20M
```
### 關閉error顯示
```bash=
display_errors=Off
```
如果沒有關閉，當php出錯時會噴出錯誤碼，如下

![](https://i.imgur.com/A3YO33S.png)
設定PHP時區
因為預設時區會是GMT+0，我們是GMT+8，所以要修改
```bash=
;date.timezone =
```
變成Asia/Taipei
```bash=
date.timezone = "Asia/Taipei"
```
### 關閉PHP版本資訊
```bash=
expose_php = off
```
### 設定HttpOnly
```bash=
session.cookie_httponly = true
```
### 重新啟動 
```shell=
$ sudo /etc/init.d/apache2 restart
```
在/mnt/httpdir新建index.php的檔案
創建以下內容
```bash=
<?php
    phpinfo();
?>
```
打開網頁確認以下資訊是否設置成功:
- [ ]date.timezone
- [ ]display_errors
- [ ]upload_max_filesize
- [ ]post_max_size

### php版本切換
由於前面下載過php5.6，所以現在只下載7.3
```shell=
$ sudo apt-get install php7.3
$ sudo apt-get install libapache2-mod-php7.3
$ sudo apt-get install php7.3-fpm
$ sudo apt-get install php7.3-mbstring php7.3-mysql php7.3-sqlite
```
現在是php5.6為主，先把php5.6關閉，再開啟php7.3，然後重啟apache
```shell=
$ sudo a2dismod php5.6
$ sudo a2enmod php7.3
$ sudo service apache2 restart
```
## 安裝 Mariadb
```shell=
sudo apt-get install mariadb-server
sudo apt-get install mariadb-client
sudo apt-get install libmariadbclient-dev
```
可使用netstat檢查是否安裝成功
```shell=
sudo netstat -tap | grep mysql
```
安裝完後可用下列方式進入mysql
```
mysql -u root -p
```
創建新數據庫
```
CREATE DATABASE test;
```
刪除數據庫
```
DROP DATABASE test;
```
### Mariadb連線人數上限調整

#### Mysql5.7以上請修改/etc/mysql/mysql.conf.d/mysqld.cnf
```
max_connections = 1000
```
#### 重啟Mariadb
```shell=
$ sudo service Mariadb restart
```
進入mysql查詢連線人數上限
```shell=
$ mysql -u root -p

mysql > show variables like 'max_connections';
```
### 下載phpmyadmin
```shell=
sudo apt-get install phpmyadmin
```

## zabbix 3.4
新增apt儲存庫
```shell=
$ wget http://repo.zabbix.com/zabbix/3.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.4-1+xenial_all.deb

$ dpkg -i zabbix-release_3.4-1 + xenial_all.deb
```
使用apt下載zabbix
```shell=
$ sudo apt-get update

$ sudo apt-get install zabbix-agent
```
若是出現此錯誤訊息：
wget: unable to resolve host address ‘repo.zabbix.com’
則編輯/etc/resolv.conf，添加新dns
```bash=
nameserver 192.168.0.1 路由器网关
nameserver 8.8.8.8   谷歌网关
```
編輯Zabbix代理配置文件/etc/zabbix/zabbix_agentd.conf並更新Zabbix服務器server IP。
```bash=
#Server = [zabbix server ip]
#Hostname = [客戶端系統的主機名]

Server=xx.xx.xx.xx
ListenIP=0.0.0.0
ServerActive=xx.xx.xx.xx 
Hostname=Server2
```
zabbix服務啟動、暫停、查看
```shell=
#啟動zabbix
$ sudo systemctl start zabbix-agent    

#暫停zabbix
$ sudo systemctl stop zabbix-agent     

#查看狀態
$ sudo systemctl status zabbix-agent   
```
## 安裝goaccess，分析log檔案
### 設定 GoAccess 官方的套件庫，從GoAccess 的 Debian/Ubuntu 套件庫來下載安裝
```shell=
$ echo "deb http://deb.goaccess.io/ $(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list.d/goaccess.list
$ wget -O - http://deb.goaccess.io/gnugpg.key | sudo apt-key add -
```
### 更新套件列表，並安裝 GoAccess 0.9.4
```shell=
$ sudo apt-get update
$ sudo apt-get install goaccess
```
### 如果需要訪客來源國家的資訊，安裝 GeoIP 資料庫
```shell=
$ sudo apt-get install geoip-database
```

### 設定 GoAccess 
```shell=
$ sudo vi /etc/goaccess/goaccess.conf
```
### 調整格式
#### 將Goaccess設定檔中下列文字取消註解(移除 #)
##### **time-format %H:%M:%S**
##### **date-format %d/%b/%Y**
##### **log-format ~ 略 ~**
(p.s) 因為我們是用VirtualBox 所以log-format **兩個都要開!!**
![](https://i.imgur.com/bVdqFSW.png)

### 命令從終端分析Apache Web服務器
```bash=
sudo goaccess /var/log/apache2/access.log --log-format=COMBINED
```
### 生成html報告
```shell=
$ sudo goaccess /var/log/apache2/access.log --log-format=COMBINED -a -o /var/www/html/report.html
#如果做過sop-2的虛擬目錄，記得要把/var/www/html更改成/mnt/httpdir
```
### 前往 http://你的服務器IP/report.html
![](https://i.imgur.com/yIEi2ec.png)

參考資料(有詳細補充):
1. https://medium.com/@haboro_admin/%E4%BD%BF%E7%94%A8-goaccess-%E5%8D%B3%E6%99%82%E7%9B%A3%E6%8E%A7%E4%BC%BA%E6%9C%8D%E5%99%A8%E7%8B%80%E6%85%8B-linux-apache-7ad9475605b3
2. https://www.google.com/amp/s/blog.gtwang.org/linux/analysing-nginx-logs-using-goaccess/amp/
## 備份
-  每周定期備份 /etc ==完全備份==到/var/backups

到/var/backups新增cp_etc_ew.sh
```shell=
$ sudo vi cp_etc_ew.sh
```
```bash=
date=$(date +"%Y%m%d")
cp -r /etc /var/backups/
tar -cvpzf /var/backups/$date"_cp_etc.tar.gz" /var/backups/etc
```
到/etc/crontab新增
```bash=
#意義       分鐘    小時    日期    月份    星期    使用者    指令
#數字範圍    0-59   0-23    1-31   1-12    0-7    user
            0      0       *      *       0      root      sh /var/backups/cp_etc_ew.sh
```
- 每周定期備份 /etc ==差異備份到==/var/backups

到/var/backups新增rsync_etc_ew.sh
```shell=
$ sudo vi rsync_etc_ew.sh
```
```bash=
date=$(date +"%Y%m%d")
rsync -avh --delete /etc /var/backups/
tar -cvpzf /var/backups/$date"_rsync_etc.tar.gz" /var/backups/etc
```
到/etc/crontab新增
```bash=
#意義       分鐘    小時    日期    月份    星期    使用者    指令
#數字範圍    0-59   0-23    1-31   1-12    0-7    user
            0      0       *      *       0      root      sh /var/backups/rsync_etc_ew.sh
```
- 每天httpdir 資料夾作==完全備份==到/var/backups

i.(資料只留一年)

到/var/backups新增cp_httpdir_ed.sh
```shell=
$ sudo vi cp_httpdir_ed.sh
```
```bash=
date=$(date +"%Y%m%d")
cp -r /mnt/httpdir /var/backups/
tar -cvpzf /var/backups/$date"_cp_httpdir.tar.gz" /var/backups/httpdir
find /var/backups/ -type f -name "*_cp_httpdir.tar.gz" -mtime +365 -exec rm -f {} \;
```
到/etc/crontab新增
```bash=
#意義       分鐘    小時    日期    月份    星期    使用者    指令
#數字範圍    0-59   0-23    1-31   1-12    0-7    user
            0      0       *      *       *      root      sh /var/backups/cp_httpdir_ed.sh
```
- 每天mysql資料備份 ==完全備份到==/var/backups

i.	(資料留一年)

到/var/backups新增mysqlbk.sh
```shell=
$ sudo vi mysqlbk.sh
```
```bash=
date=$(date +"%Y%m%d")
myUser="root"
myPass="*******"
mysqldump  -u $myUser -p$myPass --all-databases > $date"_mysqlbk.sql"
find /var/backups/ -type f -name "*_mysqlbk.sql" -mtime +365 -exec rm -f {} \;
```
到/etc/crontab新增 
```bash=
#意義       分鐘    小時    日期    月份    星期    使用者    指令
#數字範圍    0-59   0-23    1-31   1-12    0-7    user
            0      0       *      *       *      root      sh /var/backups/mysqlbk.sh
```
ii.	/var/lib/mysql
到/var/backups新增cp_mysql_ed.sh
```shell=
$ sudo vi cp_mysql_ed.sh
```
```bash=
date=$(date +"%Y%m%d")
rsync /var/lib/mysql /var/backups/
tar -cvpzf $date"_cp_mysql.tar.gz" /var/backups/mysql
find /var/backups/ -type f -name "*_cp_mysql.tar.gz" -mtime +365 -exec rm -f {} \;
```
到/etc/crontab新增 
```bash=
#意義       分鐘    小時    日期    月份    星期    使用者    指令
#數字範圍    0-59   0-23    1-31   1-12    0-7    user
            0      0       *      *       *      root      sh /var/backups/cp_mysql_ed.sh
```
