【问题标题】:Remote to Local rolling backup script远程到本地滚动备份脚本
【发布时间】:2018-05-31 18:43:53
【问题描述】:

我正在尝试创建一个通过 crontab 运行的 bash 脚本,以执行远程到本地的备份。一切正常,但我的滚动备份部分只保留 4 个备份。

#!/bin/bash
dateForm=`date +%m-%d-%Y`
fileName=[redacted]-"$dateForm"
echo backup started for [redacted] on: $dateForm >> /home/backups/backLog.log
ls -tQ /home/backups/[redacted] | tail -n+5 | xargs -r rm

ssh root@[redacted] "tar jcf - -C /home/[redacted]/[redacted] ." > "/home/backups/[redacted]/$fileName".tar.bz2

if [ ! -f "/home/backups/[redacted]/$fileName.tar.bz2" ]
then
   echo "something went wrong with the backup for $fileName!" >> /home/backups/backLog.log
else
        echo "Backup completed for $fileName" >> /home/backups/backLog.log
    fi

如果在目录中执行 ls 行就可以了,但是因为 crontab 正在执行它,我需要脚本位于它所针对的文件夹之外。我无法使用管道 ls 将 rm 定位到正确的目录

【问题讨论】:

    标签: linux bash debian backup tar


    【解决方案1】:

    在进一步研究了 ls 的手册页并利用 find 获取完整路径后,我想出了一个有趣的解决方案。

    ls -tQ $(find /home/backups/[redacted] -type f -name "*") | tail -n+5 | xargs -r rm
    

    只是为不想创建完全依赖日期格式的滚动备份脚本的人发布答案,因为目标文件夹中总是至少有 4 个备份。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-28
      • 1970-01-01
      • 1970-01-01
      • 2014-02-24
      相关资源
      最近更新 更多