我有一堆文件(总共约 50 MB),我想每 20 分钟备份一次。每个备份都应压缩为单个 (.tar.gz) 文件,并且应删除超过 24 小时的备份。此过程应自动完成。
(我想这个功能是人们广泛追求的)
除了为此编写自己的应用程序外,我还有什么选择?
答案1
有成千上万个选项。既然你提到了 ubuntu,我就使用了https://ubuntu.com/server/docs/backups-shell-scripts 并为您进行了修改,以便删除超过 24 小时的档案。
然后你可以每 20 分钟从 cron 作业运行一次脚本,例如
*/20 * * * * /路径/到/备份/脚本
#!/bin/bash
# What to backup.
backup_files="/home /var/spool/mail /etc /root /boot /opt"
# Where to backup to.
dest="/mnt/backup"
# Create archive filename.
timestamp=$(date +%Y%m%d_%H%M%S)
hostname=$(hostname -s)
archive_file="$hostname-$timestamp.tgz"
# Backup the files using tar.
tar czf $dest/$archive_file $backup_files
# Cleanup backup archives older than 24h
find $dest -name "*.tgz" -type f -mtime 1 -delete
答案2
要每 20 分钟生成一次备份,请使用 cron。您的 crontab 可以是
0,20,40 * * * * cd /PATH; for file in *; do tar --backup=numbered -czf $file.tgz $file; done
该--backup
选项生成版本化备份,如file.tgz.~1~
,file.tgz.~2~
等等。
要删除超过 24 小时的文件,您可以使用另一个 crontab 条目,例如
30 * * * * find /PATH -name '*.tgz*' -mtime +1 -exec rm -f {} +
这将每半小时运行一次,查找名称中带有 tgz 且修改时间超过 24 小时(一天)的文件。