[工具] Shell 批量将本地的网站公私钥拷贝到远程服务器

介绍

基本信息

作者:朱明宇
名称:批量将本地的网站公私钥拷贝到远程服务器
作用:批量将本地的网站公私钥拷贝到远程服务器

使用方法

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

脚本分割线里的变量

1. sslpath=”/etc/letsencrypt/live/eternalcenter.com” #本地服务器存放网站公私钥的目录
2. sslfile1=”fullchain.pem” #本地服务器上的网站公钥的名称
3. sslfile2=”privkey.pem” #本地服务器上的网站私钥的名称
4. bip=”192.168.0.1″ #存放网站公私钥的远程服务器的 IP 地址,多个 IP 地址可以用空格分隔
5. buser=”mingyuzhu” #用于登录远程服务器的用户名
6. bcache=”/bcache” #远程服务器存放网站公私钥的目录

注意

1. 此脚本执行前必须要先保证执行本脚本的用户能无密码 ssh 远程这些远程服务器
2. 必须以 root 用户执行本脚本

脚本

#!/bin/bash

####################### Separator ########################

sslpath="/etc/letsencrypt/live/eternalcenter.com" #website cache
sslfile1="fullchain.pem"
sslfile2="privkey.pem"

bip="192.168.0.1"
buser="mingyuzhu"
bcache="/bcache"

####################### Separator ########################

######################## 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 $sslpath/$sslfile1 $buser@$i:$bcache/ 
            scp $sslpath/$sslfile2 $buser@$i:$bcache/ 
        fi
fi
done

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

[工具] Shell 还原本地网站文件和网站数据库备份到本地 LNMP

介绍

基本信息

作者:朱明宇
名称:将本地网站文件备份和网站数据库备份还原到本地 LNMP
作用:将本地网站文件备份和网站数据库备份还原到本地 LNMP

使用方法

1. 将网站的文件备份、网站的 SSL 公钥、网站的 SSL 私钥、网站的数据库备份,4 个文件放在此脚本中变量 tmppath 对应的目录里
2. 给此脚本添加执行权限
3. 执行此脚本

脚本分割线里的变量

tmppath=/bcache #本地存放网站的文件备份、网站的 SSL 公钥、网站的 SSL 私钥、网站的数据库备份的地方
midname=eternalcenter #网站的文件备份和网站的数据库备份的中间名
cmidname=fullchain #网站的 SSL 公钥的中间名
kmidname=privkey #网站的 SSL 私钥的中间名
webpath=/usr/share/nginx/html #网站文件在本地的正式存放位置
sslpath=/etc/nginx/ssl #网站网站的 SSL 公钥、网站的 SSL 私钥在本地的正式存放位置dbuser=ec #网站在数据库中的用户名
dbname=ec #网站在数据库中的的库名

注意

1. 本地需要已经搭建好 LNMP 平台
2. 必须以 root 的身份执行此脚本
3. 这里的网站的 SSL 公钥和网站的 SSL 私钥都是以 pem 后缀结尾,可以修改成真实对应的后缀
4. 脚本中类似 ”mysql -uroot -p’eternalcenter’ -e “drop database $dbname;”“ 中的 “eternalcenter“ 是指本地 MariaDB 数据库 root 用户的密码,需要修改成 MariaDB 数据库的 root 用户的真实密码

脚本

#!/bin/bash

####################### Separator ########################


tmppath=/bcache
midname=eternalcenter
cmidname=fullchain
kmidname=privkey

webpath=/usr/share/nginx/html
sslpath=/etc/nginx/ssl

dbuser=ec
dbname=ec


####################### Separator ########################

nowdirectory=`pwd`

#sudo systemctl stop nginx
#sudo systemctl stop php-fpm

cd $tmppath

sqlfile=`ls | grep $midname | grep -E \.sql$ | tail -1`
tarfile=`ls | grep $midname | grep -E \.tar | tail -1`
crtfile=`ls | grep $cmidname | grep -E \.pem$ | tail -1`
keyfile=`ls | grep $kmidname | grep -E \.pem$ | tail -1`


#sleep 300

echo $sqlfile
if [ -n "$sqlfile" ];then
    mysql -uroot -p'eternalcenter' -e "drop database $dbname;"
    mysql -uroot -p'eternalcenter' -e "create database $dbname;"
    mysql -uroot -p'eternalcenter' -e "grant all privileges on $dbuser.* to \"$dbuser\"@\"localhost\";"
    mysql -uroot -p'eternalcenter' $dbname < $sqlfile
    rm -rf $sqlfile
