linuxtool/Config/Automation/backup.sh

112 lines
3.1 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
declare path=$1
declare cron=$2
declare web_path
declare local_pick
declare baidu_pick
declare aliyun_pick
declare cron
if [[ -f "${path}/backup.sh" ]];then
echo "该路径文件已经存在"
fi
read -p "请输入数据目录,默认 /var/www " web_path
if [[ -z ${web_path} ]];then
web_path='/var/www'
fi
read -p "是否备份到本地,默认 关闭 ,输入 y 开启:" local_pick
read -p "是否备份到百度网盘,默认 开启 ,输入 n 关闭:" baidu_pick
read -p "是否备份到阿里云盘 默认 开启 输入 n 关闭" aliyun_pick
if [[ ! $local_pick =~ [Yy] && $baidu_pick =~ [Nn] && $aliyun_pick =~ [Nn] ]];then
echo "没有可备份的选项"
exit
fi
if [[ $local_pick =~ Yy ]];then
declare loacl_path
read -p "请输入本地备份路径,默认 /var/webbackup " loacl_path
if [[ -z $loacl_path ]];then
loacl_path='/var/webbackup'
fi
if [[ -d $loacl_path ]];then
mkdir -p "$loacl_path"
fi
fi
if [[ ! $baidu_pick =~ [Nn] ]];then
sudo apt-get install python3-venv -y
python3 -m venv "${path}/venv"
source "${path}/venv/bin/activate"
pip install bypy
pip install requests
echo "1.将提示中的链接粘贴到浏览器中登录"
echo "2.输入账号密码登录后授权,获取授权码"
echo "3.将授权码粘贴回终端并按回车"
bypy info
fi
if [[ ! $aliyun_pick =~ [Nn] ]];then
cd "$path"
if [[ ! -d aliyunpan ]];then
wget https://github.com/tickstep/aliyunpan/releases/download/v0.3.2/aliyunpan-v0.3.2-linux-amd64.zip -O aliyunpan.zip
unzip aliyunpan.zip
rm aliyunpan.zip
declare tmp_file=$( ls | grep aliyunpan )
mv $tmp_file aliyunpan
cd aliyunpan
./aliyunpan login
else
echo "检测到阿里云盘已经存在,请确认是否登录"
cd aliyunpan
./aliyunpan who
fi
fi
cat > "${path}/backup.sh" << EOF
#!/bin/bash
declare date_time=$(date +"%Y_%m_%d") # 日期格式
declare year=$(date +"%Y") #年份
source "${path}/venv/bin/activate"
for item in "$web_path"/*; do
item_name=$(basename "\$item")
cd "\$item" || exit
tar -czf "\${item_name}_\${date_time}.tar.gz" .
bypy upload "\${item_name}_\${date_time}.tar.gz" "/\${item_name}/"
${path}/aliyunpan/aliyunpan upload "\${item_name}_\${date_time}.tar.gz" "/网站/\${item_name}/\${year}/"
cp "\${item_name}_\${date_time}.tar.gz" "${web_path}/\${year}/"
rm "\${item_name}_\${date_time}.tar.gz"
done
EOF
chmod +x "$path/backup.sh"
declare cron_job="${cron} ${path}/backup.sh"
(crontab -l 2>/dev/null | grep -v "backup.sh") | sudo crontab -
(crontab -l 2>/dev/null; echo "$cron_job") | sudo crontab -
sudo systemctl restart cron 2>> /dev/null || echo "自动任务重启失败"
if [[ $local_pick == [Yn] ]];then
echo "本地备份路径:${web_path}/年份/目录名称"
else
sed -i '/cp.*/d' "${path}/backup.sh"
fi
if [[ $baidu_pick == [Nn] ]];then
sed -i '/bypy.*/d' "${path}/backup.sh"
sed -i '/source.*/d' "${path}/backup.sh"
else
echo "百度网盘备份路径:我的应用数据/bypy/目录名称"
fi
if [[ $baidu_pick == [Nn] ]];then
sed -i '/.*aliyunpan.*/d' "/var/script/backup.sh"
else
echo "阿里云盘备份路径:网盘/目录名称/日期"
fi