linux - rsync-创建每日备份并在 30 天后删除?

标签 linux ssh backup rsync

我正在尝试在 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/

相关文章:

linux - 在 unix 中第一次出现字符串后中断日志文件

python - 使用 paramiko 的无密码 SSH

java - 使用 shell 脚本在远程计算机上执行多个命令

sql-server - 无法对数据库 "ABC"执行差异备份,因为当前数据库备份不存在

c++ - 在 fork 后删除 condition_variable 时提升崩溃

linux - 如何检查 Linux 内核编译器优化级别

bash - 将变量从多个 ssh awk 输出复制到本地文本文件

mysql - 按数据库拆分具有多个数据库的 mysqldump 文件

backup - RabbitMQ 备份

c++ - 使用 C/C++,如何以彩色打印到标准输出,但前提是终端支持它?