#!/bin/bash

function initUI() 
{

while [ true ]
do
more -16 /opt/TAU.txt
echo ""
echo "-------------------------"
echo "---NAS-MANAGEMENT-TOOLS--"
echo "--------Ver:0.2----------"
echo "--------by OT-22---------"

echo "                             = HEXO-TOOL ="
echo " 1. start server "
echo " 2. upload post"
echo " 3. auto update "
echo " 4. auto deploy "
echo "                             = BACKUP-TOOL = "
echo " 5. !!! BACKUP SYSTEM IMG And Resize to custom size Then compress to TGZ  !!! "
echo " 6. !!! BACKUP SYSTEM IMG Without Compress !!! "
echo "                             = SYSTEM-TOOL = "
echo " 7. Resize File System When you Recovery Backup "
echo "                             = DOCKER-TOOL = "
echo " 8. Moving Docker Data to p2; Recovery and Backup Docker Data "
echo " 9. Install Docker cotainer "
echo "  "
echo "  Please set HEXO PATH by ' vi /opt/d.sh ' edit ' hexo = '  "
echo "                             != Backup instructions =!"
echo "!= Backup 1 step will generate a file system copy in ext format =!"
echo "!= Backup 2 step will Check the correctness of the ext file system,Make sure your backup and resize operate is available =!"
echo "!= Backup 3 step will resize the copy and generate a backup image =!"
echo "!= FOR MORE, PLEASE CHECK https://www.in7.xyz "
echo " When you type path in this scrip,Dot not type / at the end of the path character,Such as '/root/data/' is invalid,You should ''/root/data' "
echo "  "
echo -n " Please enter : "
echo "  "
########################
hexo='/sharedfolders/ud/hexo/blog'
########################

read num

if [ -z $num ];then
exit 0
elif [ $num = 1 ];then
startServer
elif [ $num = 2 ];then
uploadpost
elif [ $num = 3 ];then
autoUpdate
startServer
elif [ $num = 4 ];then
autoDeploy
elif [ $num = 5 ];then
backup1
elif [ $num = 6 ];then
backup2
elif [ $num = 7 ];then
resizesystem
elif [ $num = 8 ];then
dockermove
elif [ $num = 9 ];then
dockerinstall
elif [ $num = 11 ];then
liltest
## elif [ $num = # ];then



else
echo "Input error !!!!!!"
fi
done 
}

function read_yes_no () 
{
    printf "[yes|no] "
    read yesno;
    while [[ "${yesno}" != "yes" && "${yesno}" != "no" ]]
    do
        printf "please answer [yes|no] "
        read yesno;
    done

    if [[ "${yesno}" == "no" ]]; then
        return 1;
    else
        return 0;
    fi
}

function startServer() 
{
cd $hexo
hexo s
}


function uploadpost()
{
cd $hexo
read -t 20 -p "input your title " a
hexo new $a
}

function autoUpdate()
{
cd $hexo
hexo clean
hexo g
hexo s
}


function backup1() 
{
read -t 20 -p "Your backup path is " backup0
read -t 20 -p "Your IMG size(Mbyte) is " size
echo " Your Path is $backup0  "
echo " Your Size is $size  "

cd $backup0/
sync
dd if=/dev/mmcblk1p1 of=$backup0/p0.ext bs=1M
e2fsck -fy $backup0/p0.ext
resize2fs -M $backup0/p0.ext
resize2fs $backup0/p0.ext $size
dd if=/dev/mmcblk1 of=$backup0/p.img bs=1M count=16
dd if=$backup0/p0.ext of=$backup0/p.img bs=1M seek=16
mv p.img omv-p2.img
tar zcvf omv-p2.tar.gz omv-p2.img
}

function backup2() 
{
read -t 20 -p "Your backup path is " backup0
echo " Your Path is $backup0  "

cd $backup0/
sync
dd if=/dev/mmcblk1p1 of=$backup0/p0.ext bs=1M
e2fsck -fy $backup0/p0.ext
resize2fs -M $backup0/p0.ext
dd if=/dev/mmcblk1 of=$backup0/p.img bs=1M count=16
dd if=$backup0/p0.ext of=$backup0/p.img bs=1M seek=16

}

