Shell 目录备份和恢复
Shell Directory Backup and Restore
我一直在制作脚本来备份和恢复目录。我想让它变得更好,但我需要一些帮助。
目前我将文件保存为 backup.tgz
我确实在末尾添加了 date
但是当我 运行 恢复功能时我只能让它寻找 backup.tgz
而不是带有日期扩展的备份。有什么办法让它寻找最新的备份吗?或者甚至查找用户输入的备份?
我也曾尝试添加进度条并进行增量备份,但如果有人可以提供帮助,我也没有成功吗?
Tar代码
#!/bin/bash
ROOT="/Users/Rory/Documents"
ROOT_EXCLUDE="--exclude=/dev --exclude=/proc --exclude=/sys --exclude=/temp --exclude=/run --exlucde=/mnt --exlcude=/media --exlude=$
DESTIN="/Users/Rory/BackUps"
BACKUP="backup.tgz"
CREATE="/dev /proc /sys /temp /run /mnt /media "
if [ "$USER" != "root" ]; then
echo "You are not the root user"
echo "To use backup please use: sudo backup"
exit
fi
clear
echo "************************************************"
echo "********* Backup Menu **************************"
echo "************************************************"
OPTIONS="BACKUP RESTORE DESTINATION EXIT"
LIST="1)BACKUP 2)RESTORE 3)DESTINATION 4)EXIT"
select opt in $OPTIONS; do
if [ "$opt" = "EXIT" ]; then
echo "GOODBYE!"
sleep 3
clear
exit
elif [ "$opt" = "BACKUP" ]; then
echo "BACKING UP FILES..."
sleep 2
tar cvpfz $DESTIN/backup.tgz $ROOT $ROOT_EXCLUDE
echo "BACKUP COMPLETE"
sleep 2
clear
echo $LIST
elif [ "$opt" = "RESTORE" ]; then
echo "RESTOTING FILES..."
sleep 2
tar xvpfz $DESTIN/$BACKUP -C /Users/Rory/BackUps
sleep 2
if [[ -e "/proc" ]]; then
echo "$CREATE already exists! "
else
mkdir $CREATE
echo "$CREATE are created! "
fi
echo "RESTORE COMPLETE..."
clear
exit
elif [ "$opt" = "DESTINATION" ]; then
echo "CURRENT DESTINATION: $DESTIN/backup.tgz "
echo "TO CHANGE ENTER THE NEW DESTINATION..."
echo "TO LEAVE IT AS IS JUST PRESS ENTER..."
read NEW_DESTIN
#IF GREATER THEN 0 ASSIGN NEW DESTINATION
if [ ${#NEW_DESTIN} -gt 0 ]; then
DESTIN = "$NEW_DESTIN"
fi
clear
else
clear
echo "BAD INPUT!"
echo "ENTER 1 , 2, 3 or 4.."
echo $LIST
fi
done
好吧,在您发布的代码片段中,您只是在寻找 backup.tgz。
如果您想选择一个特定的,您可以修改您的脚本以接受一个参数并根据您输入的字符串选择一个。或者...如果您想根据 "how old" 进行操作,您可以按日期对备份文件进行排序,并允许用户选择第 0、1、2 等
您可能想要查看的一件事是 rsync。 rsync 只能复制发生变化的文件。
此外,您还可以使用 rsync = )
启用进度条
rsync -avP /source/path/ /dest/path/
查看手册页了解更多详细信息man rsync
要在还原时启用进度条,您可以解压文件并反向使用 rsync,然后您就会有进度更新=)
如果你想让它成为一个自定义的数字进度条,你可能需要做一些比简单地从 rsync 获取输出更复杂的事情。
我一直在制作脚本来备份和恢复目录。我想让它变得更好,但我需要一些帮助。
目前我将文件保存为 backup.tgz
我确实在末尾添加了 date
但是当我 运行 恢复功能时我只能让它寻找 backup.tgz
而不是带有日期扩展的备份。有什么办法让它寻找最新的备份吗?或者甚至查找用户输入的备份?
我也曾尝试添加进度条并进行增量备份,但如果有人可以提供帮助,我也没有成功吗?
Tar代码
#!/bin/bash
ROOT="/Users/Rory/Documents"
ROOT_EXCLUDE="--exclude=/dev --exclude=/proc --exclude=/sys --exclude=/temp --exclude=/run --exlucde=/mnt --exlcude=/media --exlude=$
DESTIN="/Users/Rory/BackUps"
BACKUP="backup.tgz"
CREATE="/dev /proc /sys /temp /run /mnt /media "
if [ "$USER" != "root" ]; then
echo "You are not the root user"
echo "To use backup please use: sudo backup"
exit
fi
clear
echo "************************************************"
echo "********* Backup Menu **************************"
echo "************************************************"
OPTIONS="BACKUP RESTORE DESTINATION EXIT"
LIST="1)BACKUP 2)RESTORE 3)DESTINATION 4)EXIT"
select opt in $OPTIONS; do
if [ "$opt" = "EXIT" ]; then
echo "GOODBYE!"
sleep 3
clear
exit
elif [ "$opt" = "BACKUP" ]; then
echo "BACKING UP FILES..."
sleep 2
tar cvpfz $DESTIN/backup.tgz $ROOT $ROOT_EXCLUDE
echo "BACKUP COMPLETE"
sleep 2
clear
echo $LIST
elif [ "$opt" = "RESTORE" ]; then
echo "RESTOTING FILES..."
sleep 2
tar xvpfz $DESTIN/$BACKUP -C /Users/Rory/BackUps
sleep 2
if [[ -e "/proc" ]]; then
echo "$CREATE already exists! "
else
mkdir $CREATE
echo "$CREATE are created! "
fi
echo "RESTORE COMPLETE..."
clear
exit
elif [ "$opt" = "DESTINATION" ]; then
echo "CURRENT DESTINATION: $DESTIN/backup.tgz "
echo "TO CHANGE ENTER THE NEW DESTINATION..."
echo "TO LEAVE IT AS IS JUST PRESS ENTER..."
read NEW_DESTIN
#IF GREATER THEN 0 ASSIGN NEW DESTINATION
if [ ${#NEW_DESTIN} -gt 0 ]; then
DESTIN = "$NEW_DESTIN"
fi
clear
else
clear
echo "BAD INPUT!"
echo "ENTER 1 , 2, 3 or 4.."
echo $LIST
fi
done
好吧,在您发布的代码片段中,您只是在寻找 backup.tgz。
如果您想选择一个特定的,您可以修改您的脚本以接受一个参数并根据您输入的字符串选择一个。或者...如果您想根据 "how old" 进行操作,您可以按日期对备份文件进行排序,并允许用户选择第 0、1、2 等
您可能想要查看的一件事是 rsync。 rsync 只能复制发生变化的文件。
此外,您还可以使用 rsync = )
启用进度条rsync -avP /source/path/ /dest/path/
查看手册页了解更多详细信息man rsync
要在还原时启用进度条,您可以解压文件并反向使用 rsync,然后您就会有进度更新=)
如果你想让它成为一个自定义的数字进度条,你可能需要做一些比简单地从 rsync 获取输出更复杂的事情。