bash - 关于备份的 BASH 脚本的建议

标签 bash backup centos plesk

我有一台安装了 plesk 的服务器(centOS),我需要为每天计划一些备份。
Plesk 只允许一个计划备份,所以我创建了这个解决方案:

  • 每天晚上在文件夹内创建备份
  • 启动一个脚本,该脚本将从文件夹内的 txt 文件的标题中读取日期(每晚通过 cronTAB 启动)
  • 将备份文件移动到正确的目录中(根据当天的名称)
  • 更改txt标题中的日期名称

  • 这是我的脚本(目前未测试):
    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/back-$date 中,最新的备份存储在/COREBACKUP/CurrentBackup 中。

    它工作得很好,虽然它可以写得更用户友好;-)

    关于bash - 关于备份的 BASH 脚本的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12728429/

    相关文章:

    bash - 如何在 Ubuntu 上的 bash 脚本中分隔命令行参数?

    backup - mysqldump 与 innodb 热备份

    linux - Linux 上的 Android Studio 文件备份

    backup - 带文件后端的 Hashicorp Vault 备份

    python - 如何使用 qrsh 和 qsub 命令?

    maven - 在 CentOS 虚拟机上运行的 Lumify 演示服务器连接被拒绝

    perl - "cpanm PHP"失败

    linux - 如何在我的 bash shell 中打印变量 'num'

    linux - 我如何使用linux编写基本脚本?

    bash - Sendmail 不适用于 crontab (bash)