function autoDeploy()
{
cd $hexo
hexo clean
hexo g
hexo d

}

function resizesystem()
{
resize2fs /dev/mmcblk1p1

}
function dockermove()
{
echo " Your Docker Path DON'NOT contain ./docker,It should be previous file of docker data.  "
echo " Such as your docker file is '/home/docker',Then you should type '/home'   "
echo " The step is : BACKUP------>RECOVERY------>COPY------>MOVE   "
read -t 20 -p "input your docker path " p2
echo " Your Path is $p2/docker  "
service docker stop

echo " BACKUP "
echo " backup Docker Data? "

if  read_yes_no; then
        cd $p2/docker
        tar -cvpzf $p2/docker.tgz *
    else
        echo " Let's do next "
        echo "  "
        fi

echo " RECOVERY "
echo " If you use docker data backup as a new docker data or not? "
echo " Make sure you put docker.tgz in PATH "
echo " Then you may be need to delete present docker data,YOU NEED DELETE? "

if  read_yes_no; then
    echo " TELL ME YOU ARE LUCID GUY "
    echo " Now I will delete your docker data,continue????????????? "
        if  read_yes_no; then
           rm -rf $p2/docker
        else
           echo " Confirming you dont have docker data in target path "
           echo "  "
        fi
    else
        echo " Confirming you dont have docker data in target path "
        echo "  "
        fi

echo " I will RECOVERY your Docker data from docker.tgz "

if  read_yes_no; then
        mkdir -p $p2/docker
        chmod -R 771 $p2/docker
        tar -xvpzf $p2/docker.tgz -C $p2/docker
    else
        echo " May be you already exsited a docker data "
        echo "  "
        fi

echo " COPY "
echo "If you copy local docker data as a new docker data or not?"

if  read_yes_no; then
        cp -avx /var/lib/docker $p2
    else
        echo " Let's do next "
        echo "  "
        fi


echo " REDIRECT "
echo " Final Step,The default Docker data will set to Your docker data that you want to. "
echo " Confirm execution? "
if  read_yes_no; then
        echo " Activating all containers ?  "
        echo " it need to restart your server, Your server will POWER OFF SOON.  "
        if  read_yes_no; then
           echo "Nextly,Docker data will be moved. "
           echo "REDIRECT---->START CONTAINER---->REBOOT SERVER "
           rm -rf /var/lib/docker
           ln -s $p2/docker /var/lib/docker
           dockerinstall
           reboot
        else
           echo "Nextly,Docker data will be moved. "
           rm -rf /var/lib/docker2
           ln -s $p2/docker /var/lib/docker
           exit 0
        fi
    else
        service docker start
        exit 0
        fi

}

function dockerinstall()
{
echo " Install.............. "
docker run -d --name portainer -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data -v /public:/public --restart=unless-stopped portainer/portainer:linux-arm64
docker run -d --name=calibre-web -e PUID=1000 -e PGID=1000 -e TZ=Asia/Shanghai -p 8083:8083 -v /home/docker/calibreweb:/config -v /sharedfolders/hd/ebook:/books --restart unless-stopped gsp8181/calibre-web
IMAGE_NAME=80x86/filebrowser
WEB_PORT=8866
FB_AUTH_SERVER_ADDR="127.0.0.1"
docker run -d --name fb --restart=unless-stopped -e PUID=$UID -e PGID=$GID -e WEB_PORT=$WEB_PORT -e FB_AUTH_SERVER_ADDR=$FB_AUTH_SERVER_ADDR -p $WEB_PORT:$WEB_PORT -v /home/docker/fb:/config -v /:/myfiles --mount type=tmpfs,destination=/tmp ${IMAGE_NAME}:arm64
docker run -d --name=baidupcs --restart always -v /sharedfolders/ud/DownLoad:/app/Downloads -v /home/docker/BaiduPCS:/app/.config/BaiduPCS-Go -p 5299:5299 80x86/baidupcs:latest
echo " Install Complete "

}


clear
initUI

最后修改日期: 2023年12月24日