[工具] Shell 将本地 LNMP 的网站文件和网站数据备份并传送到远程服务器

介绍

基本信息

作者:朱明宇
名称:将本地 LNMP 的网站文件和网站数据备份并传送到远程服务器
作用:将本地 LNMP 的网站文件和网站数据备份并传送到远程服务器
使用方法

使用方法

1. 在此脚本的分割线内写入相应的内容
2. 给此脚本添加执行权限
3. 执行此脚本

脚本分割线里的变量

1. filename=eternalcenter-backup #备份文件的中间名
2. lpath=”/usr/share/nginx/html” #本地存放网站文件的目录
3. tcache=”/tcache” #本地临时存放网站文件备份和网站数据备份的目录
4. bip=”192.168.0.1 192.168.0.2″ #远程服务器的 IP 地址,多个 IP 地址可以用空格分开
5. buser=”mingyuzhu” #登录远程服务器的用户
6. bcache=”/bcache” #远程服务器用于存放备份的目录

注意

1. 本地需要已经搭建好 LNMP 平台
2. 用于远程服务器的用户,需要能免密钥 ssh 远程服务器,且对于本地用于备份数据的目录和远程服务器用于备份数据的目录拥有读和执行的权限
3. 脚本里的 ”mysqldump -uroot -p’eternalcenter’ lnmp > $tcache/$filename-$date.sql“ 是指本地 MariaDB 数据库用户是 root、密码是 eternalcenter、要备份的库名是 lnmp,这些都需要修改成真实环境中对应的值
4. tcache=”/tcache” 本地临时存放网站文件备份和网站数据备份的目录,每次执行此脚本时这个目录里面以前的值都会被清空

脚本

#!/bin/bash


filename=eternalcenter-backup #middle name
lpath="/usr/share/nginx/html" #website server directory

tcache="/tcache" #website cache

bip="147.182.245.159"
buser="mingyuzhu"
bcache="/bcache"


date=$(date +%Y-%m-%d-%H)

######################## backup webiste date #########################
mkdir $tcache &> /dev/null
rm -rf $tcache/* &> /dev/null
mysqldump -uroot -p'ec@zhu mingyu#123abc!@#' ec > $tcache/$filename-$date.sql
cd $lpath
sudo tar -zcvf $tcache/$filename-$date.tar.gz .[!.]* * &> /dev/null
cd
######################## backup webiste date #########################


######################## copy webiste date to remote server #########################

for i in `echo $bip`

do
ping -c4 -i0.8 -w4 $i &> /dev/null

if [ $? -eq 0 ];then
    ssh $buser@$i "who -b"
        if [ $? -eq 0 ];then
#            ssh $buser@$i "sudo mkdir $bcache ; sudo chown $buser:$buser $bcache"
            scp $tcache/* $buser@$i:$bcache/ 
        fi
fi
done

######################## copy webiste date to remote server #########################

[SQL] MariaDB & MySQL 用户和权限的管理

内容一:Mariadb & MySQL 常用权限

1.1 数据权限

权限名作用
insert在表中插入数据
delete在表中删除数据
update在表中更新数据
select在表中查看数据

1.2 表权限

权限名作用
create在库中创建表
drop在库中删除表
create + alter在库中修改表结构
create + drop + alter在库中重新命名表名

1.3 库权限

权限名作用
create创建库
drop删除库

1.4 功能权限

权限名作用
process允许查看进程信息

1.5 其他权限

权限名作用
all所有权限
all privileges所有权限

内容二:添加权限

> grant process on *.* to 'mingyuzhu'@'10.0.0.%';
> flush privileges;

(补充:这里以给用户 ‘mingyuzhu’@’10.0.0.%’ 添加 process 权限为例)

内容三:取消权限

> revoke ALL PRIVILEGES on *.* from 'mingyuzhu'@'10.0.0.%';
> flush privileges;

(补充:这里以取消用户 ‘mingyuzhu’@’10.0.0.%’ 的所有权限为例)

[SQL] MariaDB & MySQL 用户权限的显示

内容一:显示当前用户的所有权限

> show grants;

或者:

> show grants for current_user();

内容二:显示某个用户的所有权限

> show grants root;

(补充:这里以显示 root 用户的所有权限为例)

内容三:显示所有用户的所有权限

3.1 合成显示所有用户的所有权限的 SQL 语句

> select concat('show grants for ''',user,'''@''',host,''';') as query from mysql.user;
+-------------------------------------+
| query                               |
+-------------------------------------+
| show grants for 'root'@'127.0.0.1'; |
| show grants for 'root'@'::1';       |
| show grants for 'root'@'localhost'; |
| show grants for 'root'@'mysql';     |
+-------------------------------------+
4 rows in set (0.000 sec) 

3.2 显示所有用户的所有权限

> show grants for 'root'@'127.0.0.1';
show grants for 'root'@'::1';
show grants for 'root'@'localhost';
show grants for 'root'@'mysql';

(补充:这里使用的 SQL 语句是上个步骤 3.1 合成的)

[步骤] MariaDB & MySQL 的无密码登录 (使用 –login-path 命令对 MariaDB & MySQL 的密码进行加密保存)

步骤一:创建对 MariaDB & MySQL 的密码进行加密保存的设置

# mysql_config_editor set --login-path=test --user=root --host=127.0.0.1 --port=3306 --password
Endter Password:

(
补充:这里以
1) 创建名为 test 的设置
2) 登录用户是 root
3) 登录服务器是 127.0.0.1
4) 登录端口是 TCP 3306
5) 单独输入密码
为例
)

步骤二:显示所有 MariaDB & MySQL 的密码加密设置

# mysql_config_editor print --all

步骤三:使用 MariaDB & MySQL 的密码加密设置登录数据库

# mysql --login-path=test

(补充:这里以使用 test 的设置登录 MariaDB & MySQL 为例)

步骤三:删除MariaDB & MySQL 的密码加密设置

3.1 显示所有 MariaDB & MySQL 的密码加密设置

# mysql_config_editor print --all

3.2 删除对 MariaDB & MySQL 的密码进行加密保存的设置

# mysql_config_editor remove --login-patch=test

(补充:这里以删除名为 test 的密码加密设置为例)