我正在尝试创建一个运行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定位到正确的目录答案 0 :(得分:0)
在研究了ls的手册页并使用find来获取完整路径后,我能够提出一个有趣的解决方案。
Microsoft.VisualBasic.Interaction.IIf(First(Fields![ES_EXCUSETYPE].Value, "DataSet1") = "1", True, False)
只为那些不想创建完全依赖于日期格式的滚动备份脚本的人发布答案,因为在目标文件夹中总是至少有4个备份。