function backup_file
{
function single_file
{
cp -p -u -v $FILENAME $LOCATION/`echo $FILENAME`_`date +%F_%H:%M:%S`
}
function remote_single_file
{
scp -p -r $FILENAME $USER@$HOST:$LOCATION/`echo $FILENAME`_`date +%F_%H:%M:%S`
}
function multiple_file
{
for file in $FILENAME;do
cp -p -u -v $file $LOCATION/`echo $file`_`date +%F_%H:%M:%S`
done
}
function remote_mutiple_file
{
for file in $FILENAME;do
scp -p -r $file $USER@$HOST:$LOCATION/`echo $file`_`date +%F_%H:%M:%S`
done
}
function local_catalog
{
cp -p -r -u -v $DIRECTORY $LOCATION/`basename $DIRECTORY`_`date +%F_%H:%M:%S`
}
function remote_catalog
{
scp -p -r $DIRECTORY $USER@$HOST:$LOCATION/`basename $DIRECTORY`_`date +%F_%H:%M:%S`
}
function host_select
{
COLOR="echo -en \E[1;$[RANDOM%7+31]m"
END="\E[0m"
$COLOR"请按1|2选择备份目的地\n"$END"\n1) 当前主机\n2) 远端主机\n"
read -p "请输入你的选择: " number
}
function local_path
{
read -p "请输入备份目的地址: " LOCATION
}
function remote_path
{
read -p "请输入使用远程主机备份的用户: " USER
read -p "请输入主机地址: " HOST
read -p "请输入主机地址中备份目的地址: " LOCATION
}
function single_start_backup
{
COLOR="echo -en \E[1;$[RANDOM%7+31]m"
END="\E[0m"
host_select
if [ $number -eq 1 ];then
local_path
single_file
elif [ $number -eq 2 ];then
remote_path
remote_single_file
else
echo
echo -n "***"
$COLOR"输入错误***"$END
echo "***"
echo
single_start_backup
fi
}
function multiple_start_backup
{
COLOR="echo -en \E[1;$[RANDOM%7+31]m"
END="\E[0m"
host_select
if [ $number -eq 1 ];then
local_path
multiple_file
elif [ $number -eq 2 ];then
remote_path
remote_mutiple_file
else
echo
echo -n "***"
$COLOR"输入错误"$END
echo "***"
echo
multiple_start_backup
fi
}
function catalog_start_backup
{
COLOR="echo -en \E[1;$[RANDOM%7+31]m"
END="\E[0m"
host_select
if [ $number -eq 1 ];then
local_path
local_catalog
elif [ $number -eq 2 ];then
remote_path
remote_catalog
else
echo
echo -n "***"
$COLOR"输入错误"$END
echo "***"
echo
catalog_start_backup
fi
}
function paper
{
COLOR="echo -e \E[1;$[RANDOM%7+31]m"
END="\E[0m"
if [ -f $FILE ];then
FILENAME=`basename $FILE`
PATHS=`dirname $FILE`
cd $PATHS
single_start_backup
echo "备份完成, 程序退出!"
exit
elif [ -d $FILE ];then
cd $FILE
read -p "请输入文件名或文件名后缀: " DOCUMENT
FILENAME=`ls *$DOCUMENT 2>&1`
if [ $? -eq 0 ];then
if [ `echo $FILENAME | tr -s ' ' '\n' | wc -l` -eq 1 ];then
single_start_backup
echo "备份完成, 程序退出!"
exit
elif [ `echo $FILENAME | tr -s ' ' '\n' | wc -l` -gt 1 ];then
multiple_start_backup
echo "备份完成, 程序退出!"
exit
fi
else
$COLOR"错误, 请确认该类型文件是否存在!"$END
exit
fi
else
$COLOR"错误, 请确认该类型文件或目录是否存在!"$END
exit
fi
}
function catalog
{
COLOR="echo -e \E[1;$[RANDOM%7+31]m"
END="\E[0m"
if [ -d $DIRECTORY ];then
catalog_start_backup
echo "备份完成, 程序退出!"
exit
else
$COLOR"错误, 请确认该目录是否存在!"$END
exit
fi
}
echo "=====请按数字1|2选择内容====="
PS3="请输入您的选择: "
select MENU in 文件 目录;do
case $REPLY in
1)
read -p "请输入文件名或目录: " FILE
paper
;;
2)
read -p "请输入目录路径: " DIRECTORY
catalog
;;
esac
done
}
backup_file
文件备份(脚本)
于 2023-07-12 15:27:31 首次发布