关于备份的BASH脚本的建议
我有一个安装了plesk的servercentOS,我需要为每天计划一些备份。 Plesk只允许一次计划备份,因此我创建了此解决方案: 每晚在文件夹中创建备份 启动一个脚本,该脚本将从每晚通过cronTAB启动的文件夹中的txt文件标题中读取当天的内容 根据当天的名称将备份文件移动到正确的目录中 更改txt标题中的日期名称 这是我目前未测试的脚本:关于备份的BASH脚本的建议,bash,backup,centos,plesk,Bash,Backup,Centos,Plesk,我有一个安装了plesk的servercentOS,我需要为每天计划一些备份。 Plesk只允许一次计划备份,因此我创建了此解决方案: 每晚在文件夹中创建备份 启动一个脚本,该脚本将从每晚通过cronTAB启动的文件夹中的txt文件标题中读取当天的内容 根据当天的名称将备份文件移动到正确的目录中 更改txt标题中的日期名称 这是我目前未测试的脚本: BACKUPNAME="backupname" cd /backup/daily find . -type f | while IFS= read
BACKUPNAME="backupname"
cd /backup/daily
find . -type f | while IFS= read filename; do
case "${filename,,*}" in
mon.txt) mv $BACKUPNAME ../mon
mv mon.txt tue.txt;;
tue.txt) mv $BACKUPNAME ../tue
mv tue.txt wed.txt;;
wed.txt) mv $BACKUPNAME ../wed
mv wed.txt thu.txt;;
thu.txt) mv $BACKUPNAME ../thu
mv thu.txt fri.txt;;
fri.txt) mv $BACKUPNAME ../fri
mv fri.txt sat.txt;;
sat.txt) mv $BACKUPNAME ../sat
mv sat.txt sun.txt;;
sun.txt) mv $BACKUPNAME ../sun
mv sun.txt mon.txt;;
* : ;; #nothing
esac
done
你认为这是一个好的/稳定的解决方案吗
谢谢 我不知道你说的只有一次计划备份是什么意思,你能解释一下吗 另一方面,为什么不执行rsync并在需要时删除最旧的…我就是这样做的:
#!/bin/bash
date=`/bin/date "+%Y-%m-%dT%H_%M_%S"`
HOME=/root
/bin/echo -e "\n\n# Backup from $date\n" >> /var/log/backup.log
/usr/bin/rsync -axzP \
--delete \
--delete-excluded \
--exclude-from=$HOME/.rsync/exclude \
--link-dest=/COREBACKUP/CurrentBackup \
/ /COREBACKUP/Backups/incomplete_back-$date >> /var/log/backup.log 2>&1 \
&& mv /COREBACKUP/Backups/incomplete_back-$date /COREBACKUP/Backups/back-$date \
&& rm -f /COREBACKUP/CurrentBackup \
&& ln -s /COREBACKUP/Backups/back-$date /COREBACKUP/CurrentBackup \
&& echo `/bin/date "+%Y-%m-%d - %H:%M:%S"` > /var/log/lastbackup.log 2>&1
该脚本每天都通过cron调用,它对$HOME/.rsync/exclude中列出的所有内容进行完整备份
备份存储在/COREBACKUP/backups/backup-$date中,最新备份存储在/COREBACKUP/CurrentBackup中
它工作得很好,尽管它本可以写得更友好一些- 根据日期旋转备份目标是合理的,但问题中显示的名称生成方法取决于每天运行一次的系统。如果系统关闭一天,或者脚本一天运行两次,那么mon.txt、tue.txt。。。序列将不同步。不要使用文件名和笨拙的case语句来获取目标目录的名称,请使用如下代码:
day=$(date +%a)
mv $BACKUPNAME ../${day,,}
如果备份文件所属日期与当前日期不同,请使用以下日期表单之一,分别将日期设置为昨天的名称或上次修改文件的日期的名称
day=$(date +%a --date=yesterday)
day=$(date +%a -r $BACKUPNAME)
只有一个计划备份->我只能计划1个备份,我不能计划7个备份,并为每个备份选择保存文件的文件夹。无论如何,这个脚本将备份整个服务器,但我想保存通过Plesk创建的文件,因此总是通过PleskWhy单独的文件夹如此重要?如果不是这样,我建议您只需设置每日备份,并选择仅存储7个最新备份。谢谢您的建议!我将尝试修复代码并重新发布: