我正在尝试在 rsync 中编写一个脚本,以将每日备份保存在以创建日期命名的新目录中,然后在创建后 30 天将其删除。下面的代码可以工作,但它会很快填满我的内存,因为 -u 选项不会看到目录结构中的多个文件已存在于先前的备份中。有没有更好的方法来保留内存/带宽?我已经提到过 --delete 和 --backup-dir 选项,但我不知道它们如何应用于这个特定场景。
#!/bin/bash
#User who's files are being backed up
BNAME=username
#directory to back up
BDIR=/home/username/BackThisUp
#directory to backup to
BackupDir=/var/home/username_local/BackupTo
#user
RUSER=$USER
#SSH Key
KEY=/var/home/username_local/.ssh
#Backupname
RBackup=`date +%F`
#Backup Server
BServ=backup.server
#Path
LPATH='Data for backup'
#date
DATE=`date +%F`
#make parent directory for backup
mkdir $BackupDir/$BNAME > /dev/null 2>&1
#Transfer new backups
rsync -avpHrz -e "ssh -i $KEY" $BNAME@$BServ:$BDIR $BackupDir/$BNAME/$DATE
find $BackupDir/$BNAME -type d -ctime +30 -exec rm -rf {} \;
最佳答案
我可能会做一些更简单的事情。创建一个仅包含日期的哈希值 一天在其中。例如,8/11/2015 将哈希为 11
然后做类似的事情
# this number changes based on date.
hash=`date +%d`
rm -rf backup_folder/$hash
# then recreate backup_folder/$hash
您将拥有大约 30 天的备份时间。您可能需要压缩这些文件夹,假设磁盘上可用文件夹的大小是该文件夹大小的 30 倍。
关于linux - rsync-创建每日备份并在 30 天后删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31944250/