fi

echo $tarfile
if [ -n "$tarfile" ];then
    rm -rf $webpath/*
    tar -zxvf $tarfile -C $webpath/ &> /dev/null
    rm -rf $tarfile
    chcon -t httpd_sys_content_t -R $webpath/*
    chown -R php-fpm:php-fpm $webpath/
fi

echo $crtfile
if [ -n "$crtfile" ];then
    rm -rf $sslpath/$crtfile
    mkdir -p $sslpath &> /dev/null
    mv $crtfile $sslpath/
    chcon -t httpd_config_t $sslpath/*
fi

echo $keyfile
if [ -n "$keyfile" ];then
    rm -rf $sslpath/$keyfile
    mkdir -p $sslpath &> /dev/null
    mv $keyfile $sslpath/
    chcon -t httpd_config_t $sslpath/*
fi

chcon -t httpd_config_t $sslpath

sudo systemctl restart nginx
sudo systemctl restart php-fpm

cd $nowdirectory

[工具] Shell WordPress 网站数据去隐私化

介绍

基本信息

作者:朱明宇
名称:Shell 博客 WordPress 数据去隐私化
作用:修改 WordPress 备份中某个用户的密码并再次进行备份

使用方法

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

脚本分割线里的变量

1. path=/home/zhumingyu/EternalCenter #本地备份目录
2. filename=eternalcenter-backup #本地备份文件
3. cpath=”/srv/www/htdocs” #网站程序目录
4. sqlfile=eternalcenter/eternalcenter.sql #网站数据库数据备份
5. tarfile=eternalcenter/eternalcenter.tar.gz #网站网页数据备份
6. newfilename=clone-eternalcenter-backup #新备份的文件名
7. user=’Mingyu Zhu’ #要修改密码的用户
8. newpw=eternalcenter #新的用户密码
9. dbuser=ec #用于连接数据库的用户
10. dbuserpw=eternalcenter #用于连接数据库的密码
11. db=ec #网站数据库数据在数据库中的库

注意

1. 本地需要已经搭建好 LNMP 平台
2. 执行此脚本的用户需要有远程服务器的 sudo tar 和 sudo rm 权限
3. 脚本 ”mysql -uroot -p’eternalcenter’ -e “drop database $db;”“ 中 “eternalcenter“ 是指远程 MariaDB 数据库 root 用户的密码,需要修改成远程 MariaDB 数据库的 root 用户密码

脚本

#!/bin/bash

####################### Separator ########################

path=/home/zhumingyu/EternalCenter
filename=eternalcenter-backup
cpath="/srv/www/htdocs"
sqlfile=eternalcenter/eternalcenter.sql
tarfile=eternalcenter/eternalcenter.tar.gz
newfilename=clone-eternalcenter-backup
user='Mingyu Zhu'
newpw=eternalcenter
dbuser=ec
dbuserpw=eternalcenter
db=ec
tb=ec_users

####################### Separator ########################

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

sudo systemctl stop nginx
sudo systemctl stop php-fpm

mkdir -p $path/$newfilename-$date &> /dev/null

mysql -uroot -p'eternalcenter' -e "drop database $db;"
mysql -uroot -p'eternalcenter' -e "create database $db;"
mysql -uroot -p'eternalcenter' -e "create user \"$dbuser\"@\"localhost\" identified by \"$dbuserpw\";"
mysql -uroot -p'eternalcenter' -e "grant all privileges on $db.* to \"$dbuser\"@'localhost';"
mysql -uroot -p'eternalcenter' ec < $sqlfile
mysql -uroot -p'eternalcenter' -e "update $db.$tb set user_pass = md5(\'$newpw\') where user_login = \'$user\';"
sudo rm -rf $cpath/*
sudo tar -zxvf $tarfile -C $cpath &> /dev/null
cd $cpath
sudo sed -i "s/define('DB_PASSWORD', .*);/define('DB_PASSWORD', \'$dbuserpw\');/" wp-config.php

mysqldump -uroot -p'eternalcenter' $db > $path/$newfilename-$date/$newfilename-$date.sql
sudo tar -zcvf $path/$newfilename-$date/$newfilename-$date.tar.gz .[!.]* * &> /dev/null
cd $dir

sudo systemctl start nginx
sudo systemctl start php-fpm

cd $dir

[工具] Shell 备份远程 LNMP 的网站文件和网站数据库到本地

介绍

基本信息

作者:朱明宇
名称:备份远程 LNMP 的网站文件和网站数据库到本地
作用:备份远程 LNMP 的网站文件和网站数据库到本地

使用方法

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

脚本分割线里的变量

1. path=/home/zhumingyu/EternalCenter #本地备份目录
2. filename=eternalcenter-backup #本地备份文件
3. key=”~/.ssh/eternalcenter” #本地备份本地私钥
4. whost=”eternalcenter.com” #远程服务器
5. wpath=”/usr/share/nginx/html” #远程服务器网站程序目录
7. wcache=”/cache” #远程服务器临时备份目录

注意

1. 远程需要已经搭建好 LNMP 平台
2. 用于远程服务器的用户,需要能免密钥 ssh 远程服务器,且对于本地用于本地数据的备份目录和远程服务器的目录拥有读和执行的权限
3. 执行此脚本的用户需要有远程服务器的 sudo tar 权限
4. 脚本 ”mysqldump -uroot -p’eternalcenter’ ec > $wcache/$filename-$date.sql“ 中 “eternalcenter“ 是指远程 MariaDB 数据库 root 用户的密码,需要修改成远程 MariaDB 数据库的 root 用户密码

脚本

#!/bin/bash

####################### Separator ########################

path=/home/zhumingyu/EternalCenter
filename=eternalcenter-backup
key="~/.ssh/eternalcenter"

whost="eternalcenter.com"
wpath="/usr/share/nginx/html"
wcache="/cache"

####################### Separator ########################

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

echo "copy eternalcenter data from website to local server"
ping -c3 -i0.4 $whost > /dev/null
if [ $? -eq 0 ];then

        ssh -i $key $whost "
        mkdir $wcache &> /dev/null
        rm -rf $wcache/* &> /dev/null
        mysqldump -uroot -p'eternalcenter' ec > $wcache/$filename-$date.sql
        cd $wpath
        sudo tar -zcvf $wcache/$filename-$date.tar.gz .[!.]* * &> /dev/null
        "

        mkdir -p $path/$date &> /dev/null
        scp -i $key $whost:$wcache/$filename-$date* $path/$date

fi
echo

[工具] Shell 将同目录下最新的某个目录里的所有文件替换到 GitHub 库里 (Git LFS 版)

介绍

基本信息

作者:朱明宇
名称:将同目录下最新的某个目录里的所有文件替换到 GitHub 库里
作用:将同目录下最新的某个目录里的所有文件替换到 GitHub 库里

使用方法

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

脚本分割线里的变量

1. directory=download-eternalcenter #本地的缓冲目录
2. gituser=mingyuzhu #GitHub 用户
3. [email protected] #GitHub 邮箱
4. gitrepository=download-eternalcenter #GitHub 库
5. gitbranch=’master’ #GitHub 库的分支
6. backupfile=all #备份后的文件
7. keyword=clone #同目录下要备份目录名称的关键字

注意

需要提前安装 git 和 git-lfs,注册 GitHub,创建相应的 GitHub 库,并且创建和设置了对应的 ssh 密钥

脚本

#!/bin/bash

####################### Separator ########################

directory=download-eternalcenter
gituser=mingyuzhu
[email protected]
gitrepository=download-eternalcenter
gitbranch='master'
backupfile=all
keyword=clone

####################### Separator ########################

backupdirectory=`ls -rtlh | grep $keyword | awk '{print $NF}' | tail -1`

sqlfile=`ls $backupdirectory | grep sql`
tarfile=`ls $backupdirectory | grep tar`

rm -rf $directory
mkdir -p $directory &> /dev/null

echo $gituser
git config --global user.email "$gitemail"
git config --global user.name "$gituser"

rm -rf $directory
mkdir -p $directory &> /dev/null
cd $directory
git init
git lfs install
git remote add origin [email protected]:$gituser/$gitrepository
git pull --rebase origin $gitbranch -f
git lfs track *
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch *' --prune-empty --tag-name-filter cat -- --all
git commit -m 'cleapup'
git push -u origin $gitbranch -f
rm -rf .git/refs/original/
git reflog expire --expire=now --all
git gc --prune=now
git gc --aggressive --prune=now

cd ..

rm -rf $directory
mkdir -p $directory &> /dev/null
cd $directory
git init
git lfs install
git remote add origin [email protected]:$gituser/$gitrepository
git pull --rebase origin $gitbranch -f
git lfs track *
git rm *
git commit -m 'cleapup'

cd ../$backupdirectory/
tar -zcvf ../$directory/$backupfile.tar.gz *
cd ../$directory

git lfs track *
git add *
git status
git commit -m 'upload'
git push -u origin $gitbranch -f
cd ..